diff --git a/app/Http/Controllers/Admin/Manage/TransactionController.php b/app/Http/Controllers/Admin/Manage/TransactionController.php index 04db499..e2f6120 100644 --- a/app/Http/Controllers/Admin/Manage/TransactionController.php +++ b/app/Http/Controllers/Admin/Manage/TransactionController.php @@ -24,7 +24,7 @@ public function index(): View { return view('pages.admin.manage.transaction.index', [ 'pageTitle' => 'Transaksi', - 'transactions' => Transaction::with(['user', 'user.biography']) + 'transactions' => Transaction::with(['user', 'user.biography', 'cashier', 'cashier.biography', 'customer', 'service', 'barbershop']) ->barbershop() ->when(auth()->user()->role_id === 5, function ($query) { return $query->where('user_id', auth()->id()); @@ -63,9 +63,9 @@ public function store(TransactionRequest $request): View 'name' => $validatedData['customer'], ]); } - $newTransaction = Transaction::create(array_merge($validatedData, [ 'user_id' => $validatedData['barber'], + 'cashier_id' => $userId, 'barbershop_id' => $barbershopId, 'service_id' => $validatedData['service'], 'customer_id' => $customer ? $customer->id : $validatedData['customer'], @@ -77,18 +77,20 @@ public function store(TransactionRequest $request): View }); if (! $newTransaction) { - notify()->error('Transaction could not be created', 'Error'); + notify()->error('Transaksi tidak dapat dibuat, silakan coba lagi', 'Kesalahan'); - return redirect()->back(); + return redirect()->back()->withInput(); } - $transactionData = $newTransaction->load(['user', 'user.biography', 'customer', 'service', 'barbershop']); + $transactionData = $newTransaction->load(['user', 'user.biography', 'cashier', 'cashier.biography', 'customer', 'service', 'barbershop']); notify()->success('Data berhasil ditambahkan', 'Berhasil'); return view('pages.admin.manage.transaction.print', [ 'transaction' => $transactionData, 'url' => route('manage.transactions'), + 'showingBarberName' => $validatedData['showing_barber_name'], + 'showingCashierName' => $validatedData['showing_cashier_name'], ]); } @@ -153,11 +155,15 @@ public function getPrice(string $serviceId): JsonResponse ], 200); } - public function print(Transaction $transaction): View + public function print(Transaction $transaction, TransactionRequest $request): View { + $validatedData = $request->validated(); + return view('pages.admin.manage.transaction.print', [ 'transaction' => $transaction->load(['user', 'user.biography', 'customer', 'service', 'barbershop']), 'url' => route('manage.transactions'), + 'showingBarberName' => $validatedData['showing_barber_name'], + 'showingCashierName' => $validatedData['showing_cashier_name'], ]); } } diff --git a/app/Http/Requests/Admin/Manage/TransactionRequest.php b/app/Http/Requests/Admin/Manage/TransactionRequest.php index 8a67e20..54ef9de 100644 --- a/app/Http/Requests/Admin/Manage/TransactionRequest.php +++ b/app/Http/Requests/Admin/Manage/TransactionRequest.php @@ -28,16 +28,25 @@ protected function prepareForValidation(): void public function rules(): array { - return [ - 'barber' => ['required', Rule::exists('users', 'id')], - 'service' => ['required', Rule::exists('services', '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'], - 'image' => ['nullable', 'image', 'mimes:jpeg,png,jpg,gif,svg', 'max:2048'], - 'payment_method' => ['required', Rule::in(['1', '2', '3'])], - ]; + if (! $this->route()->named('manage.transaction.print')) { + $rules = [ + 'barber' => ['required', Rule::exists('users', 'id')], + 'service' => ['required', Rule::exists('services', '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'], + 'image' => ['nullable', 'image', 'mimes:jpeg,png,jpg,gif,svg', 'max:2048'], + 'payment_method' => ['required', Rule::in(['1', '2', '3'])], + ]; + } + + if ($this->isMethod('post') || $this->route()->named('manage.transaction.print')) { + $rules['showing_barber_name'] = ['required', Rule::in(['1', '2'])]; + $rules['showing_cashier_name'] = ['required', Rule::in(['1', '2'])]; + } + + return $rules; } protected function failedValidation(Validator $validator): void diff --git a/public/assets/admin/js/custom/transaction.js b/public/assets/admin/js/custom/transaction.js index d36b405..558cc1c 100644 --- a/public/assets/admin/js/custom/transaction.js +++ b/public/assets/admin/js/custom/transaction.js @@ -34,4 +34,17 @@ $(document).ready(function () { $('#discount').on('input', function () { calculateTotal(); }); + + $("#createModal").on("show.bs.modal", function (event) { + const button = $(event.relatedTarget); + const data = { + modalTitle: button.data("modal-title"), + url: button.data("url"), + method: button.data("method"), + }; + + $(".modal-title").text(data.modalTitle); + $("#form").attr('action', data.url); + $("#form-method").val(data.method); + }); }); diff --git a/resources/views/pages/admin/manage/transaction/create.blade.php b/resources/views/pages/admin/manage/transaction/create.blade.php index 1d5843b..07b59a1 100644 --- a/resources/views/pages/admin/manage/transaction/create.blade.php +++ b/resources/views/pages/admin/manage/transaction/create.blade.php @@ -114,7 +114,7 @@ @enderror -
| Tanggal: | -{{ date('Y-m-d H:i') }} | +Tanggal | +: {{ date('Y-m-d H:i') }} |
|---|---|---|---|
| Invoice: | -#INV{{ $transaction->id }} | +: #INV{{ $transaction->id }} | |
| Kasir: | +: {{ $transaction->cashier->biography->full_name ?? '-' }} | +||
| Barber: | +: {{ $transaction->user->biography->full_name ?? '-' }} | +||
| Pelanggan: | -{{ $transaction->customer->name ?? '-' }} | +: {{ $transaction->customer->name ?? '-' }} |