File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/TicketLogController.php
<?php
namespace App\Http\Controllers;
use \Excel;
use DB;
use DataTables;
use App\Module;
use Illuminate\Http\Request;
use App\Http\Controllers\UtilController;
use App\Http\Controllers\Exports\TicketLogsExport;
class TicketLogController extends Controller
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
public function index()
{
return view('tickets.logs.list');
}
public function tableFilter($from_date = null, $to_date = null)
{
$module = Module::select('id')->where("route", "ticketing")->first();
$instance = new Module();
$modules = json_encode($instance->modulesTreeId(null, $module->id));
$modules = substr($modules, 1, -1);
$modules = explode(',', $modules);
DB::statement("SET sql_mode = ''");
$obj = $obj = DB::table('logs')
->select(
'logs.id',
'logs.description_operation',
'logs.data_operation',
'logs.task',
'logs.created_at',
'modules.name',
'users.first_name',
'users.last_name',
'users.email'
)
->join('modules', 'logs.module_id', '=', 'modules.id')
->leftjoin('users', 'logs.user_id', '=', 'users.id')
->whereIn('logs.module_id', $modules)
->whereNull('logs.deleted_at')
->groupBy('logs.id');
if ($from_date && $from_date != 'null') {
$obj->whereDate('logs.created_at', '>=', $from_date);
}
if ($to_date && $to_date != 'null') {
$obj->whereDate('logs.created_at', '<=', $to_date);
}
DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
\DB::enableQueryLog();
$dataTable = Datatables::of($obj)
->addColumn('actions', function ($obj) {
$actions = "<i class='fa fa-clipboard iconMini' onClick='copyToClipboard(this)' data-operation='" . $obj->data_operation . "' title='Copiar datos'></i>";
return $actions;
})
->editColumn('data_operation', function ($logs) {
return '<pre class="dataOperation" id="json' . $logs->id . '">' . $logs->data_operation . '</pre>';
})
->editColumn('created_at', function ($obj) {
return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
})
->rawColumns(['actions', 'data_operation', 'created_at']);
$response = $dataTable->make(true);
$data = $response->getData();
$data = json_decode(json_encode($data), true);
$queries = \DB::getQueryLog();
$data['queries'] = $queries;
return $data;
}
public function validateExport(Request $request)
{
if ($request['query']) {
$results = $this->util->getGenericData($request["query"], $request["bindings"]);
if (count($results) > 0) {
$name = 'ReporteBoleteriaLogs' . time() . '.xlsx';
Excel::store(new TicketLogsExport($results), $name, 'public');
return response()->json(['success' => true, 'message' => 'Validación OK', 'data' => $name]);
}
}
return response()->json(['success' => false, 'message' => 'No existen datos a exportar']);
}
public function export($name)
{
return $this->util->export($name);
}
}