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