관리-도구
편집 파일: CouponController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Coupon; use Illuminate\Http\Request; class CouponController extends Controller { // Show all coupons public function index() { $coupons = Coupon::latest()->get(); return view('admin.coupons', compact('coupons')); } // Store new coupon public function store(Request $request) { $request->validate([ 'code' => 'required|unique:coupons,code', 'discount_amount' => 'nullable|numeric', 'discount_percent' => 'nullable|integer|min:0|max:100', 'min_purchase' => 'nullable|numeric', 'expiry_date' => 'nullable|date', ]); Coupon::create($request->all()); return redirect()->route('admin-coupons.index')->with('success', 'Coupon created successfully!'); } // Apply coupon to cart (AJAX or checkout page) public function apply(Request $request) { $request->validate(['code' => 'required']); $coupon = Coupon::where('code', $request->code) ->where('is_active', true) ->first(); if (!$coupon) { return response()->json(['error' => 'Invalid coupon code.'], 400); } if ($coupon->expiry_date && $coupon->expiry_date < now()) { return response()->json(['error' => 'Coupon expired.'], 400); } $cartTotal = $request->cart_total ?? 0; if ($cartTotal < $coupon->min_purchase) { return response()->json(['error' => 'Minimum purchase amount not met.'], 400); } // Calculate discount $discount = $coupon->discount_amount ? $coupon->discount_amount : ($cartTotal * ($coupon->discount_percent / 100)); return response()->json([ 'success' => true, 'discount' => round($discount, 2), 'final_total' => round($cartTotal - $discount, 2), ]); } }