From 8f6404b36ba6e4479dd6cfab254fa0158f218dc3 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 26 Nov 2024 23:55:11 +0700 Subject: [PATCH] fix(transaction): updated TransactionController, TransactionRequest, and transaction edit/view pages to include customer and service selects, added payment method radio buttons, and modified image upload and deletion logic --- .../Admin/Manage/TransactionController.php | 41 +++++-- .../Admin/Manage/TransactionRequest.php | 2 +- .../assets/admin/js/select2/select2-config.js | 1 + .../admin/manage/transaction/edit.blade.php | 113 ++++++++++++++++-- .../admin/manage/transaction/index.blade.php | 12 ++ 5 files changed, 148 insertions(+), 21 deletions(-) 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')
-
+ @csrf @method('put')
- - - @error('name') + + + @error('customer') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('service')
{{ $message }}
@@ -28,18 +56,76 @@ + value="{{ old('price', formatToRupiah($transaction->price)) }}" inputmode="numeric" readonly> @error('price')
{{ $message }}
@enderror
+
+ + + @error('discount') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('total') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('image') +
+ {{ $message }} +
+ @enderror +
- - - @error('description') + +
+
    +
  • + payment_method == '1')> + +
  • +
  • + payment_method == '2')> + +
  • +
  • + payment_method == '3')> + +
  • +
+
+ @error('payment_method')
{{ $message }}
@@ -56,4 +142,7 @@ @section('afterScripts') + + + @endsection diff --git a/resources/views/pages/admin/manage/transaction/index.blade.php b/resources/views/pages/admin/manage/transaction/index.blade.php index 0356e88..2f21279 100644 --- a/resources/views/pages/admin/manage/transaction/index.blade.php +++ b/resources/views/pages/admin/manage/transaction/index.blade.php @@ -23,6 +23,7 @@ Harga Diskon Total + Metode Pembayaran Gambar Tanggal Aksi @@ -37,6 +38,17 @@ {{ formatToRupiah($transaction->price) }} {{ formatToRupiah($transaction->discount) }} {{ formatToRupiah($transaction->total) }} + + @if ($transaction->payment_method === '1') + Tunai + @elseif($transaction->payment_method === '2') + Qris + @elseif($transaction->payment_method === '3') + Lainnya + @else + Tidak Diketahui + @endif + @if ($transaction->attachment && $transaction->attachment->formatted_attachment)