HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/DiscountController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use Datatables;
use App\Discount;
use App\DiscountType;
use App\Product;
use App\DiscountProduct;
use App\DiscountOrderUser;
use App\Category;

class DiscountController extends Controller
{

    public function index()
    {
        $discountTypes = DiscountType::where('active', 1)->orderBy('id', 'ASC')->get();
        return view('discounts.discounts')->with('discountTypes', $discountTypes);
    }

    public function indexAdd()
    {
        $discountTypes = DiscountType::where('active', 1)->orderBy('id', 'ASC')->get();
        $discountShipments = Discount::where([['active', 1], ['discount_type_id', 1]])->first();
        $products = Product::where('active', 1)->orderBy('name', 'ASC')->get();
        $categories = Category::where('active', 1)->orderBy('name', 'ASC')->get();
        if (isset($discountShipments->id)) {
            $statusDiscountShipments = true;
        } else {
            $statusDiscountShipments = false;
        }
        return view('discounts.addDiscount')
            ->with('discountTypes', $discountTypes)
            ->with('products', $products)
            ->with('statusDiscountShipments', $statusDiscountShipments)
            ->with('categories', $categories);
    }

    public function create(Request $request)
    {

        if ($request["discount_id"] == 1) {
            $discount = new Discount();
            $discount->name = $request["name"];
            $discount->price_discount = $request["price_discount"];
            $discount->percentage_discount = $request["percentage_discount"];
            $discount->days_register_discount_delivery = $request["days_register_discount_delivery"];
            $discount->discount_global_shipping = $request["discount_global_shipping"];
            $discount->discount_type_id = $request["discount_id"];
            $discount->save();
        } else {
            $discount = new Discount();
            $discount->name = $request["name"];
            $discount->value_for_win = $request["value_for_win"];
            $discount->message_to_user = $request["message_to_user"];
            $discount->when_start = $request["when_start"];
            $discount->when_finish = $request["when_finish"];
            $discount->max_winners = $request["max_winners"];
            $discount->code_coupon = $request["code_coupon"];
            $discount->price_discount = $request["price_discount"];
            $discount->percentage_discount = $request["percentage_discount"];
            $discount->is_multiple_redeem = $request["is_multiple_redeem"];
            $discount->is_cumulative_another_discounts = $request["is_cumulative_another_discounts"];
            $discount->apply_value = $request["apply_value"];
            $discount->category_id = $request["category_id"];
            $discount->discount_type_id = $request["discount_id"];
            $discount->save();

            if ($request["discount_id"] == 5 || $request["discount_id"] == 6) {
                foreach ($request["products"] as $key => $product) {
                    $discountProducts = new DiscountProduct();
                    $discountProducts->plu = $product['plu'];
                    $discountProducts->discount_id = $discount->id;
                    $discountProducts->product_id = $product['id'];
                    $discountProducts->quantity = $product['value'];
                    $discountProducts->save();
                }
            }

            if ($request["discount_id"] == 5 || $request["discount_id"] == 6 || $request["discount_id"] == 7 || $request["discount_id"] == 9) {
                foreach ($request["productsGift"] as $key => $product) {
                    $discountProducts = new DiscountProduct();
                    $discountProducts->is_gift = 1;
                    $discountProducts->plu = $product['plu'];
                    $discountProducts->discount_id = $discount->id;
                    $discountProducts->product_id = $product['id'];
                    $discountProducts->save();
                }
            }
        }

        if ($discount) {
            return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag8'));
        } else {
            return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag9'));
        }
    }

    public function indexInfo($id)
    {
        $discount = Discount::find($id);
        if ($discount->discount_type_id == 1) {
            $discountUsers = DiscountOrderUser::where('discount_id', $id)->whereNotNull('order_id')->with('user')->with('order')->with('discount')->get();
        } else {
            $discountUsers = DiscountOrderUser::where('discount_id', $id)->with('user')->with('order')->with('discount')->get();
        }
        return view('discounts.infoDiscount')
            ->with('discountUsers', $discountUsers);
    }

    public function indexEdit($id)
    {

        $discount = Discount::find($id);
        $products = Product::where('active', 1)->orderBy('name', 'ASC')->get();
        $productsRequirement = DiscountProduct::where('discount_id', $discount->id)->whereNull('is_gift')->with('product')->get();
        $productGift = DiscountProduct::where('discount_id', $discount->id)->whereNotNull('is_gift')->with('product')->get();
        if ($discount->discount_type_id == 10) {
            $categories = Category::where('active', 1)->orderBy('name', 'ASC')->get();
        } else {
            $categories = null;
        }

        return view('discounts.editDiscount')
            ->with('discount', $discount)
            ->with('products', $products)
            ->with('productsRequirement', $productsRequirement)
            ->with('productGift', $productGift)
            ->with('categories', $categories);
    }

