dress/app/Http/Controllers/Admin/Manage/OrderCartController.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();
}
}