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/comfama.sports-crowd.com/app/Http/Controllers/DiscountController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
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(){
        // $rol = Auth::user()->rol->id;
        // if ($rol == 1 ||  $rol == 6) {
            $discountTypes = DiscountType::where('active', 1)->orderBy('id','ASC')->get();
            return view('discounts.discounts')->with('discountTypes',$discountTypes);
        // }else{
        //     return redirect()->back();
        // }
    }

    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);
     }

}