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