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

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use DB;
use Datatables;
use App\Banner;
use App\Category;
use App\Parameter;
use App\TypeAction;
use App\Http\Controllers\UtilController;

class BannerController extends Controller
{
  private $util;

  public function __construct()
  {
    $this->util = new UtilController();
  }
  public function index()
  {
    return view('banners.banners');
  }

  public function indexAdd()
  {
    $parameters = Parameter::first();

    if ($parameters->sucursal_products) {
      $categories = Category::where('active', 1)->with('sucursal')->get();
    } else {
      $categories = Category::where('active', 1)->get();
    }

    $typeActions = TypeAction::where('active', true)->get();

    return view('banners.addBanner')
      ->with('parameters', $parameters)
      ->with('categories', $categories)
      ->with('typeActions', $typeActions);
  }

  public function create(Request $request)
  {
    $banner = new Banner();
    $banner->name = $request["name"];
    $banner->description = $request["description"];
    $banner->active = true;
    $banner->order = $request["order"];
    $banner->type_action_id = $request["type_action_id"];
    $banner->value = $request["value"];
    $banner->save();

    if ($banner) {
      return array('r' => true, 'd' => array('id' => $banner->id), 'm' => trans('messages.screen_banners_tag14'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag15'));
    }
  }

  public function indexEdit($id)
  {
    $banner = Banner::find($id);
    $parameters = Parameter::first();
    $typeActions = TypeAction::where('active', true)->get();

    if ($parameters->sucursal_products) {
      $categories = Category::where('active', 1)->with('sucursal')->get();
    } else {
      $categories = Category::where('active', 1)->get();
    }

    return view('banners.editBanner')
      ->with('banner', $banner)
      ->with('parameters', $parameters)
      ->with('categories', $categories)
      ->with('typeActions', $typeActions);
  }

  public function update(Request $request)
  {
    $banner = Banner::find($request["id"]);
    $banner->name = $request["name"];
    $banner->description = $request["description"];
    $banner->active = true;
    $banner->order = $request["order"];
    $banner->type_action_id = $request["type_action_id"];
    $banner->value = $request["value"];
    $banner->update();

    if ($banner) {
      return array('r' => true, 'd' => array('id' => $banner->id), 'm' => trans('messages.screen_banners_tag16'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag17'));
    }
  }

  public function saveImage(Request $request)
  {
    $id = $request->id;
    $num_ram = rand(1, 999);
    $extension = $request->file('image')->getClientOriginalExtension();
    $filenametostore = $num_ram . time() . '.' . $extension;
    Storage::disk('s3')->put(config('s3.banners') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');

    $status = Banner::where('id', $id)->update(['image' => $filenametostore]);
    if ($status) {
      return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag14'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag15'));
    }
  }

  public function updateImage(Request $request)
  {
    $id = $request->id;
    $banner = Banner::find($id);
    Storage::disk('s3')->delete(config('s3.banners') . $banner->image);
    $num_ram = rand(1, 999);
    $extension = $request->file('image')->getClientOriginalExtension();
    $filenametostore = $num_ram . time() . '.' . $extension;
    Storage::disk('s3')->put(config('s3.banners') . $filenametostore, fopen($request->file('image'), 'r+'), 'public');

    $status = Banner::where('id', $id)->update(['image' => $filenametostore]);
    if ($status) {
      return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag16'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag17'));
    }
  }

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

    $banner = Banner::find($id);
    $banner->active = $state;
    $banner->update();

    if ($banner) {
      return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag18'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag19'));
    }
  }

  public function deleteBanner(Request $request)
  {
    $banner = Banner::find($request['id']);
    $banner->delete();

    if ($banner) {
      return array('r' => true, 'd' => null, 'm' => trans('messages.screen_banners_tag20'));
    } else {
      return array('r' => false, 'd' => null, 'm' => trans('messages.screen_banners_tag21'));
    }
  }

  public function tableFilter()
  {
    $obj = $obj = DB::table('banners')
      ->select('banners.id', 'banners.image', 'banners.name', 'banners.order', 'type_actions.name as name_action', 'banners.value', 'banners.active')
      ->leftJoin('type_actions', 'banners.type_action_id', '=', 'type_actions.id')->whereNull('banners.deleted_at');


    return Datatables::of($obj)
      ->editColumn('image', function ($obj) {
        if (!$obj->image) {
          return $this->util->generateEmptyImageColumn();
        } else {
          return $this->util->generateImageColumnRound(config('filesystems.disks.s3.url') . '/banners/' . $obj->image, $obj->name, 'logo' . $obj->id);
        }
      })
      ->addColumn('actions', function ($obj) {
        return '
                <i class="fa fa-pencil iconMini" onClick="clickEditBanner(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Editar" style="cursor:pointer;"></i>
                <i class="fa fa-trash iconMini" onClick="clickDeleteBanner(' . $obj->id . ')" data-id="' . $obj->id . '" data-toggle="tooltip" data-placement="bottom" title="Eliminar" 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="chkBanner(' . $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="chkBanner(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" /><span></span> Si </label> </div>  </label> </div>';
        }
      })
      ->rawColumns(['active', 'actions', 'image'])
      ->make(true);
  }
}