From 06eaea8b44b241b264e3d89bbb3cabfd8b11b5f0 Mon Sep 17 00:00:00 2001 From: Femi Novia Lina <77434812+FemiNoviaLina@users.noreply.github.com> Date: Tue, 24 May 2022 02:29:50 +0700 Subject: [PATCH] add fixes and add vehicles form --- app/Http/Controllers/AdminController.php | 48 +++++- app/Http/Controllers/RentController.php | 36 ++-- app/Models/Brand.php | 11 -- app/Models/Vehicle.php | 4 + public/css/app.css | 156 +++++++++++------- resources/views/confirm-payment.blade.php | 58 +++++-- .../dashboard/add-vehicle-form.blade.php | 75 +++++++++ resources/views/dashboard/customers.blade.php | 30 +--- resources/views/dashboard/orders.blade.php | 14 +- resources/views/dashboard/vehicles.blade.php | 7 +- resources/views/payment-details.blade.php | 2 +- resources/views/user-profile.blade.php | 8 +- resources/views/vehicles-list.blade.php | 8 +- routes/web.php | 4 + 14 files changed, 321 insertions(+), 140 deletions(-) delete mode 100644 app/Models/Brand.php create mode 100644 resources/views/dashboard/add-vehicle-form.blade.php diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index bcfdc79..ea9f92e 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -27,7 +27,7 @@ public function getVehiclesDashboardMotor() $vehicles = Vehicle::where('type', '=', 'motor') ->take(10) ->get(); - return view('dashboard.vehicles', ['type' => 'Motorcycles', 'vehicles' => $vehicles]); + return view('dashboard.vehicles', ['type' => 'Motor', 'vehicles' => $vehicles]); } public function getOrdersDashboard() @@ -41,6 +41,7 @@ public function getOrdersDashboard() 'orders.dropoff_date', 'orders.dropoff_time', 'orders.order_status', 'orders.total_price', 'users.id as user_id', 'users.name as user_name', 'users.email', 'vehicles.name as vehicle_name', 'vehicles.id as vehicle_id') + ->orderBy('orders.id', 'desc') ->take($take) ->get(); @@ -62,4 +63,49 @@ public function rejectOrder($id) { return redirect()->route('orders-dashboard'); } + + public function doneVehicle() { + $id = request()->input('order_id'); + $order = Order::find($id); + $order->order_status = 'COMPLETED'; + $order->save(); + + return redirect()->route('orders-dashboard'); + } + + public function getNewCarForm() { + $type = 'Car'; + + return view('dashboard.add-vehicle-form', ['type' => $type]); + } + + public function getNewMotorForm() { + $type = 'Motor'; + + return view('dashboard.add-vehicle-form', ['type' => $type]); + } + + public function addVehicle($type) { + $request = request()->input(); + + $photo_filename = $request['name']. '.' . request()->file('photo')->extension(); + $photo = request()->file('photo')->storeAs('images', $photo_filename, 'local'); + + $data = [ + 'name' => $request['name'], + 'brand' => $request['brand'], + 'type' => $type, + 'price' => $request['price'], + 'available_unit' => $request['available_unit'], + 'photo' => $photo_filename, + 'fuel' => $request['fuel'], + 'transmission' => $request['transmission'], + 'cc' => $request['cc'], + 'year' => $request['year'], + ]; + + $vehicle = Vehicle::create($data); + + return redirect()->route('vehicles-dashboard-'.$type); + } } diff --git a/app/Http/Controllers/RentController.php b/app/Http/Controllers/RentController.php index ae508a2..c87be8e 100644 --- a/app/Http/Controllers/RentController.php +++ b/app/Http/Controllers/RentController.php @@ -31,23 +31,18 @@ public function findVehicles() { $vehicles = Vehicle::leftJoin('orders', 'vehicles.id', '=', 'orders.vehicle_id') ->select("vehicles.id", "vehicles.name", "vehicles.brand", "vehicles.transmission", "vehicles.cc", "vehicles.fuel", "vehicles.price", "vehicles.type", "vehicles.photo", "vehicles.year") - ->where("type", "=", $type) - ->whereNull("orders.pickup_date") - ->when($pickup_date && $dropoff_date, function($query) use ($pickup_date, $dropoff_date) { - $query->orWhere("orders.dropoff_date", "<", $pickup_date) - ->orWhere("orders.pickup_date", ">", $dropoff_date); - }) - ->when($brand != 'All', function($query, $brand) { - $query->where('vehicles.brand', $brand); - }) - ->when($transmission != 'All', function($query, $transmission) { - $query->where('vehicles.transmission', $transmission); + ->where("vehicles.type", '=' , strtolower($type)) + ->when($brand != 'All', function($query) use ($brand) { + $query->Where('vehicles.brand', '=', $brand); }) + ->when($transmission != 'All', function($query) use ($transmission) { + $query->Where('vehicles.transmission', '=', $transmission); + }) ->groupBy("vehicles.id") - ->having('vehicles.available_unit', '>', DB::raw('count(orders.id)')) + ->having('vehicles.available_unit', '>', DB::raw("count(orders.id) FILTER(WHERE ORDERS.DROPOFF_DATE >= '$dropoff_date' AND ORDERS.PICKUP_DATE >= '$pickup_date' AND ORDERS.ORDER_STATUS NOT IN ('DONE', 'CANCELLED'))")) ->get(); - return redirect()->route('rent-'. strtolower($type). 's')->with(['vehicles' => $vehicles, 'pickup_date' => $pickup_date, 'dropoff_date' => $dropoff_date]); + return redirect()->route('rent-'. strtolower($type). 's')->with(['vehicles' => $vehicles, 'pickup_date' => $pickup_date, 'dropoff_date' => $dropoff_date, 'transmission' => $transmission, 'brand' => $brand]); } public function getFindMotor() @@ -66,14 +61,14 @@ public function getRentCars() { if(!session('vehicles')) return redirect()->route(('find-car')); - return view('vehicles-list', ['vehicles' => session('vehicles'), 'pickup_date' => session('pickup_date'), 'dropoff_date' => session('dropoff_date'), 'type' => 'Car']); + return view('vehicles-list', ['vehicles' => session('vehicles'), 'pickup_date' => session('pickup_date'), 'dropoff_date' => session('dropoff_date'), 'type' => 'Car', 'transmission' => session('transmission'), 'brand' => session('brand')]); } public function getRentMotors() { if(session('vehicles') == null) return redirect()->route(('find-motor')); - return view('vehicles-list', ['vehicles' => session('vehicles'), 'pickup_date' => session('pickup_date'), 'dropoff_date' => session('dropoff_date'), 'type' => 'Motor']); + return view('vehicles-list', ['vehicles' => session('vehicles'), 'pickup_date' => session('pickup_date'), 'dropoff_date' => session('dropoff_date'), 'type' => 'Motor', 'transmission' => session('transmission'), 'brand' => session('brand')]); } public function rentVehicle($type, $id) @@ -94,7 +89,7 @@ public function rentVehicle($type, $id) $pickup_day = new DateTime($request['dropoff_date']); $dropoff_day = new DateTime($request['pickup_date']); $rent_days = $pickup_day->diff($dropoff_day)->days; - $rent_price = $rent_days * $vehicle->price; + $rent_price = ($rent_days * $vehicle->price) + 4500; $data = [ 'vehicle_id' => $id, @@ -126,7 +121,9 @@ public function getUserOrders() { $orders = Order::join('vehicles', 'orders.vehicle_id', '=', 'vehicles.id') ->select("orders.id", "orders.order_status", "orders.created_at", "vehicles.name") - ->where('user_id', '=', auth()->user()->id)->get(); + ->where('user_id', '=', auth()->user()->id) + ->orderBy('orders.created_at', 'desc') + ->get(); return view('order-history', ['orders' => $orders]); } @@ -134,7 +131,10 @@ public function getUserOrders() public function getPaymentDetails($id) { $method = request()->input('method') ? request()->input('method') : 'BCA Transfer'; - $order = Order::find($id); + $order = Order::join('vehicles', 'orders.vehicle_id', '=', 'vehicles.id') + ->select("orders.id", "orders.order_status", "orders.created_at", "vehicles.name", "orders.total_price", "orders.transaction_id") + ->where('orders.id', '=', $id) + ->first(); if($order->transaction_id) { return redirect()->route('confirm-payment', [$order->id])->with('order', $order); diff --git a/app/Models/Brand.php b/app/Models/Brand.php deleted file mode 100644 index c1405e8..0000000 --- a/app/Models/Brand.php +++ /dev/null @@ -1,11 +0,0 @@ - :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(2rem * var(--tw-space-x-reverse)); @@ -1189,12 +1209,12 @@ select { .rounded { border-radius: 0.25rem; } -.rounded-xl { - border-radius: 0.75rem; -} .rounded-sm { border-radius: 0.125rem; } +.rounded-xl { + border-radius: 0.75rem; +} .rounded-2xl { border-radius: 1rem; } @@ -1289,6 +1309,10 @@ select { --tw-bg-opacity: 1; background-color: rgb(147 149 222 / var(--tw-bg-opacity)); } +.bg-lilac-400 { + --tw-bg-opacity: 1; + background-color: rgb(221 222 245 / var(--tw-bg-opacity)); +} .bg-mint-100 { --tw-bg-opacity: 1; background-color: rgb(37 222 141 / var(--tw-bg-opacity)); @@ -1297,10 +1321,6 @@ select { --tw-bg-opacity: 1; background-color: rgb(255 80 80 / var(--tw-bg-opacity)); } -.bg-lilac-400 { - --tw-bg-opacity: 1; - background-color: rgb(221 222 245 / var(--tw-bg-opacity)); -} .bg-cover { background-size: cover; } @@ -1341,12 +1361,12 @@ select { .p-5 { padding: 1.25rem; } -.p-8 { - padding: 2rem; -} .p-1 { padding: 0.25rem; } +.p-8 { + padding: 2rem; +} .p-1\.5 { padding: 0.375rem; } @@ -1426,12 +1446,12 @@ select { .pt-8 { padding-top: 2rem; } -.pr-8 { - padding-right: 2rem; -} .pl-2 { padding-left: 0.5rem; } +.pr-8 { + padding-right: 2rem; +} .pt-52 { padding-top: 13rem; } @@ -1462,6 +1482,9 @@ select { .pb-1 { padding-bottom: 0.25rem; } +.pt-24 { + padding-top: 6rem; +} .text-center { text-align: center; } @@ -1760,10 +1783,18 @@ select { --tw-bg-opacity: 1; background-color: rgb(93 93 148 / var(--tw-bg-opacity)); } +.hover\:bg-mint-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(131 238 191 / var(--tw-bg-opacity)); +} .hover\:text-white:hover { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } +.hover\:text-mint-100:hover { + --tw-text-opacity: 1; + color: rgb(37 222 141 / var(--tw-text-opacity)); +} .focus\:z-10:focus { z-index: 10; } @@ -1804,13 +1835,6 @@ select { --tw-bg-opacity: 1; background-color: rgb(226 226 226 / var(--tw-bg-opacity)); } -@media (prefers-color-scheme: dark) { - - .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); - } -} @media (min-width: 640px) { .sm\:-mx-6 { @@ -1888,6 +1912,11 @@ select { padding-right: 1.5rem; } + .sm\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + .sm\:pt-0 { padding-top: 0px; } @@ -1953,10 +1982,6 @@ select { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .lg\:grid-rows-4 { - grid-template-rows: repeat(4, minmax(0, 1fr)); - } - .lg\:grid-rows-2 { grid-template-rows: repeat(2, minmax(0, 1fr)); } @@ -1965,6 +1990,14 @@ select { grid-template-rows: repeat(1, minmax(0, 1fr)); } + .lg\:grid-rows-4 { + grid-template-rows: repeat(4, minmax(0, 1fr)); + } + + .lg\:grid-rows-5 { + grid-template-rows: repeat(5, minmax(0, 1fr)); + } + .lg\:flex-row { flex-direction: row; } @@ -1973,6 +2006,11 @@ select { padding-left: 2rem; padding-right: 2rem; } + + .lg\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } } diff --git a/resources/views/confirm-payment.blade.php b/resources/views/confirm-payment.blade.php index 911eac0..c239b3e 100644 --- a/resources/views/confirm-payment.blade.php +++ b/resources/views/confirm-payment.blade.php @@ -1,22 +1,50 @@
-

Konfirmasi Pembayaran

+

Transfer Payment Instructions

+

{{ 'Payment ID : '. $order->transaction_id }}

+

{{ 'Customer : '. auth()->user()->name }}

-
-
-

Order ID : {{ $order->id }}

-

Name : {{ auth()->user()->name }}

-

Email : {{ auth()->user()->email }}

-

Total Price : {{ $order->total_price }}

-

Payment Status : {{ $order->payment_status }}

-

Payment Method : {{ $order->payment_method }}

-

Pay Before : {{ $order->payment_expiry_time }}

-

Virtual Account : {{ $order->virtual_account }}

- - Konfirmasi Pembayaran - -
+
+
    +
  1. +
    1
    +

    Complete the Payment Before:

    +

    {{ $order->payment_expiry_time }}

    +
  2. +
  3. +
    2
    +

    Please Transfer to:

    +
    +
    + +

    {{ $order->payment_method }}

    +
    +
    +

    Virtual Account Number

    +

    {{ $order->virtual_account }}

    +

    Recipient Name

    +

    business.ly

    +
    +
    +
    +

    Total Price

    +

    IDR {{ $order->total_price }}

    +
    +
    +
    +
  4. +
  5. +
    3
    +
    +

    Have You Paid?

    +

    Confirm your payment here

    +
    + + Confirm Payment + +
  6. +
\ No newline at end of file diff --git a/resources/views/dashboard/add-vehicle-form.blade.php b/resources/views/dashboard/add-vehicle-form.blade.php new file mode 100644 index 0000000..638ab62 --- /dev/null +++ b/resources/views/dashboard/add-vehicle-form.blade.php @@ -0,0 +1,75 @@ + + +
+

New {{ $type }}

+ +
+
+ @csrf +
+
+ + +
+
+ + @if($type == 'Motor') + + @else + + @endif + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + Add New {{ $type }} + +
+
+
+
+
+
\ No newline at end of file diff --git a/resources/views/dashboard/customers.blade.php b/resources/views/dashboard/customers.blade.php index c36a927..94701d7 100644 --- a/resources/views/dashboard/customers.blade.php +++ b/resources/views/dashboard/customers.blade.php @@ -12,19 +12,6 @@
-
- - @foreach($menus as $menu) - -
-

{{ $menu }}

- @if($menu == $selected) -
- @endif -
-
- @endforeach -

Showing result 1-10 Result

@@ -74,37 +61,36 @@ - @foreach($orders as $order) - {{ $order->id }} + - {{ $order->vehicle_name }} + - {{ $order->pickup_date }} {{ $order->pickup_time }} + - {{ $order->dropoff_date }} {{ $order->dropoff_time }} + - {{ $order->user_name }} + - {{ $order->order_status }} + - {{ $order->total_price }} + - @endforeach +
diff --git a/resources/views/dashboard/orders.blade.php b/resources/views/dashboard/orders.blade.php index 6626894..3ef9403 100644 --- a/resources/views/dashboard/orders.blade.php +++ b/resources/views/dashboard/orders.blade.php @@ -37,17 +37,17 @@ -
+
-
+
- -
+ + Order ID @@ -108,6 +108,12 @@ + @elseif($order->order_status == 'PAYMENT_DONE') +
+ @csrf + + +
@else - @endif diff --git a/resources/views/dashboard/vehicles.blade.php b/resources/views/dashboard/vehicles.blade.php index 215c804..fa266a2 100644 --- a/resources/views/dashboard/vehicles.blade.php +++ b/resources/views/dashboard/vehicles.blade.php @@ -3,7 +3,7 @@
{{ $type }} Inventory
-
+
@@ -14,6 +14,11 @@
+
diff --git a/resources/views/payment-details.blade.php b/resources/views/payment-details.blade.php index de6c788..5686d22 100644 --- a/resources/views/payment-details.blade.php +++ b/resources/views/payment-details.blade.php @@ -41,7 +41,7 @@

PRICING DETAILS

-

Honda Scoopy Smart Key x1

+

{{ $order->name }}

IDR {{ $order->total_price - 4500 }}

Service Fee

IDR 4500

diff --git a/resources/views/user-profile.blade.php b/resources/views/user-profile.blade.php index e0ce5ac..df81cd0 100644 --- a/resources/views/user-profile.blade.php +++ b/resources/views/user-profile.blade.php @@ -14,19 +14,19 @@
- +
- +
- +
- +
Save diff --git a/resources/views/vehicles-list.blade.php b/resources/views/vehicles-list.blade.php index 7c70fdd..d064e3a 100644 --- a/resources/views/vehicles-list.blade.php +++ b/resources/views/vehicles-list.blade.php @@ -24,8 +24,8 @@ @endif
@@ -37,8 +37,8 @@
diff --git a/routes/web.php b/routes/web.php index e56aaec..c59b33c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -73,6 +73,10 @@ Route::get('/dashboard/orders/rejection/{id}', [AdminController::class, 'rejectOrder'])->name('reject-order'); Route::get('/dashboard/vehicles/car', [AdminController::class, 'getVehiclesDashboardCar'])->name('vehicles-dashboard-car'); Route::get('/dashboard/vehicles/motor', [AdminController::class, 'getVehiclesDashboardMotor'])->name('vehicles-dashboard-motor'); + Route::post('/dashboard/vehicles/car/done', [AdminController::class, 'doneVehicle'])->name('done-vehicle'); + Route::get('/dashboard/vehicles/car/new', [AdminController::class, 'getNewCarForm'])->name('add-car'); + Route::get('/dashboard/vehicles/motor/new', [AdminController::class, 'getNewMotorForm'])->name('add-motor'); + Route::post('/dashboard/vehicles/{type}/new', [AdminController::class, 'addVehicle'])->name('add-vehicle')->where('type', '\b(car|motor)\b'); }); Route::get('/test-up', function() {