From c8344f27cba485c56fc6101240bf1af28624f585 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 13 Jul 2026 12:47:35 +0700 Subject: [PATCH] feat: enhance product and raw material request validation by adding imagesRequired parameter, improving image handling based on request method --- app/Http/Requests/Admin/Master/ProductRequest.php | 5 ++++- app/Http/Requests/Admin/Master/RawMaterialRequest.php | 5 ++++- app/Http/Requests/Concerns/HasProductVariantRules.php | 4 ++-- app/Http/Requests/Concerns/HasRawMaterialPriceRules.php | 4 ++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Http/Requests/Admin/Master/ProductRequest.php b/app/Http/Requests/Admin/Master/ProductRequest.php index 6f49b87..2b7d507 100644 --- a/app/Http/Requests/Admin/Master/ProductRequest.php +++ b/app/Http/Requests/Admin/Master/ProductRequest.php @@ -32,7 +32,10 @@ public function rules(): array 'category_ids' => ['required', 'array', 'min:1'], 'category_ids.*' => ['integer', Rule::exists('categories', 'id')->whereNull('deleted_at')], - ...$this->productVariantRules(productId: $this->route('product')?->id), + ...$this->productVariantRules( + productId: $this->route('product')?->id, + imagesRequired: $this->isMethod('POST'), + ), ]; } diff --git a/app/Http/Requests/Admin/Master/RawMaterialRequest.php b/app/Http/Requests/Admin/Master/RawMaterialRequest.php index b4bf052..5b71926 100644 --- a/app/Http/Requests/Admin/Master/RawMaterialRequest.php +++ b/app/Http/Requests/Admin/Master/RawMaterialRequest.php @@ -30,7 +30,10 @@ public function rules(): array 'name' => ['required', 'string', 'max:200'], 'unit' => ['required', Rule::enum(RawMaterialUnit::class)], - ...$this->rawMaterialPriceRules(rawMaterialId: $this->route('rawMaterial')?->id), + ...$this->rawMaterialPriceRules( + rawMaterialId: $this->route('rawMaterial')?->id, + imagesRequired: $this->isMethod('POST'), + ), ]; } diff --git a/app/Http/Requests/Concerns/HasProductVariantRules.php b/app/Http/Requests/Concerns/HasProductVariantRules.php index 93bacd0..0c69933 100644 --- a/app/Http/Requests/Concerns/HasProductVariantRules.php +++ b/app/Http/Requests/Concerns/HasProductVariantRules.php @@ -16,7 +16,7 @@ trait HasProductVariantRules /** * @return array */ - protected function productVariantRules(string $variantsKey = 'variants', ?int $productId = null): array + protected function productVariantRules(string $variantsKey = 'variants', ?int $productId = null, bool $imagesRequired = true): array { $isAdminBahanBaku = $this->user()?->hasRole(Role::ADMIN_BAHAN_BAKU->value) ?? false; @@ -25,7 +25,7 @@ protected function productVariantRules(string $variantsKey = 'variants', ?int $p "{$variantsKey}.*.name" => ['required', 'string', 'max:200'], "{$variantsKey}.*.stock" => ['required', 'integer', 'min:0'], "{$variantsKey}.*.retail_stock" => ['required', 'integer', 'min:0'], - ...$this->variantImageRules($variantsKey, required: true), + ...$this->variantImageRules($variantsKey, required: $imagesRequired), ]; if ($productId) { diff --git a/app/Http/Requests/Concerns/HasRawMaterialPriceRules.php b/app/Http/Requests/Concerns/HasRawMaterialPriceRules.php index f116bf2..cb074b0 100644 --- a/app/Http/Requests/Concerns/HasRawMaterialPriceRules.php +++ b/app/Http/Requests/Concerns/HasRawMaterialPriceRules.php @@ -11,14 +11,14 @@ trait HasRawMaterialPriceRules /** * @return array */ - protected function rawMaterialPriceRules(string $pricesKey = 'prices', ?int $rawMaterialId = null): array + protected function rawMaterialPriceRules(string $pricesKey = 'prices', ?int $rawMaterialId = null, bool $imagesRequired = true): array { $rules = [ "{$pricesKey}" => ['required', 'array', 'min:1'], "{$pricesKey}.*.variant" => ['required', 'string', 'max:200'], "{$pricesKey}.*.price" => ['required', 'integer', 'gt:0'], "{$pricesKey}.*.stock" => ['required', 'numeric', 'decimal:0,4', 'min:0'], - ...$this->variantImageRules($pricesKey, required: true), + ...$this->variantImageRules($pricesKey, required: $imagesRequired), ]; if ($rawMaterialId) {