diff --git a/src/Controllers/PublicController/CartController.php b/src/Controllers/PublicController/CartController.php index 55e619f..3f0dfd9 100644 --- a/src/Controllers/PublicController/CartController.php +++ b/src/Controllers/PublicController/CartController.php @@ -101,6 +101,40 @@ public function edit(Request $request) } } + public function editCart(Request $request) + { + DB::beginTransaction(); + try { + $request->validate([ + 'id' => 'required|exists:Uasoft\Badaso\Module\Commerce\Models\Cart', + 'product_detail_id' => 'required|exists:Uasoft\Badaso\Module\Commerce\Models\ProductDetail,id', + 'quantity' => "required|min:0|integer" + ]); + + $cart = Cart::where('id', $request->id) + ->where('user_id', auth()->user()->id) + ->first(); + + $product_detail = ProductDetail::where('id', $cart->product_detail_id) + ->first(); + + if ($request->quantity > $product_detail->quantity) { + return ApiResponse::failed(__('badaso_commerce::validation.stock_not_available')); + } + + $cart = Cart::where('id', $request->id)->update([ + 'quantity' => $request->quantity, + 'product_detail_id' => $request->product_detail_id + ]); + + DB::commit(); + return ApiResponse::success(); + } catch (Exception $e) { + DB::rollback(); + return ApiResponse::failed($e); + } + } + public function delete(Request $request) { DB::beginTransaction(); diff --git a/src/Controllers/PublicController/ProductController.php b/src/Controllers/PublicController/ProductController.php index 6bc9131..7ec02d5 100644 --- a/src/Controllers/PublicController/ProductController.php +++ b/src/Controllers/PublicController/ProductController.php @@ -167,6 +167,25 @@ public function read(Request $request) } } + public function readSimple(Request $request) + { + try { + $request->validate([ + 'id' => 'required|exists:Uasoft\Badaso\Module\Commerce\Models\Product,id', + ]); + + $product = Product::with(['productCategory', 'productDetails.discount']) + ->where('id', $request->id) + ->firstOrFail(); + + $data['product'] = $product->toArray(); + + return ApiResponse::success($data); + } catch (Exception $e) { + return ApiResponse::failed($e); + } + } + public function search(Request $request) { try { diff --git a/src/Controllers/PublicController/ReviewController.php b/src/Controllers/PublicController/ReviewController.php index 17b70e8..025b843 100644 --- a/src/Controllers/PublicController/ReviewController.php +++ b/src/Controllers/PublicController/ReviewController.php @@ -96,7 +96,7 @@ public function submit(Request $request) foreach ($request->media as $key => $media) { $filename[] = UploadImage::createImage($media, 'review/'); } - $review->media = json_encode($filename); + $review->media = array_values($filename); $review->save(); } diff --git a/src/Controllers/PublicController/UserAddressController.php b/src/Controllers/PublicController/UserAddressController.php index 1335340..b02f596 100644 --- a/src/Controllers/PublicController/UserAddressController.php +++ b/src/Controllers/PublicController/UserAddressController.php @@ -58,7 +58,7 @@ public function add(Request $request) $user_addresses_total = UserAddress::where('user_id', auth()->user()->id)->count(); if ($user_addresses_total < $limit) { - UserAddress::create([ + $user_address = UserAddress::create([ 'user_id' => auth()->user()->id, 'recipient_name' => $request->recipient_name, 'address_line1' => $request->address_line1, @@ -76,7 +76,7 @@ public function add(Request $request) } DB::commit(); - return ApiResponse::success(); + return ApiResponse::success($user_address->only(['id'])); } catch (Exception $e) { DB::rollback(); return ApiResponse::failed($e); diff --git a/src/Routes/api.php b/src/Routes/api.php index 6354340..47efbfb 100644 --- a/src/Routes/api.php +++ b/src/Routes/api.php @@ -107,6 +107,7 @@ Route::get('/browse-category-slug', 'PublicController\ProductController@browseByCategorySlug'); Route::get('/browse-similar', 'PublicController\ProductController@browseSimilar'); Route::get('/read', 'PublicController\ProductController@read'); + Route::get('/read-by-cart', 'PublicController\ProductController@readSimple'); Route::get('/search', 'PublicController\ProductController@search'); Route::get('/best-selling', 'PublicController\ProductController@browseBestSellingProduct'); }); @@ -120,6 +121,7 @@ Route::get('/', 'PublicController\CartController@browse'); Route::post('/add', 'PublicController\CartController@add'); Route::put('/edit', 'PublicController\CartController@edit'); + Route::put('/edit-cart', 'PublicController\CartController@editCart'); Route::delete('/delete', 'PublicController\CartController@delete'); Route::post('/validate', 'PublicController\CartController@validate'); }); @@ -131,7 +133,7 @@ Route::post('/finish', 'PublicController\OrderController@finish'); }); - Route::group(['prefix' => 'review/public', 'middleware' => [BadasoAuthenticate::class]], function () { + Route::group(['prefix' => 'review/public'], function () { Route::get('/', 'PublicController\ReviewController@browse'); Route::post('/submit', 'PublicController\ReviewController@submit'); Route::get('/read', 'PublicController\ReviewController@read'); diff --git a/src/resources/payment/components/manual-transfer-pay.vue b/src/resources/payment/components/manual-transfer-pay.vue index 5556e70..0a7879f 100644 --- a/src/resources/payment/components/manual-transfer-pay.vue +++ b/src/resources/payment/components/manual-transfer-pay.vue @@ -1,5 +1,5 @@ @@ -9,5 +9,13 @@ export default { props: { order: Object }, + methods: { + emit() { + this.$emit("input", this.redirect); + }, + redirect(res) { + this.$inertia.visit(this.route('badaso.commerce-theme.payment-info', this.order.id)) + }, + }, } \ No newline at end of file diff --git a/src/resources/payment/components/manual-transfer.vue b/src/resources/payment/components/manual-transfer.vue index 6f53576..f430396 100644 --- a/src/resources/payment/components/manual-transfer.vue +++ b/src/resources/payment/components/manual-transfer.vue @@ -16,12 +16,7 @@ export default { this.$emit("checkout", this.redirect); }, redirect(res) { - this.$router.push({ - name: "PaymentInfo", - params: { - id: res.data.order, - }, - }); + this.$inertia.visit(this.route('badaso.commerce-theme.payment-info', res.data.order)) }, }, };