dress/app/Http/Controllers/Admin/Manage/PurchaseCartController.php

73 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Manage;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\Manage\Purchase\AddToCartRequest;
use App\Models\PurchaseItem;
use Illuminate\Http\RedirectResponse;
class PurchaseCartController extends Controller
{
public function addToCart(AddToCartRequest $request): RedirectResponse
{
$validated = $request->validated();
$item = PurchaseItem::where('user_id', auth()->id())
->whereNull('purchase_id')
->where('product_id', $validated['product_id'])
->first();
if ($item) {
$newQuantity = $item->quantity + $validated['quantity'];
if ($newQuantity <= 0) {
$item->delete();
} else {
$item->update([
'quantity' => $newQuantity,
'total_price' => $newQuantity * $item->unit_price,
]);
}
} else {
if ($validated['quantity'] > 0) {
PurchaseItem::create([
'user_id' => auth()->id(),
'purchase_id' => null,
'product_id' => $validated['product_id'],
'quantity' => $validated['quantity'],
'unit_price' => $validated['unit_price'],
'total_price' => $validated['quantity'] * $validated['unit_price'],
]);
}
}
return redirect()->back();
}
public function removeFromCart(PurchaseItem $purchaseItem): RedirectResponse
{
if ($purchaseItem->user_id === auth()->id() && $purchaseItem->purchase_id === null) {
$purchaseItem->delete();
}
return redirect()->back();
}
public function updateCartItem(AddToCartRequest $request, PurchaseItem $purchaseItem): RedirectResponse
{
if ($purchaseItem->user_id !== auth()->id() || $purchaseItem->purchase_id !== null) {
return redirect()->back();
}
$validated = $request->validated();
$purchaseItem->update([
'quantity' => $validated['quantity'],
'total_price' => $validated['quantity'] * $purchaseItem->unit_price,
]);
return redirect()->back();
}
}