diff --git a/app/Http/Controllers/Admin/Manage/TransactionController.php b/app/Http/Controllers/Admin/Manage/TransactionController.php index c3d9fd7..5744ce7 100644 --- a/app/Http/Controllers/Admin/Manage/TransactionController.php +++ b/app/Http/Controllers/Admin/Manage/TransactionController.php @@ -7,6 +7,7 @@ use App\Models\Customer; use App\Models\Service; use App\Models\Transaction; +use App\Traits\DeleteAttachment; use App\Traits\UploadAttachment; use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; @@ -16,7 +17,7 @@ class TransactionController extends Controller { - use UploadAttachment; + use UploadAttachment, DeleteAttachment; public function index(): View { @@ -38,12 +39,23 @@ public function create(): View public function store(TransactionRequest $request): RedirectResponse { $validatedData = $request->validated(); - DB::transaction(function () use ($validatedData) { + $findCustomer = Customer::find($validatedData['customer']); + DB::transaction(function () use ($validatedData, $findCustomer) { + $customer = null; + $userId = Auth::id(); + $barbershopId = Auth::user()->barbershop_id; + if (! $findCustomer) { + $customer = Customer::create([ + 'user_id' => $userId, + 'barbershop_id' => $barbershopId, + 'name' => $validatedData['customer'], + ]); + } $newTransaction = Transaction::create(array_merge($validatedData, [ - 'user_id' => Auth::id(), - 'barbershop_id' => Auth::user()->barbershop_id, + 'user_id' => $userId, + 'barbershop_id' => $barbershopId, 'service_id' => $validatedData['service'], - 'customer_id' => $validatedData['customer'], + 'customer_id' => $customer ? $customer->id : $validatedData['customer'], ])); $this->uploadAttachment($validatedData['image'], 'transactions', Transaction::class, $newTransaction->id); }); @@ -57,6 +69,8 @@ public function edit(Transaction $transaction): View { return view('pages.admin.manage.transaction.edit', [ 'pageTitle' => 'Edit Transaksi', + 'services' => Service::latest()->get(), + 'customers' => Customer::latest()->get(), 'transaction' => $transaction, ]); } @@ -65,7 +79,15 @@ public function update(Transaction $transaction, TransactionRequest $request): R { $validatedData = $request->validated(); - $transaction->update($validatedData); + DB::transaction(function () use ($validatedData, $transaction) { + $transaction->update(array_merge($validatedData, [ + 'service_id' => $validatedData['service'], + 'customer_id' => $validatedData['customer'], + ])); + if (isset($validatedData['image'])) { + $this->uploadAttachment($validatedData['image'], 'transactions', Transaction::class, $transaction->id); + } + }); notify()->success('Data berhasil diubah', 'Berhasil'); @@ -74,7 +96,10 @@ public function update(Transaction $transaction, TransactionRequest $request): R public function delete(Transaction $transaction): RedirectResponse { - $transaction->delete(); + DB::transaction(function () use ($transaction) { + $this->deleteAttachment('transactions', $transaction); + $transaction->delete(); + }); notify()->success('Data berhasil dihapus', 'Berhasil'); @@ -95,7 +120,7 @@ public function getPrice(string $serviceId): JsonResponse return response()->json([ 'status' => true, 'message' => 'Data retrieved successfully', - 'data' => decimalToInteger($service->price), + 'data' => formatToRupiah($service->price), ], 200); } } diff --git a/app/Http/Requests/Admin/Manage/TransactionRequest.php b/app/Http/Requests/Admin/Manage/TransactionRequest.php index 27a0f76..d8fd074 100644 --- a/app/Http/Requests/Admin/Manage/TransactionRequest.php +++ b/app/Http/Requests/Admin/Manage/TransactionRequest.php @@ -32,7 +32,7 @@ public function rules(): array return [ 'service' => ['required', Rule::exists('services', 'id')], - 'customer' => ['required', Rule::exists('customers', 'id')], + 'customer' => ['required'], 'price' => ['required', 'numeric', 'min:0', 'max:999999.99'], 'discount' => ['required', 'numeric', 'min:0', 'max:999999.99'], 'total' => ['required', 'numeric', 'min:0', 'max:999999.99'], diff --git a/public/assets/admin/js/select2/select2-config.js b/public/assets/admin/js/select2/select2-config.js index af7dabd..aedc5c0 100644 --- a/public/assets/admin/js/select2/select2-config.js +++ b/public/assets/admin/js/select2/select2-config.js @@ -2,5 +2,6 @@ $(document).ready(function () { $('.select2').select2({ allowClear: true, placeholder: '-- Pilih --', + tags: true }); }) diff --git a/resources/views/pages/admin/manage/transaction/edit.blade.php b/resources/views/pages/admin/manage/transaction/edit.blade.php index 3888d7a..6b9b74e 100644 --- a/resources/views/pages/admin/manage/transaction/edit.blade.php +++ b/resources/views/pages/admin/manage/transaction/edit.blade.php @@ -1,24 +1,52 @@ @extends('layouts.admin') @section('styles') + @endsection @section('app')