    public function update(Request $request)
    {
        if ($request["type_discount_id"] == 1) {
            $discount = Discount::find($request["discount_id"]);
            $discount->name = $request["name"];
            $discount->price_discount = $request["price_discount"];
            $discount->percentage_discount = $request["percentage_discount"];
            $discount->days_register_discount_delivery = $request["days_register_discount_delivery"];
            $discount->discount_global_shipping = $request["discount_global_shipping"];
            $discount->update();
        } else {
            $discount = Discount::find($request["discount_id"]);
            $discount->name = $request["name"];
            $discount->value_for_win = $request["value_for_win"];
            $discount->message_to_user = $request["message_to_user"];
            $discount->when_start = $request["when_start"];
            $discount->when_finish = $request["when_finish"];
            $discount->max_winners = $request["max_winners"];
            $discount->code_coupon = $request["code_coupon"];
            $discount->price_discount = $request["price_discount"];
            $discount->percentage_discount = $request["percentage_discount"];
            $discount->is_multiple_redeem = $request["is_multiple_redeem"];
            $discount->is_cumulative_another_discounts = $request["is_cumulative_another_discounts"];
            $discount->apply_value = $request["apply_value"];
            $discount->category_id = $request["category_id"];
            $discount->update();

            if ($request["type_discount_id"] == 5 || $request["type_discount_id"] == 6) {
                $deletedRowsDiscountProducts = DiscountProduct::where('discount_id', $request["discount_id"])->whereNull('is_gift')->delete();
                foreach ($request["products"] as $key => $product) {
                    $discountProducts = new DiscountProduct();
                    $discountProducts->plu = $product['plu'];
                    $discountProducts->discount_id = $request["discount_id"];
                    $discountProducts->product_id = $product['id'];
                    $discountProducts->quantity = $product['quantity'];
                    $discountProducts->save();
                }
            }

            if ($request["type_discount_id"] == 5 || $request["type_discount_id"] == 6 || $request["type_discount_id"] == 7 || $request["type_discount_id"] == 9) {
                $deletedRowDiscountProducts = DiscountProduct::where('discount_id', $request["discount_id"])->whereNotNull('is_gift')->delete();
                foreach ($request["productsGift"] as $key => $product) {
                    $discountProducts = new DiscountProduct();
                    $discountProducts->is_gift = 1;
                    $discountProducts->plu = $product['plu'];
                    $discountProducts->discount_id = $request["discount_id"];
                    $discountProducts->product_id = $product['id'];
                    $discountProducts->save();
                }
            }
        }

        if ($discount) {
            return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag53'));
        } else {
            return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag54'));
        }
    }

    public function activateDiscount(Request $request)
    {
        $id = $request['id'];
        $state =  $request['state'];

        $discount = Discount::find($id);

        if ($discount->discount_type_id == 1 && $state) {
            Discount::where('discount_type_id', 1)
                ->update(['active' => 0]);
        }

        if ($id != $discount->discount_type_id) {
            Discount::where('discount_type_id', $discount->discount_type_id)
                ->update(['active' => 0]);
        }

        $discount->active = $state;
        $discount->update();

        if ($discount) {
            return array('r' => true, 'd' => null, 'm' => trans('messages.screen_discounts_tag31'));
        } else {
            return array('r' => false, 'd' => null, 'm' => trans('messages.screen_discounts_tag32'));
        }
    }

    public function tableFilter(Request $request)
    {
        $obj = $obj = DB::table('discounts')
            ->select('discounts.id', 'discounts.name', 'discounts.active', 'discounts.current_winners', 'discounts.max_winners')->where('discount_type_id', $request["discount_type_id"]);

        return Datatables::of($obj)
            ->addColumn('actions', function ($obj) {
                return '<i class="fa fa-eye iconMini" onClick="clickInfoDiscount(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom"  title="Información" style="cursor:pointer;"></i>
                <i class="fa fa-pencil iconMini" onClick="clickEditDiscount(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Editar" style="cursor:pointer;"></i>
             ';
            })
            ->editColumn('active', function ($obj) {
                if ($obj->active == 0) {
                    return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkDiscount(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo"  /> <span></span>Si </label></div> </label> </div>';
                } else {
                    return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label>   No <input type="checkbox" onChange="chkDiscount(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked=""  />
                         <span></span> Si </label> </div>  </label> </div>';
                }
            })
            ->editColumn('current_winners', function ($obj) {
                if ($obj->current_winners == null) {
                    return '<span> 0 </span>';
                } else {
                    return '<span>' . $obj->current_winners . '</span>';
                }
            })
            ->rawColumns(['active', 'actions', 'current_winners'])
            ->make(true);
    }
}