store/app/Http/Requests/Concerns/ValidatesMediaUploads.php
Yoga Pangestu d02af40836
Some checks failed
linter / quality (push) Waiting to run
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
feat: implement presigned upload functionality for S3 in PresignedUploadController; update media upload handling across various components to support S3 keys and improve user experience
2026-07-02 14:28:51 +07:00

59 lines
1.7 KiB
PHP

<?php
namespace App\Http\Requests\Concerns;
trait ValidatesMediaUploads
{
/**
* @return array<string, mixed>
*/
protected function photoRules(string $prefix = 'photos', int $max = 1): array
{
return [
's3_keys' => ['nullable', 'array', "max:{$max}"],
's3_keys.*' => ['required', 'string'],
'remove_media_ids' => ['nullable', 'array'],
'remove_media_ids.*' => ['integer'],
];
}
/**
* @return array<string, mixed>
*/
protected function variantImageRules(string $variantsKey = 'variants', int $max = 5): array
{
return [
"{$variantsKey}.*.s3_keys" => ['nullable', 'array', "max:{$max}"],
"{$variantsKey}.*.s3_keys.*" => ['required', 'string'],
"{$variantsKey}.*.remove_media_ids" => ['nullable', 'array'],
"{$variantsKey}.*.remove_media_ids.*" => ['integer'],
];
}
/**
* @return array<string, string>
*/
protected function photoUploadAttributes(string $label): array
{
return [
's3_keys' => $label,
's3_keys.*' => $label,
'remove_media_ids' => 'media yang dihapus',
'remove_media_ids.*' => 'media yang dihapus',
];
}
/**
* @return array<string, string>
*/
protected function variantImageAttributes(string $variantsKey, string $label): array
{
return [
"{$variantsKey}.*.s3_keys" => $label,
"{$variantsKey}.*.s3_keys.*" => $label,
"{$variantsKey}.*.remove_media_ids" => 'media yang dihapus',
"{$variantsKey}.*.remove_media_ids.*" => 'media yang dihapus',
];
}
}