isMethod('POST') ? Permission::CUTTINGS_CREATE : Permission::CUTTINGS_UPDATE; return $this->user()?->can($permission->value) ?? false; } /** * @return array */ public function rules(): array { return [ 'description' => ['nullable', 'string', 'max:100'], 'materials' => ['required', 'array', 'min:1'], 'materials.*.raw_material_price_id' => [ 'required', 'integer', 'distinct', Rule::exists('raw_material_prices', 'id')->whereNull('deleted_at'), ], 'materials.*.material_usage' => ['required', 'numeric', 'decimal:0,4', 'gt:0'], 'materials.*.remaining_material' => ['required', 'numeric', 'decimal:0,4', 'gte:0'], 'results' => ['required', 'array', 'min:1'], 'results.*.product_variant_id' => [ 'required', 'integer', 'distinct', Rule::exists('product_variants', 'id')->whereNull('deleted_at'), ], 'results.*.cutting_result' => ['required', 'integer', 'min:1'], 'results.*.warehouse_stock' => ['required', 'integer', 'min:0'], 'results.*.cutting_reject' => ['required', 'integer', 'min:0'], ]; } /** * @return array */ public function attributes(): array { return [ 'description' => 'keterangan', 'materials' => 'bahan baku', 'materials.*.raw_material_price_id' => 'bahan baku', 'materials.*.material_usage' => 'pemakaian', 'materials.*.remaining_material' => 'sisa', 'results' => 'hasil produk', 'results.*.product_variant_id' => 'varian produk', 'results.*.cutting_result' => 'hasil', 'results.*.warehouse_stock' => 'gudang', 'results.*.cutting_reject' => 'reject', ]; } }