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') +
+
+
+ Kembali +
+
+
+
+
+ @csrf +
+ + + @error('name') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('price') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('description') +
+ {{ $message }} +
+ @enderror +
+
+ +
+
+
+
+
+@endsection +@section('afterScripts') + + +@endsection diff --git a/resources/views/pages/admin/master/service/edit.blade.php b/resources/views/pages/admin/master/service/edit.blade.php new file mode 100644 index 0000000..3888d7a --- /dev/null +++ b/resources/views/pages/admin/master/service/edit.blade.php @@ -0,0 +1,59 @@ +@extends('layouts.admin') +@section('styles') +@endsection +@section('app') +
+
+
+ Kembali +
+
+
+
+
+ @csrf + @method('put') +
+ + + @error('name') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('price') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('description') +
+ {{ $message }} +
+ @enderror +
+
+ +
+
+
+
+
+@endsection +@section('afterScripts') + + +@endsection diff --git a/resources/views/pages/admin/master/service/index.blade.php b/resources/views/pages/admin/master/service/index.blade.php new file mode 100644 index 0000000..53e63ac --- /dev/null +++ b/resources/views/pages/admin/master/service/index.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.admin') +@section('styles') + +@endsection +@section('app') +
+
+
+
+
+ Tambah +
+
+
+
+
+ + + + + + + + + + + + + @foreach ($services as $service) + + + + + + + + + @endforeach + +
NoNamaHargaDeskripsiTanggalAksi
{{ $loop->iteration }}{{ $service->name }}{{ formatToRupiah($service->price) }}{{ $service->description }}{{ formatDateIndo($service->created_at) }} +
    +
  • + + + +
  • +
  • +
    + @csrf + @method('delete') + + + +
    +
  • +
+
+
+
+
+
+
+
+@endsection +@section('afterScripts') + + + + +@endsection diff --git a/routes/web.php b/routes/web.php index d26990b..4039c35 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Http\Controllers\Admin\Dashboard\OverviewController; use App\Http\Controllers\Admin\Master\BarbershopController; use App\Http\Controllers\Admin\Master\CustomerController; +use App\Http\Controllers\Admin\Master\ServiceController; use App\Http\Controllers\Admin\Master\UserController; use Illuminate\Support\Facades\Route; @@ -48,5 +49,14 @@ Route::put('update/{customer}', [CustomerController::class, 'update'])->name('master.customer.update'); Route::delete('delete/{customer}', [CustomerController::class, 'delete'])->name('master.customer.delete'); }); + + Route::get('/services', [ServiceController::class, 'index'])->name('master.services'); + Route::prefix('service')->group(function () { + Route::get('create', [ServiceController::class, 'create'])->name('master.service.create'); + Route::post('store', [ServiceController::class, 'store'])->name('master.service.store'); + Route::get('edit/{service}', [ServiceController::class, 'edit'])->name('master.service.edit'); + Route::put('update/{service}', [ServiceController::class, 'update'])->name('master.service.update'); + Route::delete('delete/{service}', [ServiceController::class, 'delete'])->name('master.service.delete'); + }); }); });