diff --git a/app/Http/Controllers/Admin/Master/ServiceController.php b/app/Http/Controllers/Admin/Master/ServiceController.php new file mode 100644 index 0000000..2f18159 --- /dev/null +++ b/app/Http/Controllers/Admin/Master/ServiceController.php @@ -0,0 +1,69 @@ + 'Layanan', + 'services' => Service::latest()->get(), + ]); + } + + public function create(): View + { + return view('pages.admin.master.service.create', [ + 'pageTitle' => 'Tambah Layanan', + ]); + } + + public function store(ServiceRequest $request): RedirectResponse + { + $validatedData = $request->validated(); + Service::create(array_merge($validatedData, [ + 'user_id' => Auth::id(), + 'barbershop_id' => Auth::user()->barbershop_id, + ])); + + notify()->success('Data berhasil ditambahkan', 'Berhasil'); + + return redirect('dashboard/master/services'); + } + + public function edit(Service $service): View + { + return view('pages.admin.master.service.edit', [ + 'pageTitle' => 'Edit Layanan', + 'service' => $service, + ]); + } + + public function update(Service $service, ServiceRequest $request): RedirectResponse + { + $validatedData = $request->validated(); + + $service->update($validatedData); + + notify()->success('Data berhasil diubah', 'Berhasil'); + + return redirect('dashboard/master/services'); + } + + public function delete(Service $service): RedirectResponse + { + $service->delete(); + + notify()->success('Data berhasil dihapus', 'Berhasil'); + + return back(); + } +} diff --git a/app/Http/Requests/Admin/Master/ServiceRequest.php b/app/Http/Requests/Admin/Master/ServiceRequest.php new file mode 100644 index 0000000..2029e83 --- /dev/null +++ b/app/Http/Requests/Admin/Master/ServiceRequest.php @@ -0,0 +1,39 @@ +merge([ + 'price' => removeRupiahFormatting($this->price), + ]); + } + + public function rules(): array + { + return [ + 'name' => ['required', 'string', 'max:100'], + 'price' => ['required', 'numeric', 'min:0'], + 'description' => ['required', 'string', 'max:65535'], + ]; + } + + protected function failedValidation(Validator $validator): void + { + $this->handleValidationFailure($validator); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 12c9ffd..42ba323 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -4,6 +4,7 @@ use App\Models\Barbershop; use App\Models\Customer; +use App\Models\Service; use App\Models\User; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; @@ -26,5 +27,6 @@ public function boot(): void Route::bind('barbershop', fn (string $barbershop) => Barbershop::findOrFail(decryptId($barbershop))); Route::bind('user', fn (string $user) => User::findOrFail(decryptId($user))); Route::bind('customer', fn (string $customer) => Customer::findOrFail(decryptId($customer))); + Route::bind('service', fn (string $service) => Service::findOrFail(decryptId($service))); } } diff --git a/resources/views/pages/admin/master/service/create.blade.php b/resources/views/pages/admin/master/service/create.blade.php new file mode 100644 index 0000000..f840729 --- /dev/null +++ b/resources/views/pages/admin/master/service/create.blade.php @@ -0,0 +1,57 @@ +@extends('layouts.admin') +@section('styles') +@endsection +@section('app') +
| No | +Nama | +Harga | +Deskripsi | +Tanggal | +Aksi | +
|---|---|---|---|---|---|
| {{ $loop->iteration }} | +{{ $service->name }} | +{{ formatToRupiah($service->price) }} | +{{ $service->description }} | +{{ formatDateIndo($service->created_at) }} | +
+
|
+