| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- <?php
- namespace App\Http\Controllers;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Database\Query\Builder;
- use Illuminate\Http\File;
- class LogErrorsController extends Controller{
- private $responseController;
- private $encryptionController;
- private $documentManagementController;
- private $functionsController;
- private $resourcesController;
- public function __construct(){
- $this->responseController = new ResponseController();
- $this->encryptionController = new EncryptionController();
- $this->documentManagementController = new DocumentManagementController();
- $this->functionsController = new FunctionsController();
- $this->resourcesController = new ResourcesController();
- }
- public function getLogYears($idUser, $line) {
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
- }
- $logStoragePath = "C:\\inetpub\\wwwroot\\errors_storage";
- if(!file_exists($logStoragePath)){
- return $this->responseController->makeResponse(true, 'No se encontró el directorio de almacenamiento de los errores.', [], 404);
- }
- $availableYears = scandir($logStoragePath, SCANDIR_SORT_DESCENDING);
- $availableYearsFn = [];
- foreach($availableYears as $year){
- if($year == '.' || $year == '..') continue;
- $availableYearsFn[] = $this->encryptionController->encrypt($year);
- }
- return $this->responseController->makeResponse(false, 'EXITO.', $availableYearsFn);
- }
- public function getLogMonths($year, $idUser, $line){
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
- }
- $year = $this->encryptionController->decrypt($year);
- if(!$year){
- return $this->responseController->makeResponse(true, 'El año enviado está encriptado correctamente.', [], 400);
- }else if(intval($year) <= 0){
- return $this->responseController->makeResponse(true, 'El año enviado es inválido.', [], 400);
- }
- $pathYear = "C:\\inetpub\\wwwroot\\errors_storage\\$year";
- if(!file_exists($pathYear)){
- return $this->responseController->makeResponse(true, 'El año enviado no está registrado en el log de errores.', [], 400);
- }
- $availableMonths = scandir($pathYear);
- $availableMonthsFn = [];
- foreach($availableMonths as $month){
- if($month == '.' || $month == '..') continue;
- $availableMonthsFn[] = $this->encryptionController->encrypt($month);
- }
- return $this->responseController->makeResponse(false, 'EXITO.', $availableMonthsFn);
- }
- public function getLogDays($month, $year, $idUser, $line){
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
- }
- $year = $this->encryptionController->decrypt($year);
- if(!$year){
- return $this->responseController->makeResponse(true, 'El año enviado está encriptado correctamente.', [], 400);
- }else if(intval($year) <= 0){
- return $this->responseController->makeResponse(true, 'El año enviado es inválido.', [], 400);
- }
- $pathYear = "C:\\inetpub\\wwwroot\\errors_storage\\$year";
- if(!file_exists($pathYear)){
- return $this->responseController->makeResponse(true, 'El año enviado no está registrado en el log de errores.', [], 400);
- }
- $month = $this->encryptionController->decrypt($month);
- if(!$month){
- return $this->responseController->makeResponse(true, 'El mes enviado está encriptado correctamente.', [], 400);
- }else if(intval($month) <= 0){
- return $this->responseController->makeResponse(true, 'El mes enviado es inválido.', [], 400);
- }
- $pathMonth = "$pathYear\\$month";
- if(!file_exists($pathMonth)){
- return $this->responseController->makeResponse(true, 'El mes enviado no está registrado en el log de errores.', [], 400);
- }
- $availableDays = scandir($pathMonth);
- $availableDaysFn = [];
- foreach($availableDays as $day){
- if($day == '.' || $day == '..') continue;
- $availableDaysFn[] = $this->encryptionController->encrypt($day);
- }
- return $this->responseController->makeResponse(false, 'EXITO.', $availableDaysFn);
- }
- public function getDayErrors($day, $month, $year, $idUser, $line){
- DB::enableQueryLog();
- $idUser = $this->encryptionController->decrypt($idUser);
- if(!$idUser){
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la solicitud no está encriptado correctamente', [], 400);
- }
- $usr = DB::table('S002V01TUSUA')->where([
- ['USUA_NULI', '=', $line],
- ['USUA_IDUS', '=', $idUser],
- ])->first();
- if(is_null($usr)){
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
- }
- $year = $this->encryptionController->decrypt($year);
- if(!$year){
- return $this->responseController->makeResponse(true, 'El año enviado está encriptado correctamente.', [], 400);
- }else if(intval($year) <= 0){
- return $this->responseController->makeResponse(true, 'El año enviado es inválido.', [], 400);
- }
- $pathYear = "C:\\inetpub\\wwwroot\\errors_storage\\$year";
- if(!file_exists($pathYear)){
- return $this->responseController->makeResponse(true, 'El año enviado no está registrado en el log de errores.', [], 400);
- }
- $month = $this->encryptionController->decrypt($month);
- if(!$month){
- return $this->responseController->makeResponse(true, 'El mes enviado está encriptado correctamente.', [], 400);
- }else if(intval($month) <= 0){
- return $this->responseController->makeResponse(true, 'El mes enviado es inválido.', [], 400);
- }
- $pathMonth = "$pathYear\\$month";
- if(!file_exists($pathMonth)){
- return $this->responseController->makeResponse(true, 'El mes enviado no está registrado en el log de errores.', [], 400);
- }
- $day = $this->encryptionController->decrypt($day);
- if(!$day){
- return $this->responseController->makeResponse(true, 'El día enviado no está encriptado correctamente.', [], 400);
- }else if(intval($day) <= 0){
- return $this->responseController->makeResponse(true, 'El día enviado es inválido.', [], 400);
- }
- $pathDay = "$pathMonth\\$day";
- if(!file_exists($pathDay)){
- return $this->responseController->makeResponse(true, 'El día enviado no está registrado en el log de errores.', [], 400);
- }
- $pathErrors = "$pathDay\\errors_log.json";
- if(!file_exists($pathErrors)){
- return $this->responseController->makeResponse(true, 'No se encontró el log de errores del día solicitado.', [], 400);
- }
- $errorsStr = file_get_contents($pathErrors);
- $errorsArr = json_decode($errorsStr, true);
- $errorsArrFn = [];
- foreach($errorsArr as $k=>$v){
- $errorDateTime = Carbon::createFromTimestamp($k, 'America/Mexico_city');
- $errorDateTimeStr = $errorDateTime->toDateTimeString();
- $errorsByDate = [];
- if(array_key_exists($errorDateTimeStr, $errorsArrFn)){
- $errorsByDate = $errorsArrFn[$errorDateTimeStr];
- }
- foreach($v as $k1=>$v1){
- $idError = $k1 + 1;
- $idErrorEnc = $this->encryptionController->encrypt($idError);
- $module = DB::table('S002V01TMODU')->where([
- ['MODU_IDMO', '=', $v1['MODULO']],
- ['MODU_NULI', '=', $line]
- ])->first();
- if(!is_null($module)){
- $v1['MODULO'] = "{$module->MODU_NOMO} ($v1[MODULO])";
- }
- $user = DB::table('S002V01TUSUA')->where([
- ['USUA_IDUS', '=', $v1['ID_USUARIO']],
- ['USUA_NULI', '=', $line]
- ])->first();
- if(!is_null($user)){
- $v1['ID_USUARIO'] = $this->functionsController->joinName($user->USUA_NOMB, $user->USUA_APPA, $user->USUA_APMA) . " ($v1[ID_USUARIO])";
- }
- $v1['NUM_ERROR'] = $idErrorEnc;
- $v1['MODULO'] = $this->encryptionController->encrypt($v1['MODULO']);
- $v1['ID_USUARIO'] = $this->encryptionController->encrypt($v1['ID_USUARIO']);
- $errorsByDate[] = $v1;
- }
- $errorsArrFn[$errorDateTimeStr] = $errorsByDate;
- }
- $errorsFn = [];
- foreach($errorsArrFn as $k=>$v){
- $errorsFn[] = [
- 'FECHA' => $k,
- 'ERRORES' => $v,
- ];
- }
- return $this->responseController->makeResponse(false, 'EXITO.', $errorsFn);
- }
- }
|