From d80b42c297227abd23749559f44370b52f12aa98 Mon Sep 17 00:00:00 2001 From: Bayu Lukman Yusuf Date: Wed, 28 Jan 2026 11:20:20 +0700 Subject: [PATCH] pricing shipping list --- .env.example | 7 +- .../Controllers/Auth/LoginEmailController.php | 3 + .../Controllers/Auth/LoginWaController.php | 3 + .../Controllers/Auth/ProfileController.php | 10 +++ app/Http/Controllers/CheckoutController.php | 84 +++++++++---------- app/ThirdParty/Biteship/Rate.php | 1 + .../checkout/v1-delivery-1-shipping.blade.php | 3 +- .../views/checkout/v1-delivery-1.blade.php | 8 +- resources/views/layouts/account.blade.php | 81 +----------------- .../partials/account-sidebar.blade.php | 12 +-- routes/web.php | 2 +- 11 files changed, 77 insertions(+), 137 deletions(-) diff --git a/.env.example b/.env.example index 5a6e60e..5f24f6d 100644 --- a/.env.example +++ b/.env.example @@ -65,4 +65,9 @@ AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" -WMS_ASSET_URL="https://dev.smgdev.top/api/storage" \ No newline at end of file +WMS_ASSET_URL="https://dev.smgdev.top/api/storage" + + +BITESHIP_URL= +BITESHIP_KEY= +BITESHIP_COURIER_ALL=grab,gojek,tiki,jnt,anteraja diff --git a/app/Http/Controllers/Auth/LoginEmailController.php b/app/Http/Controllers/Auth/LoginEmailController.php index fca4dae..43629d0 100644 --- a/app/Http/Controllers/Auth/LoginEmailController.php +++ b/app/Http/Controllers/Auth/LoginEmailController.php @@ -120,6 +120,9 @@ class LoginEmailController extends Controller 'device' => 'web', ]); + + Auth::login($check, true); + return redirect()->route('home')->with('success', __('otp.login_success')); diff --git a/app/Http/Controllers/Auth/LoginWaController.php b/app/Http/Controllers/Auth/LoginWaController.php index e78a71a..3ea7de7 100644 --- a/app/Http/Controllers/Auth/LoginWaController.php +++ b/app/Http/Controllers/Auth/LoginWaController.php @@ -115,6 +115,9 @@ class LoginWaController extends Controller 'device' => 'web', ]); + + Auth::login($check, true); + return redirect()->route('home')->with('success', __('otp.login_success')); } catch (\Illuminate\Validation\ValidationException $e) { diff --git a/app/Http/Controllers/Auth/ProfileController.php b/app/Http/Controllers/Auth/ProfileController.php index ca38cfa..0671d0d 100644 --- a/app/Http/Controllers/Auth/ProfileController.php +++ b/app/Http/Controllers/Auth/ProfileController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Controller; use App\Models\Customer; use Exception; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; @@ -120,4 +121,13 @@ class ProfileController extends Controller return back()->with('error', $e->getMessage()); } } + + + public function logout(Request $request) + { + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('login'); + } } diff --git a/app/Http/Controllers/CheckoutController.php b/app/Http/Controllers/CheckoutController.php index ca79eb8..6b45eeb 100644 --- a/app/Http/Controllers/CheckoutController.php +++ b/app/Http/Controllers/CheckoutController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Address; use App\Models\Location; use App\Repositories\Member\Cart\MemberCartRepository; +use App\Repositories\Member\ShippingRepository; use Illuminate\Http\Request; class CheckoutController extends Controller @@ -21,8 +22,14 @@ class CheckoutController extends Controller $total = $subtotal; + + + + $carts = $memberCartRepository->getList($request); + + return view('checkout.v1-delivery-1', [ - 'carts' => $request->user()->carts, + 'carts' => $carts, 'subtotal' => $subtotal, 'total' => $total, 'store' => $store, @@ -35,16 +42,17 @@ class CheckoutController extends Controller $delivery_method = $request->input('delivery_method') ?? 'shipping'; $address_id = $request->input('address_id'); + if ($address_id == null) { $address_list = Address::where('user_id', $request->user()->id)->orderBy('is_primary','desc')->get(); $address_id = $address_list->first()->id; } if ($delivery_method == null || $address_id == null) { + return redirect()->back()->with('error', 'Delivery method or address is required'); } - if ($delivery_method == 'shipping') { session(['checkout_delivery_method' => $delivery_method]); session(['checkout_address_id' => $address_id]); @@ -61,55 +69,39 @@ class CheckoutController extends Controller } - public function chooseShipping(Request $request, MemberCartRepository $memberCartRepository) + public function chooseShipping(Request $request, MemberCartRepository $memberCartRepository, ShippingRepository $shippingRepository) { try { - $delivery_method = $request->input('delivery_method'); - $address_id = $request->input('address_id'); + $delivery_method = session('checkout_delivery_method'); + $address_id = session('checkout_address_id'); - $subtotal = $memberCartRepository->getSubtotal($request->input('location_id')); + $location_id = session('location_id', 22); + + $subtotal = $memberCartRepository->getSubtotal($location_id); $total = $subtotal; - - $shipping_list = [ - [ - 'courier' => 'JNE', - 'service' => 'REG', - 'title' => 'JNE Regular', - 'cost' => 10000, - ], - [ - 'courier' => 'JNE', - 'service' => 'YES', - 'title' => 'JNE YES (Same Day)', - 'cost' => 25000, - ], - [ - 'courier' => 'J&T', - 'service' => 'EZ', - 'title' => 'J&T Express', - 'cost' => 12000, - ], - [ - 'courier' => 'SiCepat', - 'service' => 'REG', - 'title' => 'SiCepat Regular', - 'cost' => 11000, - ], - [ - 'courier' => 'Gojek', - 'service' => 'Same Day', - 'title' => 'Gojek Same Day', - 'cost' => 20000, - ], - [ - 'courier' => 'Grab', - 'service' => 'Instant', - 'title' => 'Grab Instant', - 'cost' => 22000, - ], - ]; + $request->merge(['location_id' => $location_id]); + $carts = $memberCartRepository->getList($request); + + $shipping_list = collect($shippingRepository->getList([ + "location_id" => $location_id, + "address_id" => $address_id, + "items" => $carts, + ])['pricing'])->map(function($row){ + return [ + 'courier' => $row['courier_code'], + 'service' => $row['courier_service_code'], + 'title' => $row['courier_name']." - ".$row['courier_service_name'], + 'description' => $row['duration'], + 'cost' => $row['shipping_fee'], + ]; + }); + + + + + return view('checkout.v1-delivery-1-shipping', [ 'carts' => $request->user()->carts, @@ -121,6 +113,8 @@ class CheckoutController extends Controller 'shipping_list' => $shipping_list, ]); } catch (\Exception $e) { + dd($e); + return redirect()->route('checkout.delivery')->with('error', 'Invalid checkout data'); } } diff --git a/app/ThirdParty/Biteship/Rate.php b/app/ThirdParty/Biteship/Rate.php index 7e72ec2..25b5a52 100644 --- a/app/ThirdParty/Biteship/Rate.php +++ b/app/ThirdParty/Biteship/Rate.php @@ -18,6 +18,7 @@ class Rate $items = $params["items"]; $sha1 = sha1(json_encode($items)); + $key = implode("_", [$origin_latitude, $origin_longitude, $destination_latitude, $destination_longitude, $sha1]); return Cache::remember("rates_".$key, 60 * 60 * 24, function() use ($origin_latitude, diff --git a/resources/views/checkout/v1-delivery-1-shipping.blade.php b/resources/views/checkout/v1-delivery-1-shipping.blade.php index c2d2428..c794650 100644 --- a/resources/views/checkout/v1-delivery-1-shipping.blade.php +++ b/resources/views/checkout/v1-delivery-1-shipping.blade.php @@ -52,8 +52,7 @@ for="shipping_{{ $loop->index }}">
{{ $shipping['title'] }} -
{{ $shipping['courier'] }} - - {{ $shipping['service'] }}
+
{{ $shipping['description'] }}
Rp {{ number_format($shipping['cost'], 0, ',', '.') }} diff --git a/resources/views/checkout/v1-delivery-1.blade.php b/resources/views/checkout/v1-delivery-1.blade.php index 43f554f..5142acc 100644 --- a/resources/views/checkout/v1-delivery-1.blade.php +++ b/resources/views/checkout/v1-delivery-1.blade.php @@ -71,8 +71,10 @@
-
-
- - - -
Your search results will appear here
-

Start typing in the search field above to see instant search results.

-
-
- - - @include('layouts.partials/offcanvas') - - - - - @include('layouts.partials/navbar', ['account' => true]) - +
diff --git a/resources/views/layouts/partials/account-sidebar.blade.php b/resources/views/layouts/partials/account-sidebar.blade.php index 54bd990..1a42a2d 100644 --- a/resources/views/layouts/partials/account-sidebar.blade.php +++ b/resources/views/layouts/partials/account-sidebar.blade.php @@ -97,11 +97,13 @@
diff --git a/routes/web.php b/routes/web.php index 7549c81..6866adc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -74,7 +74,7 @@ Route::group(['prefix' => '/login/google'], function () { Route::get('/profile', [ProfileController::class, 'index'])->name('profile'); Route::post('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::put('/profile/password', [ProfileController::class, 'updatePassword'])->name('profile.password.update'); - +Route::post('/profile/logout', [ProfileController::class, 'logout'])->name('profile.logout'); Route::middleware(['auth'])->prefix('/addresses')->group(function () { Route::get('/', [AddressController::class, 'index'])->name('addresses');