diff --git a/app/Livewire/Forms/Studio/Master/FormulaForm.php b/app/Livewire/Forms/Studio/Master/FormulaForm.php index de1f45b..1fa2344 100644 --- a/app/Livewire/Forms/Studio/Master/FormulaForm.php +++ b/app/Livewire/Forms/Studio/Master/FormulaForm.php @@ -21,7 +21,7 @@ public function rules(): array return [ 'quality' => ['required', 'string', 'max:20'], 'size' => ['required', new UnsignedInteger], - 'volume' => ['required', new UnsignedInteger], + 'volume' => ['required', 'lte:size', new UnsignedInteger], ]; } diff --git a/app/Livewire/Studio/Master/Formula.php b/app/Livewire/Studio/Master/Formula.php index bc5dd15..4acc8e2 100644 --- a/app/Livewire/Studio/Master/Formula.php +++ b/app/Livewire/Studio/Master/Formula.php @@ -34,15 +34,19 @@ class Formula extends Component public function mount() { - $this->formulas = FormulaModel::orderBy('size')->get() + $this->formulas = FormulaModel::orderBy('size') + ->get() ->groupBy('size') ->map(function ($items) { - return $items->map(fn ($item) => [ - 'hash' => $item->hash, - 'quality' => $item->quality, - 'volume' => $item->volume, - ]); - })->toArray(); + return $items + ->map(fn ($item) => [ + 'hash' => $item->hash, + 'quality' => $item->quality, + 'volume' => $item->volume, + ]) + ->sortBy('volume'); + }) + ->toArray(); $this->sizes = Bottle::distinct()->orderBy('size')->pluck('size')->toArray(); } @@ -63,6 +67,12 @@ public function openModal(string $method, string $modalTitle, ?string $id = null public function create() { + if (FormulaModel::where('quality', $this->form->quality)->where('size', $this->form->size)->exists()) { + $this->toast('Rumus dengan kualitas dan ukuran tersebut sudah ada.', 'Info', 'warning'); + + return; + } + $this->canOrAbort('create formula'); $formula = $this->form->store(); @@ -83,6 +93,17 @@ public function create() public function update() { + $exists = FormulaModel::where('quality', $this->form->quality) + ->where('size', $this->form->size) + ->where('id', '!=', $this->form->formula->id) + ->exists(); + + if ($exists) { + $this->toast('Rumus dengan kualitas dan ukuran tersebut sudah ada.', 'Info', 'warning'); + + return; + } + $this->canOrAbort('update formula'); $formula = $this->form->update(); diff --git a/database/seeders/RolePermissionSeeder.php b/database/seeders/RolePermissionSeeder.php index 0cd8605..b19db31 100644 --- a/database/seeders/RolePermissionSeeder.php +++ b/database/seeders/RolePermissionSeeder.php @@ -287,7 +287,6 @@ public function run(): void 'delete user', 'reset password user', - 'view formula', 'create formula', 'update formula', 'delete formula', diff --git a/resources/views/livewire/studio/master/formulas.blade.php b/resources/views/livewire/studio/master/formulas.blade.php index 412cafd..b18f163 100644 --- a/resources/views/livewire/studio/master/formulas.blade.php +++ b/resources/views/livewire/studio/master/formulas.blade.php @@ -16,7 +16,7 @@
@if (!empty($formulas)) -
+
@foreach ($formulas as $key => $formula)