dbfdg can('manage coupon')) { $coupons = Coupon::get(); return view('coupon.index', compact('coupons')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function create() { if(\Auth::user()->can('create coupon')) { return view('coupon.create'); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function store(Request $request) { if(\Auth::user()->can('create coupon')) { $validator = \Validator::make( $request->all(), [ 'name' => 'required|unique:coupons', 'discount' => 'required|numeric', 'limit' => 'required|numeric', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } if(empty($request->manualCode) && empty($request->autoCode)) { return redirect()->back()->with('error', __('Coupon code is required')); } $couponCode = Coupon::where('code' , $request->manualCode)->orWhere('code' , $request->autoCode)->first(); if($couponCode != null) { return redirect()->back()->with('error', __('This Coupon Code is already taken.')); } $coupon = new Coupon(); $coupon->name = $request->name; $coupon->discount = $request->discount; $coupon->limit = $request->limit; if(!empty($request->manualCode)) { $coupon->code = strtoupper($request->manualCode); } if(!empty($request->autoCode)) { $coupon->code = $request->autoCode; } $coupon->save(); return redirect()->route('coupons.index')->with('success', __('Coupon successfully created.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function show(Coupon $coupon) { $userCoupons = UserCoupon::where('coupon', $coupon->id)->with('userDetail')->get(); return view('coupon.view', compact('userCoupons')); } public function edit(Coupon $coupon) { if(\Auth::user()->can('edit coupon')) { return view('coupon.edit', compact('coupon')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function update(Request $request, Coupon $coupon) { if(\Auth::user()->can('edit coupon')) { $validator = \Validator::make( $request->all(), [ 'name' => 'required', 'discount' => 'required|numeric', 'limit' => 'required|numeric', 'code' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $coupon = Coupon::find($coupon->id); $coupon->name = $request->name; $coupon->discount = $request->discount; $coupon->limit = $request->limit; $coupon->code = $request->code; $coupon->save(); return redirect()->route('coupons.index')->with('success', __('Coupon successfully updated.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function destroy(Coupon $coupon) { if(\Auth::user()->can('delete coupon')) { $coupon->delete(); return redirect()->route('coupons.index')->with('success', __('Coupon successfully deleted.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function applyCoupon(Request $request) { $plan = Plan::find(\Illuminate\Support\Facades\Crypt::decrypt($request->plan_id)); if($plan && $request->coupon != '') { $original_price = self::formatPrice($plan->price); $coupons = Coupon::where('code', strtoupper($request->coupon))->where('is_active', '1')->first(); if(!empty($coupons)) { $usedCoupun = $coupons->used_coupon(); if($coupons->limit == $usedCoupun) { return response()->json( [ 'is_success' => false, 'final_price' => $original_price, 'price' => number_format($plan->price, \Utility::getValByName('decimal_number')), 'message' => __('This coupon code has expired.'), ] ); } else { $discount_value = ($plan->price / 100) * $coupons->discount; $plan_price = $plan->price - $discount_value; $price = self::formatPrice($plan->price - $discount_value); $discount_value = '-' . self::formatPrice($discount_value); return response()->json( [ 'is_success' => true, 'discount_price' => $discount_value, 'final_price' => $price, 'price' => number_format($plan_price, \Utility::getValByName('decimal_number')), 'message' => __('Coupon code has applied successfully.'), ] ); } } else { return response()->json( [ 'is_success' => false, 'final_price' => $original_price, 'price' => number_format($plan->price, \Utility::getValByName('decimal_number')), 'message' => __('This coupon code is invalid or has expired.'), ] ); } } } public function formatPrice($price) { $admin_payment_setting = Utility::getAdminPaymentSetting(); $currency = !empty($admin_payment_setting['currency']) ? $admin_payment_setting['currency'] : '$'; return $currency . number_format($price, \Utility::getValByName('decimal_number')); } }