75 lines
2.2 KiB
PHP
75 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Manage;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Admin\Manage\Order\AddToCartRequest;
|
|
use App\Models\OrderItem;
|
|
use Illuminate\Http\RedirectResponse;
|
|
|
|
class OrderCartController extends Controller
|
|
{
|
|
public function addToCart(AddToCartRequest $request): RedirectResponse
|
|
{
|
|
$validated = $request->validated();
|
|
|
|
$item = OrderItem::where('user_id', auth()->id())
|
|
->whereNull('order_id')
|
|
->where('product_id', $validated['product_id'])
|
|
->where('price_type', $validated['price_type'])
|
|
->first();
|
|
|
|
if ($item) {
|
|
$newQty = $item->qty + $validated['qty'];
|
|
|
|
if ($newQty <= 0) {
|
|
$item->delete();
|
|
} else {
|
|
$item->update([
|
|
'qty' => $newQty,
|
|
'total' => $newQty * $item->price,
|
|
]);
|
|
}
|
|
} else {
|
|
if ($validated['qty'] > 0) {
|
|
OrderItem::create([
|
|
'user_id' => auth()->id(),
|
|
'order_id' => null,
|
|
'product_id' => $validated['product_id'],
|
|
'qty' => $validated['qty'],
|
|
'price' => $validated['price'],
|
|
'total' => $validated['qty'] * $validated['price'],
|
|
'price_type' => $validated['price_type'],
|
|
]);
|
|
}
|
|
}
|
|
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function removeFromCart(OrderItem $orderItem): RedirectResponse
|
|
{
|
|
if ($orderItem->user_id === auth()->id() && $orderItem->order_id === null) {
|
|
$orderItem->delete();
|
|
}
|
|
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function updateCartItem(AddToCartRequest $request, OrderItem $orderItem): RedirectResponse
|
|
{
|
|
if ($orderItem->user_id !== auth()->id() || $orderItem->order_id !== null) {
|
|
return redirect()->back();
|
|
}
|
|
|
|
$validated = $request->validated();
|
|
|
|
$orderItem->update([
|
|
'qty' => $validated['qty'],
|
|
'total' => $validated['qty'] * $orderItem->price,
|
|
]);
|
|
|
|
return redirect()->back();
|
|
}
|
|
}
|