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/agile-selling-wpb/app/Http/Controllers/SymbolicTicketController.php
<?php

namespace App\Http\Controllers;

use App\MatchEvent;
use App\SymbolicTicket;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Datatables;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;

class SymbolicTicketController extends Controller
{
    public function index(){
        return view("symbolic_ticket.symbolicTickets");
    }


    public function create(){
        $events = MatchEvent::where('active', true)->get();
        return view("symbolic_ticket.add_symbolic_ticket", compact('events'));
    }

    public function edit($id){
        $obj = SymbolicTicket::find($id);
        $events = MatchEvent::where('active', true)->get();

        return view("symbolic_ticket.edit_symbolic_ticket", compact(['obj', 'events']));
    }

    public function add(Request $request){
        $obj = new SymbolicTicket;
        $obj->name = $request['name'];
        $obj->start_date = $request['start_date'];
        $obj->end_date = $request['end_date'];
        $obj->capacity = $request['capacity'];
        $obj->match_event_id = $request['match_event_id'];

        $obj->save();

        return array('r' => true, 'm' => trans('messages.symbolic_tickets.to_create'), 'd' => $obj->id);
    }
    public function update(Request $request){

        $obj = SymbolicTicket::find($request['id']);

        $obj->name = $request['name'];
        $obj->start_date = $request['start_date'];
        $obj->end_date = $request['end_date'];
        $obj->capacity = $request['capacity'];
        $obj->match_event_id = $request['match_event_id'];

        $obj->update();

        return array('r' => true, 'm' => trans('messages.symbolic_tickets.to_update'), 'd' => $obj->id);
    }

    public function tableFilter(){
        $obj = $obj = DB::table('symbolic_tickets')
        ->select('symbolic_tickets.id', 'symbolic_tickets.name', 'symbolic_tickets.path_image', 'symbolic_tickets.capacity', 'symbolic_tickets.start_date', 'symbolic_tickets.end_date', 'symbolic_tickets.active', 'match_events.name as match_event','symbolic_tickets.created_at')
        ->join('match_events', 'symbolic_tickets.match_event_id', '=', 'match_events.id')->orderBy('created_at','desc');

    return Datatables::of($obj)
      ->editColumn('path_image', function ($obj) {
        if ($obj->path_image == '') {
            return '<div class="media-left">
                    <img src="' . env('AWS_URL') . '/public/no_image.png" class="media-object" alt="' . $obj->name . '">
                    </div>';
        } else {
            return '<div class="media-left">
                    <img src="' . env('AWS_URL') . '/symbolic_tickets/' . $obj->path_image . '" class="media-object" alt="' . $obj->name . '">
                    </div>';
                }
        })
      ->addColumn('actions', function ($obj) {
            return '<i class="fa fa-dollar iconMini " onClick="clickSymbolicTicketPrices(' . $obj->id . ')" data-id="' . $obj->id . '"  title="Precios"></i>
            <i class="fa fa-eye iconMini " onClick="clickInfoSymbolicTicket(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '"  title="Información"></i>
        <i class="fa fa-pencil iconMini " onClick="clickEditSymbolicTicket(' . $obj->id . ')" data-id="' . $obj->id . '"  title="Editar"></i>
        <i class="fa fa-trash iconMini " onClick="clickDeleteSymbolicTicket(' . $obj->id . ')" data-id="' . $obj->id . '"  title="Eliminar"></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="chkSymbolicTicket(' . $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="chkSymbolicTicket(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
            <span></span> Si </label> </div>  </label> </div>';

            }

        })
        ->rawColumns(['active', 'actions', 'path_image'])
        ->make(true);
    }

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

        $obj = SymbolicTicket::find($id);
        $logObj = $obj;
        $obj->active = $state;
        $obj->update();
        // Log
        $this->registerLog(Auth::user()->id, 'Actualizó campo active de ticket symbolic', json_encode($logObj)
            , "Update", 5);
        return array('r' => true, 'm' => trans('messages.symbolic_tickets.update_state'));

    }

    public function saveImage(Request $request){
        $symbolic_ticket_id = $request["symbolic_ticket_id"];
        $extension = $request->file('image')->getClientOriginalExtension();
        $filenametostore = $this->generateRandomString().'.'.$extension;

        Storage::disk('s3')->put(env('S3_SYMBOLIC_TICKETS_PATH').$filenametostore, fopen($request->file('image'), 'r+'), 'public');

        $status = SymbolicTicket::where('id', $symbolic_ticket_id)->update(['path_image' => $filenametostore]);
        if ($status) {
          return array('r' => true, 'd' => null, 'm'=> '');
        }else{
          return array('r' => false,'d' => null, 'm'=> '');
        }
     }

     protected static function generateRandomString($max_length = 12){
        return Str::random($max_length);
    }
}