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 -
+
    @@ -147,6 +147,58 @@
@enderror
+
+ +
+
    +
  • + + +
  • +
  • + + +
  • +
+
+ @error('showing_barber_name') +
+ {{ $message }} +
+ @enderror +
+
+ +
+
    +
  • + + +
  • +
  • + + +
  • +
+
+ @error('showing_cashier_name') +
+ {{ $message }} +
+ @enderror +
diff --git a/resources/views/pages/admin/manage/transaction/index.blade.php b/resources/views/pages/admin/manage/transaction/index.blade.php index 7c399c8..592ef9e 100644 --- a/resources/views/pages/admin/manage/transaction/index.blade.php +++ b/resources/views/pages/admin/manage/transaction/index.blade.php @@ -20,6 +20,7 @@ No + Kasir Barber Pelanggan Layanan @@ -38,6 +39,7 @@ @foreach ($transactions as $transaction) {{ $loop->iteration }} + {{ $transaction->cashier->biography->full_name ?? '-deleted-' }} {{ $transaction->user->biography->full_name ?? '-deleted-' }} {{ $transaction->customer->name }} {{ $transaction->service->name }} @@ -74,9 +76,12 @@
+ + @endsection @section('afterScripts') @@ -121,4 +200,5 @@ + @endsection diff --git a/resources/views/pages/admin/manage/transaction/print.blade.php b/resources/views/pages/admin/manage/transaction/print.blade.php index ccb69fd..01f52df 100644 --- a/resources/views/pages/admin/manage/transaction/print.blade.php +++ b/resources/views/pages/admin/manage/transaction/print.blade.php @@ -152,16 +152,28 @@
- - + + - + + @if ($showingCashierName === '1') + + + + + @endif + @if ($showingBarberName === '1') + + + + + @endif - +
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 ?? '-' }}
@@ -197,11 +209,13 @@ diff --git a/routes/web.php b/routes/web.php index 9ab9aab..31f9555 100644 --- a/routes/web.php +++ b/routes/web.php @@ -145,7 +145,7 @@ Route::get('edit/{transaction}', [TransactionController::class, 'edit'])->name('manage.transaction.edit'); Route::put('update/{transaction}', [TransactionController::class, 'update'])->name('manage.transaction.update'); Route::get('get-price/{serviceId}', [TransactionController::class, 'getPrice'])->name('manage.transaction.getPrice'); - Route::get('print/{transaction}', [TransactionController::class, 'print'])->name('manage.transaction.print'); + Route::post('print/{transaction}', [TransactionController::class, 'print'])->name('manage.transaction.print'); }); Route::delete('delete/{transaction}', [TransactionController::class, 'delete'])->name('manage.transaction.delete')->middleware('check_role:1'); });