|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/parassaas.edukrypt.in/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
use App\Models\Promocode;
use App\Models\Product_promocode;
use App\Models\Billing;
use App\Models\Price;
use Illuminate\Support\Facades\DB;
class CartController extends Controller
{
// Shopping Cart ============================================= >>>>>
public function addToCart(Request $request)
{
$product_id = $request->product_id;
$mode = $request->mode;
$price_id = $request->price_id;
$product = DB::table('products as P')
->join('main_categories as MC', 'MC.id', '=', 'P.cat_id')
->join('admin_users as au', 'au.id', '=', 'P.teacher_id')
->join('prices as pc', 'pc.product_id', '=', 'P.id')
->where(['P.id' => $product_id, 'P.status' => '1', 'pc.id' => $price_id])
->select('P.*', 'au.username as teacher', 'MC.name as category', 'pc.*')
->first();
$name = $product->name;
$type = $product->type;
$short_desc = $product->short_desc;
$image = $product->image;
$views = $product->views;
$mode = $product->mode;
$teacher = $product->teacher;
$price = $product->price;
$discount_percnt = $product->discount_percnt;
$max_discount = $product->max_discount;
$duration = $product->duration;
$cart = session()->get('cart');
// if item not exist in cart then add to cart with quantity = 1
$cart[$product_id] = [
"productId" => $product_id,
"name" => $name,
"duration" => $duration,
"views" => $views,
'price_id' => $price_id,
"qty" => 1,
"image" => $image,
"mode" => $mode,
"teacher" => $teacher,
"short_desc" => $short_desc,
"price" => $price,
'discount_percnt' => $discount_percnt,
'max_discount' => $max_discount,
'coupon_discount_amount' => 0,
'coupon_name' => "",
'coupon_apply_status' => "no",
];
session()->put('cart', $cart);
}
public function getCart()
{
$admin_id = 2;
$data['title'] = 'Shopping Cart';
$data['frontMenu'] = 'home';
$data['carts'] = session()->get('cart');
// echo "<pre>";
// print_r(session()->get('cart'));
// exit;
return view('cart', $data);
}
public function removeCart(Request $request)
{
if ($request->id) {
$cart = session()->get('cart');
if (isset($cart[$request->id])) {
unset($cart[$request->id]);
session()->put('cart', $cart);
}
return redirect('/cart')->with('success', 'Item Removed From Cart!');
}
}
public function applyPromocode(Request $request)
{
$coupon = $request->coupon;
$request->validate([
'coupon' => 'required',
]);
$applyCoupon = Promocode::where(['code' => $coupon, 'status' => '1'])->first();
if (!empty($applyCoupon)) {
// Check Cart is Empty Or Not
$cartValues = session()->get('cart');
if (empty($cartValues)) {
return redirect('/cart')->with('error', 'Your cart is empty!');
}
// Check Coupon Code Expired or Not
$_applyCoupon = Promocode::where(['code' => $coupon, 'status' => '1'])
->whereRaw('? between start_date and end_date', [date('Y-m-d')])
->first();
if (empty($_applyCoupon)) {
return redirect('/cart')->with('error', 'This coupon code is not valid!');
}
// Multiple Time Applicable Code
if ($applyCoupon->promo_type == '2') {
// If Coupon code for specific courses only
if ($_applyCoupon->promo_for == 'selected_courses') {
foreach ($cartValues as $cart) {
// Check Which Product
$whichProduct = Product_promocode::where(['promo_id' => $_applyCoupon->id, 'product_id' => $cart['productId']])->first();
if (!empty($whichProduct)) {
$priceAfterdiscount = ($cart['price'] * $cart['discount_percnt']) / 100;
$chooseDiscountPrice = ($cart['max_discount'] > $priceAfterdiscount) ? $cart['max_discount'] : $priceAfterdiscount;
$finalProductPrice = round($cart['price'] - $chooseDiscountPrice);
// Percent Wise Discount or Flat
if ($_applyCoupon->discount_type == 'percentage') {
$discountByCoupon = (($_applyCoupon->amount * $finalProductPrice) / 100);
$finalCouponDiscount = (($discountByCoupon < $_applyCoupon->limit_value) ? $discountByCoupon : $_applyCoupon->limit_value);
$cartValues[$cart['productId']]['coupon_discount_amount'] = $finalCouponDiscount;
$cartValues[$cart['productId']]['coupon_name'] = $_applyCoupon->code;
$cartValues[$cart['productId']]['coupon_apply_status'] = 'yes';
}
// Flat Discount Check
else {
$cartValues[$cart['productId']]['coupon_discount_amount'] = $_applyCoupon->amount;
$cartValues[$cart['productId']]['coupon_name'] = $_applyCoupon->code;
$cartValues[$cart['productId']]['coupon_apply_status'] = 'yes';
}
}
}
}
}
// For All Courses
else {
foreach ($cartValues as $cart) {
$priceAfterdiscount = ($cart['price'] * $cart['discount_percnt']) / 100;
$chooseDiscountPrice = ($cart['max_discount'] > $priceAfterdiscount) ? $cart['max_discount'] : $priceAfterdiscount;
$finalProductPrice = round($cart['price'] - $chooseDiscountPrice);
// Percent Wise Discount or Flat
if ($_applyCoupon->discount_type == 'percentage') {
$discountByCoupon = (($_applyCoupon->amount * $finalProductPrice) / 100);
$finalCouponDiscount = (($_applyCoupon->limit_value < $discountByCoupon) ? $discountByCoupon : $_applyCoupon->limit_value);
$cartValues[$cart['productId']]['coupon_discount_amount'] = $finalCouponDiscount;
$cartValues[$cart['productId']]['coupon_name'] = $_applyCoupon->code;
$cartValues[$cart['productId']]['coupon_apply_status'] = 'yes';
}
// Flat Discount Check
else {
$cartValues[$cart['productId']]['coupon_discount_amount'] = $_applyCoupon->amount;
$cartValues[$cart['productId']]['coupon_name'] = $_applyCoupon->code;
$cartValues[$cart['productId']]['coupon_apply_status'] = 'yes';
}
}
}
session()->put('cart', $cartValues);
return redirect('/cart')->with('success', 'Coupon is applied!');
}
return redirect('/cart')->with('error', 'This coupon code is not valid!');
}
public function removePromocode()
{
$carts = session()->get('cart');
foreach ($carts as $cart) {
$carts[$cart['productId']]['coupon_discount_amount'] = 0;
$carts[$cart['productId']]['coupon_name'] = '';
$carts[$cart['productId']]['coupon_apply_status'] = 'no';
}
session()->put('cart', $carts);
return redirect('/cart')->with('success', 'Coupon Removed!');
}
}