|
|
@@ -10,1329 +10,1325 @@ use Illuminate\Support\Carbon;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
|
|
class DocumentManagementController extends Controller{
|
|
|
- private $responseController;
|
|
|
- private $encryptionController;
|
|
|
- private $functionsController;
|
|
|
-
|
|
|
- public function __construct(){
|
|
|
- $this->responseController = new ResponseController();
|
|
|
- $this->encryptionController = new EncryptionController();
|
|
|
- $this->functionsController = new FunctionsController();
|
|
|
- }
|
|
|
-
|
|
|
- public function downloadFile($token, $idUser, $line){
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $tokenInfo = DB::table('S002V01TTODE')->where([
|
|
|
- ['TODE_NULI', '=', $line],
|
|
|
- ['TODE_TOKE', '=', $token]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($tokenInfo)){
|
|
|
- return $this->responseController->makeResponse(true, 'El token de descarga no existe.', [], 404);
|
|
|
- }else if($tokenInfo->TODE_ESTA != 'Activo'){
|
|
|
- return $this->responseController->makeResponse(true, 'El token de descarga ya fue utilizado.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $token = $this->encryptionController->shortDec($token);
|
|
|
- if(!$token){
|
|
|
- return $this->responseController->makeResponse(true, 'El token de descarga no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $tokenArr = explode("|", $token);
|
|
|
- if(count($tokenArr) != 3){
|
|
|
- return $this->responseController->makeResponse(true, 'Estructura de token inválida.', [], 401);
|
|
|
- }else if(intval($tokenArr[1]) != $tokenInfo->TODE_LLAL){
|
|
|
- return $this->responseController->makeResponse(true, 'Token inválido.', [], 401);
|
|
|
- }else if($tokenArr[2] != 'syp'){
|
|
|
- return $this->responseController->makeResponse(true, 'Token inválido.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ['USUA_NULI', '=', $line]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $id = $tokenArr[0];
|
|
|
- $codiArr = explode("=", $id);
|
|
|
- $prefArr = explode("-", $codiArr[0]);
|
|
|
- $suffArr = explode(".", $codiArr[2]);
|
|
|
-
|
|
|
- $nuli = intval($prefArr[0]);
|
|
|
- $como = $prefArr[1];
|
|
|
- $cldo = $prefArr[2];
|
|
|
- $fecr = $prefArr[3];
|
|
|
- $nuse = intval($prefArr[4]);
|
|
|
- $nuve = $codiArr[1];
|
|
|
- $noar = $suffArr[0];
|
|
|
- $exte = $suffArr[1];
|
|
|
-
|
|
|
- $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
- DB::table('S002V01TTODE')->where([
|
|
|
- ['TODE_IDTO', '=', $tokenInfo->TODE_IDTO],
|
|
|
- ['TODE_NULI', '=', $line]
|
|
|
- ])->update([
|
|
|
- 'TODE_ESTA' => 'Usado',
|
|
|
- 'TODE_USDE' => $idUser,
|
|
|
- 'TODE_FEDE' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $nuli],
|
|
|
- ['AFAL_COMO', '=', $como],
|
|
|
- ['AFAL_CLDO', '=', $cldo],
|
|
|
- ['AFAL_FECR', '=', $fecr],
|
|
|
- ['AFAL_NUSE', '=', $nuse],
|
|
|
- ['AFAL_NUVE', '=', $nuve],
|
|
|
- ['AFAL_NOAR', '=', $noar],
|
|
|
- ['AFAL_EXTE', '=', $exte],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no existe.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- return response()->download($file->AFAL_UBIC, $id);
|
|
|
- }
|
|
|
-
|
|
|
- public function getDownloadToken($idFile, $idUser, $line){
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->shortDec($idFile);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ['USUA_NULI', '=', $line]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $codiArr = explode("=", $idFile);
|
|
|
- $prefArr = explode("-", $codiArr[0]);
|
|
|
- $suffArr = explode(".", $codiArr[2]);
|
|
|
-
|
|
|
- $nuli = intval($prefArr[0]);
|
|
|
- $como = $prefArr[1];
|
|
|
- $cldo = $prefArr[2];
|
|
|
- $fecr = $prefArr[3];
|
|
|
- $nuse = intval($prefArr[4]);
|
|
|
- $nuve = $codiArr[1];
|
|
|
- $noar = $suffArr[0];
|
|
|
- $exte = $suffArr[1];
|
|
|
-
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $nuli],
|
|
|
- ['AFAL_COMO', '=', $como],
|
|
|
- ['AFAL_CLDO', '=', $cldo],
|
|
|
- ['AFAL_FECR', '=', $fecr],
|
|
|
- ['AFAL_NUSE', '=', $nuse],
|
|
|
- ['AFAL_NUVE', '=', $nuve],
|
|
|
- ['AFAL_NOAR', '=', $noar],
|
|
|
- ['AFAL_EXTE', '=', $exte],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no existe.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $rand = rand(0, 99999);
|
|
|
- $tokenArr = [$idFile, $rand, "syp"];
|
|
|
- $tokenStr = join('|', $tokenArr);
|
|
|
-
|
|
|
- $token = $this->encryptionController->shortEnc($tokenStr);
|
|
|
- $token = str_replace("+", "=P=", $token);
|
|
|
- $token = str_replace("/", "=S=", $token);
|
|
|
- $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
-
|
|
|
- DB::table('S002V01TTODE')->insert([
|
|
|
- 'TODE_NULI' => $line,
|
|
|
- 'TODE_TOKE' => $token,
|
|
|
- 'TODE_CODO' => $idFile,
|
|
|
- 'TODE_LLAL' => $rand,
|
|
|
- 'TODE_USRE' => $idUser,
|
|
|
- 'TODE_FERE' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- return $this->responseController->makeResponse(false, 'EXITO', ['TOKEN' => $token]);
|
|
|
- }
|
|
|
-
|
|
|
- public function getFileInfo($id, $idUser, $line){
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $id = $this->encryptionController->shortDec($id);
|
|
|
- if(!$id){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ['USUA_NULI', '=', $line]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idArr = explode("=", $id);
|
|
|
- $codiArr = explode("-", $idArr[0]);
|
|
|
-
|
|
|
- $nuli = $line;
|
|
|
- $como = $codiArr[1];
|
|
|
- $cldo = $codiArr[2];
|
|
|
- $fecr = $codiArr[3];
|
|
|
- $nuse = intval($codiArr[4]);
|
|
|
- $nuve = intval($idArr[1]);
|
|
|
-
|
|
|
- $fileInfo = DB::table('S002V01TAFAL')->select([
|
|
|
- 'AFAL_NOAR AS NOMBREARCHIVO',
|
|
|
- 'AFAL_EXTE AS EXTENSION',
|
|
|
- 'AFAL_TAMA AS PESO',
|
|
|
- 'AFAL_USAC AS ACCESO',
|
|
|
- 'AFAL_ESTA AS ESTADO'
|
|
|
- ])->where([
|
|
|
- ['AFAL_NULI', '=', $nuli],
|
|
|
- ['AFAL_COMO', '=', $como],
|
|
|
- ['AFAL_CLDO', '=', $cldo],
|
|
|
- ['AFAL_FECR', '=', $fecr],
|
|
|
- ['AFAL_NUSE', '=', $nuse],
|
|
|
- ['AFAL_NUVE', '=', $nuve],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($fileInfo)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }else if($fileInfo->ESTADO != 'Activo'){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está disponible.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- return $this->responseController->makeResponse(false, 'EXITO', $fileInfo);
|
|
|
- }
|
|
|
-
|
|
|
- public function getFiles($mod, $cla, $sda, $eda, $dna, $ext, $mode, $idUser, $line){
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
- }
|
|
|
-
|
|
|
- $availableModes = ['my-files', 'shared', 'deleted'];
|
|
|
- if(!in_array($mode, $availableModes)){
|
|
|
- return $this->responseController->makeResponse(true, 'El modo seleccionado es inválido.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $whereParameters = [
|
|
|
- ['AFAL_NULI', '=', $line]
|
|
|
- ];
|
|
|
-
|
|
|
- if($mod != '-'){
|
|
|
- $whereParameters[] = ['AFAL_COMO', '=', $mod];
|
|
|
- }
|
|
|
-
|
|
|
- if($cla != '-'){
|
|
|
- $whereParameters[] = ['AFAL_CLDO', '=', $cla];
|
|
|
- }
|
|
|
-
|
|
|
- $files = DB::table('S002V01TAFAL')->where($whereParameters)->get()->all();
|
|
|
- $filesDateFiltered = [];
|
|
|
- foreach($files as $file){
|
|
|
- $dateArr = str_split($file->AFAL_FECR, 2);
|
|
|
- $dateStr = "20$dateArr[0]-$dateArr[1]-$dateArr[2]";
|
|
|
- $dateObj = new Carbon($dateStr, 'America/Guatemala');
|
|
|
-
|
|
|
- if($sda != '-' && $eda == '-'){
|
|
|
- $dateIniArr = str_split($sda, 2);
|
|
|
- $dateIniStr = "20$dateIniArr[0]-$dateIniArr[1]-$dateIniArr[2]";
|
|
|
- $dateIniObj = new Carbon($dateIniStr, 'America/Guatemala');
|
|
|
-
|
|
|
- if($dateIniObj->lte($dateObj)){
|
|
|
- $filesDateFiltered[] = $file;
|
|
|
- }
|
|
|
- }else if($sda == '-' && $eda != '-'){
|
|
|
- $dateFinArr = str_split($eda, 2);
|
|
|
- $dateFinStr = "20$dateFinArr[0]-$dateFinArr[1]-$dateFinArr[2]";
|
|
|
- $dateFinObj = new Carbon($dateFinStr, 'America/Guatemala');
|
|
|
-
|
|
|
- if($dateFinObj->gte($dateObj)){
|
|
|
- $filesDateFiltered[] = $file;
|
|
|
- }
|
|
|
- }else if($sda != '-' && $eda != '-'){
|
|
|
- $dateIniArr = str_split($sda, 2);
|
|
|
- $dateIniStr = "20$dateIniArr[0]-$dateIniArr[1]-$dateIniArr[2]";
|
|
|
- $dateIniObj = new Carbon($dateIniStr, 'America/Guatemala');
|
|
|
-
|
|
|
- $dateFinArr = str_split($eda, 2);
|
|
|
- $dateFinStr = "20$dateFinArr[0]-$dateFinArr[1]-$dateFinArr[2]";
|
|
|
- $dateFinObj = new Carbon($dateFinStr, 'America/Guatemala');
|
|
|
-
|
|
|
- if($dateFinObj->gte($dateObj) && $dateIniObj->lte($dateObj)){
|
|
|
- $filesDateFiltered[] = $file;
|
|
|
- }
|
|
|
- }else{
|
|
|
- $filesDateFiltered[] = $file;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $filesNameFiltered = [];
|
|
|
- foreach($filesDateFiltered as $file){
|
|
|
- if($dna != '-' && $ext == '-'){
|
|
|
- if(str_contains($file->AFAL_NOAR, $dna)){
|
|
|
- $filesNameFiltered[] = $file;
|
|
|
- }
|
|
|
- }else if($dna == '-' && $ext != '-'){
|
|
|
- //$extArr = explode(',', $ext);
|
|
|
- $extArr = json_decode($ext);
|
|
|
- if(in_array($file->AFAL_EXTE, $extArr)){
|
|
|
- $filesNameFiltered[] = $file;
|
|
|
- }
|
|
|
- }else if($dna != '-' && $ext != '-'){
|
|
|
- $extArr = json_decode($ext);
|
|
|
- if(str_contains($file->AFAL_NOAR, $dna) && in_array($file->AFAL_EXTE, $extArr)){
|
|
|
- $filesNameFiltered[] = $file;
|
|
|
- }
|
|
|
- }else{
|
|
|
- $filesNameFiltered[] = $file;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $filesAccessFiltered = [];
|
|
|
- foreach($filesNameFiltered as $file){
|
|
|
- $access = json_decode($file->AFAL_USAC);
|
|
|
-
|
|
|
- if($mode == 'my-files' && $file->AFAL_USRE == $idUser && $file->AFAL_ESTA == 'Activo'){
|
|
|
- $filesAccessFiltered[] = $file;
|
|
|
- }else if($mode == 'shared' && in_array($idUser, $access) && $file->AFAL_USRE != $idUser && $file->AFAL_ESTA == 'Activo'){
|
|
|
- $filesAccessFiltered[] = $file;
|
|
|
- }else if($mode == 'deleted' && $file->AFAL_ESTA == 'Eliminado' && ($file->AFAL_USRE == $idUser || in_array($idUser, $access))){
|
|
|
- $filesAccessFiltered[] = $file;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $filesF = [];
|
|
|
- foreach($filesAccessFiltered as $file){
|
|
|
- $linea = $file->AFAL_NULI < 10 ? "0" . $file->AFAL_NULI : "" . $file->AFAL_NULI . "";
|
|
|
- $secu = "";
|
|
|
-
|
|
|
- for($i = strlen($file->AFAL_NUSE); $i < 6; $i++){
|
|
|
- $secu .= "0";
|
|
|
- }
|
|
|
-
|
|
|
- $secu .= $file->AFAL_NUSE;
|
|
|
- $vers = $file->AFAL_NUVE < 10 ? "0" . $file->AFAL_NUVE : "" . $file->AFAL_NUVE . "";
|
|
|
- $fName = $file->AFAL_NOAR . '.' . $file->AFAL_EXTE;
|
|
|
-
|
|
|
- $usrReg = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $line],
|
|
|
- ['USUA_IDUS', '=', $file->AFAL_USRE],
|
|
|
- ])->first();
|
|
|
- $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
|
|
|
- $nameReg .= " (" . $file->AFAL_USRE . ")";
|
|
|
-
|
|
|
- $access = json_decode($file->AFAL_USAC, true);
|
|
|
- foreach($access as $k=>$v){
|
|
|
- $usrAcc = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $line],
|
|
|
- ['USUA_IDUS', '=', $v],
|
|
|
- ])->first();
|
|
|
- $nameAcc = $this->functionsController->joinName($usrAcc->USUA_NOMB, $usrAcc->USUA_APPA, $usrAcc->USUA_APMA);
|
|
|
- $nameAcc .= " (" . $v . ")";
|
|
|
-
|
|
|
- $access[$k] = $nameAcc;
|
|
|
- }
|
|
|
-
|
|
|
- $accessStr = json_encode($access);
|
|
|
-
|
|
|
- $filesF[] = [
|
|
|
- 'CODIGO' => $linea . '-' . $file->AFAL_COMO . '-' . $file->AFAL_CLDO . '-' . $file->AFAL_FECR . '-' . $secu,
|
|
|
- 'VERSION' => $vers,
|
|
|
- 'NOMBRE' => $fName,
|
|
|
- 'TAMANIO' => $file->AFAL_TAMA,
|
|
|
- 'USRREG' => $nameReg,
|
|
|
- 'ACCESO' => $accessStr
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $line,
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Consulta',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los documentos registrados.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO", $filesF);
|
|
|
- }
|
|
|
-
|
|
|
- public function uploadTempFile(Request $request){
|
|
|
- DB::enableQueryLog();
|
|
|
- if(!$request->hasFile('file')){
|
|
|
- return $this->responseController->makeResponse(true, "No se envió ningún archivo.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'linea' => 'required|integer'
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ['USUA_NULI', '=', $form['linea']]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $originalFileName = $request->file('file')->getClientOriginalName();
|
|
|
- $extension = $request->file('file')->extension();
|
|
|
- $size = $request->file('file')->getSize();
|
|
|
-
|
|
|
- $extArr = explode(".", $originalFileName);
|
|
|
- $extArr = array_reverse($extArr);
|
|
|
- $extStr = $extArr[0];
|
|
|
-
|
|
|
- $isValid = $this->functionsController->checkFileSize($extStr, $size);
|
|
|
- if ( $isValid && $extStr === 'xml') {
|
|
|
- $isValid = $this->functionsController->checkInvoice($request->file('file')->getContent());
|
|
|
- }
|
|
|
-
|
|
|
- if($isValid){
|
|
|
- $dir = str_replace("app\\Http\\Controllers", "storage\\app", __DIR__);
|
|
|
- $tmpPath = $request->file('file')->store('tempFiles');
|
|
|
- $tmpPath = str_replace("/", "\\", $tmpPath);
|
|
|
-
|
|
|
- $location = "$dir\\$tmpPath";
|
|
|
- $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
-
|
|
|
- $fileID = DB::table('S002V01TARTE')->insertGetId([
|
|
|
- 'ARTE_NULI' => $form['linea'],
|
|
|
- 'ARTE_NOAR' => $originalFileName,
|
|
|
- 'ARTE_EXTE' => $extension,
|
|
|
- 'ARTE_TAMA' => $size,
|
|
|
- 'ARTE_UBTE' => $location,
|
|
|
- 'ARTE_USRE' => $idUser,
|
|
|
- 'ARTE_FERE' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P05REDO',
|
|
|
- 'Registro',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") subió de manera temporal el archivo $originalFileName.",
|
|
|
- $idUser,
|
|
|
- $nowStr,
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
-
|
|
|
- return $this->responseController->makeresponse(false, "EXITO", [
|
|
|
- 'idArchivo' => $this->encryptionController->encrypt($fileID),
|
|
|
- ]);
|
|
|
- }else{
|
|
|
- return $this->responseController->makeResponse(true, "El archivo enviado tiene una extensión no soportada o sobrepasa el límite de peso de su categoría.", [], 400);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function deleteTempFile(Request $request){
|
|
|
- DB::enableQueryLog();
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'id_file' => 'required|string',
|
|
|
- 'linea' => 'required|integer'
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ['USUA_NULI', '=', $form['linea']]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, "El id del archivo que desea eliminar no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $file = DB::table('S002V01TARTE')->where([
|
|
|
- ['ARTE_IDAR', '=', $idFile],
|
|
|
- ['ARTE_NULI', '=', $form['linea']]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo que desea eliminar no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- if(file_exists($file->ARTE_UBTE)){
|
|
|
- unlink($file->ARTE_UBTE);
|
|
|
- }
|
|
|
-
|
|
|
- $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
- DB::table('S002V01TARTE')->where([
|
|
|
- ['ARTE_IDAR', '=', $idFile],
|
|
|
- ['ARTE_NULI', '=', $form['linea']]
|
|
|
- ])->update([
|
|
|
- 'ARTE_ESTA' => 'Eliminado',
|
|
|
- 'ARTE_USMO' => $idUser,
|
|
|
- 'ARTE_FEMO' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P05REDO',
|
|
|
- 'Eliminación',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el archivo " . $file->ARTE_NOAR,
|
|
|
- $idUser,
|
|
|
- $nowStr,
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO");
|
|
|
- }
|
|
|
-
|
|
|
- public function saveFinalFile(Request $request) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'id_file' => 'required|string',
|
|
|
- 'linea' => 'required|integer',
|
|
|
- 'module' => 'required|string|max:4',
|
|
|
- 'clasification' => 'required|string|max:2',
|
|
|
- 'has_order' => 'required|string|in:S,N',
|
|
|
- 'id_order' => 'required_if:has_order,=,S|string',
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $form['linea']],
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, "El id del archivo solicitado no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $tempFile = DB::table('S002V01TARTE')->where([
|
|
|
- ['ARTE_NULI', '=', $form['linea']],
|
|
|
- ['ARTE_IDAR', '=', $idFile],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($tempFile)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo consultado no está registrado', [], 404);
|
|
|
- }else if($tempFile->ARTE_ESTA == 'Eliminado'){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo consultado está eliminado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $fileResponse = $this->moveFinalFile(
|
|
|
- intval($form['linea']),
|
|
|
- $form['module'],
|
|
|
- $form['clasification'],
|
|
|
- $tempFile,
|
|
|
- $idUser,
|
|
|
- );
|
|
|
-
|
|
|
- if(!$fileResponse[0]){
|
|
|
- return $this->responseController->makeResponse(true, $fileResponse[1], [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
-
|
|
|
- if($form['has_order'] == 'S' && ($form['module'] == 'GMPR' || $form['module'] == 'GMCO')){
|
|
|
- $idOrder = $this->encryptionController->decrypt($form['id_order']);
|
|
|
- if(!$idOrder){
|
|
|
- return $this->responseController->makeResponse(true, "El id de la orden relacionada no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $order = DB::table('S002V01TOTPR')->where([
|
|
|
- ['OTPR_IDOT', '=', $idOrder],
|
|
|
- ['OTPR_NULI', '=', $form['linea']]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($order)){
|
|
|
- return $this->responseController->makeResponse(true, 'La orden solicitada no está registrada', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $documentsArr = json_decode($order->OTPR_DONE, true);
|
|
|
- $fileCodeEnc = $this->encryptionController->encrypt($fileResponse[1]);
|
|
|
-
|
|
|
- $documentsArr[] = $fileCodeEnc;
|
|
|
- $documentsStr = json_encode($documentsArr);
|
|
|
-
|
|
|
- DB::table('S002V01TOTPR')->where([
|
|
|
- ['OTPR_IDOT', '=', $idOrder],
|
|
|
- ['OTPR_NULI', '=', $form['linea']]
|
|
|
- ])->update([
|
|
|
- 'OTPR_DONE' => $documentsStr,
|
|
|
- 'OTPR_USMO' => $idUser,
|
|
|
- 'OTPR_FEMO' => $nowStr
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P05REDO',
|
|
|
- 'Registro',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") registró el archivo " . $tempFile->ARTE_NOAR,
|
|
|
- $idUser,
|
|
|
- $nowStr,
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO");
|
|
|
- }
|
|
|
-
|
|
|
- public function moveFinalFile(int $line, string $como, string $cldo, object $tempFile, string $idUser) {
|
|
|
- $modulesCodes = [
|
|
|
- "GEAD","GIST","GMPR","GMCO","GEEQ","COAC","GEPR",
|
|
|
- "ANFA","PCSA","GPRS","GEPR","GDEL","ADSI","USPE"
|
|
|
- ];
|
|
|
-
|
|
|
- $clasifications = [
|
|
|
- "AV","AU","CA","CE","CO","DP","FA","FI",
|
|
|
- "FO","IN","LA","OR","PL","RE","VI"
|
|
|
- ];
|
|
|
-
|
|
|
- if(!in_array($como, $modulesCodes)){
|
|
|
- return [false, "El código $como es inválido."];
|
|
|
- }
|
|
|
-
|
|
|
- if(!in_array($cldo, $clasifications)){
|
|
|
- return [false, "La clasificación $cldo es inválida."];
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $dateTimeArr = explode(' ', $nowStr);
|
|
|
- $dateArr = explode('-', $dateTimeArr[0]);
|
|
|
- $year = substr($dateArr[0], 2);
|
|
|
-
|
|
|
- $fecr = "$year$dateArr[1]$dateArr[2]";
|
|
|
- $sec = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_COMO', '=', $como],
|
|
|
- ['AFAL_CLDO', '=', $cldo],
|
|
|
- ['AFAL_NULI', '=', $line],
|
|
|
- ])->orderBy('AFAL_NUSE', 'desc')->first();
|
|
|
-
|
|
|
- $nuse = 1;
|
|
|
- if(!is_null($sec)){
|
|
|
- $nuse = intval($sec->AFAL_NUSE) + 1;
|
|
|
- }
|
|
|
-
|
|
|
- $fileNameArr = explode('.', $tempFile->ARTE_NOAR);
|
|
|
- array_pop($fileNameArr);
|
|
|
-
|
|
|
- $noar = implode('.', $fileNameArr);
|
|
|
- $exte = $tempFile->ARTE_EXTE;
|
|
|
-
|
|
|
- $ver = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $line],
|
|
|
- ['AFAL_COMO', '=', $como],
|
|
|
- ['AFAL_CLDO', '=', $cldo],
|
|
|
- ['AFAL_NOAR', '=', $noar],
|
|
|
- ['AFAL_EXTE', '=', $exte],
|
|
|
- ])->orderBy('AFAL_NUVE', 'desc')->first();
|
|
|
-
|
|
|
- $nuve = 1;
|
|
|
- if(!is_null($ver)){
|
|
|
- $nuve = intval($sec->AFAL_NUVE) + 1;
|
|
|
- }
|
|
|
-
|
|
|
- $tama = $tempFile->ARTE_TAMA;
|
|
|
- $ubiFileArr = explode('tempFiles', $tempFile->ARTE_UBTE);
|
|
|
- $ubic = $ubiFileArr[0] . 'files' . $ubiFileArr[1];
|
|
|
-
|
|
|
- if(file_exists($tempFile->ARTE_UBTE)){
|
|
|
- rename($tempFile->ARTE_UBTE, $ubic);
|
|
|
- DB::table('S002V01TARTE')->where([
|
|
|
- ['ARTE_IDAR', '=', $tempFile->ARTE_IDAR],
|
|
|
- ['ARTE_NULI', '=', $line],
|
|
|
- ])->update([
|
|
|
- 'ARTE_ESTA' => 'Eliminado',
|
|
|
- 'ARTE_USMO' => $idUser,
|
|
|
- 'ARTE_FEMO' => $nowStr,
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- $code = $line < 10 ? "0$line" : "$line";
|
|
|
- $code .= "-$como-$cldo-$fecr-";
|
|
|
-
|
|
|
- for($i = strlen($nuse); $i < 6; $i++){
|
|
|
- $code .= "0";
|
|
|
- }
|
|
|
-
|
|
|
- $code .= "$nuse=";
|
|
|
- $code .= $nuve < 10 ? "0$nuve=" : "$nuve=";
|
|
|
- $code .= "$noar.$exte";
|
|
|
-
|
|
|
- $usac = json_encode([$idUser]);
|
|
|
-
|
|
|
- DB::table('S002V01TAFAL')->insert([
|
|
|
- 'AFAL_NULI' => $line,
|
|
|
- 'AFAL_COMO' => $como,
|
|
|
- 'AFAL_CLDO' => $cldo,
|
|
|
- 'AFAL_FECR' => $fecr,
|
|
|
- 'AFAL_NUSE' => $nuse,
|
|
|
- 'AFAL_NUVE' => $nuve,
|
|
|
- 'AFAL_NOAR' => $noar,
|
|
|
- 'AFAL_EXTE' => $exte,
|
|
|
- 'AFAL_TAMA' => $tama,
|
|
|
- 'AFAL_UBIC' => $ubic,
|
|
|
- 'AFAL_USAC' => $usac,
|
|
|
- 'AFAL_USRE' => $idUser,
|
|
|
- 'AFAL_FERE' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- return [true, $code];
|
|
|
- }
|
|
|
-
|
|
|
- public function getPublicDocumentURL($id, $idUser, $line) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
- }
|
|
|
-
|
|
|
- $id = $this->encryptionController->shortDec($id);
|
|
|
- if(!$id){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idArr = explode('=', $id);
|
|
|
- $codeArr = explode('-', $idArr[0]);
|
|
|
-
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $ubicArr = explode('storage', $file->AFAL_UBIC);
|
|
|
- $publicUbi = "$ubicArr[0]public\\public_files\\$id";
|
|
|
-
|
|
|
- if(!file_exists($publicUbi)){
|
|
|
- copy($file->AFAL_UBIC, $publicUbi);
|
|
|
- }
|
|
|
- // $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', 'http://git.ittec.mx/', $publicUbi);
|
|
|
- $publicUbiStr = str_replace('C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\public', 'http://192.168.100.105:8000', $publicUbi);
|
|
|
- $publicUbiStr = str_replace('\\', '/', $publicUbiStr);
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $line,
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Consulta',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó la URL pública del archivo $id.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO", ['public_uri' => $publicUbiStr]);
|
|
|
- }
|
|
|
-
|
|
|
- public function getFileAccess($id, $idUser, $line) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
- }
|
|
|
-
|
|
|
- $id = $this->encryptionController->shortDec($id);
|
|
|
- if(!$id){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idArr = explode('=', $id);
|
|
|
- $codeArr = explode('-', $idArr[0]);
|
|
|
-
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $owner = $this->encryptionController->encrypt($file->AFAL_USRE);
|
|
|
- $permissionsArr = json_decode($file->AFAL_USAC, true);
|
|
|
- foreach($permissionsArr as $k=>$v){
|
|
|
- $idEnc = $this->encryptionController->encrypt($v);
|
|
|
- $permissionsArr[$k] = $idEnc;
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $line,
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Consulta',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios con acceso al archivo $id.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO", [
|
|
|
- 'access' => $permissionsArr,
|
|
|
- 'owner' => $owner
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
- public function updateFilePermissions(Request $request) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'id_file' => 'required|string',
|
|
|
- 'linea' => 'required|integer',
|
|
|
- 'permissions' => 'required|json',
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $form['linea']],
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idFileArr = explode('=', $idFile);
|
|
|
- $codeArr = explode('-', $idFileArr[0]);
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $permissionsArr = json_decode($file->AFAL_USAC, true);
|
|
|
- if(!in_array($idUser, $permissionsArr)){
|
|
|
- $usrName = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA) . " ($idUser)";
|
|
|
- return $this->responseController->makeResponse(true, "El usuario $usrName no tiene permisos para modificar el archivo $idFile.", [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $newPermissionsArr = json_decode($form['permissions'], true);
|
|
|
- if(count($newPermissionsArr) <= 0){
|
|
|
- return $this->responseController->makeResponse(true, "El arreglo de permisos está vacío.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $newPermissionsArrDec = [];
|
|
|
- foreach($newPermissionsArr as $val){
|
|
|
- $idDec = $this->encryptionController->decrypt($val);
|
|
|
- if(!$idDec){
|
|
|
- return $this->responseController->makeResponse(true, "Alguno de los ID's enviados no fue encriptado correctamente.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $newPermissionsArrDec[] = $idDec;
|
|
|
- }
|
|
|
-
|
|
|
- if(!in_array($file->AFAL_USRE, $newPermissionsArrDec)){
|
|
|
- return $this->responseController->makeResponse(true, "El arreglo de permisos no incluye el ID del propietario.", [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $usac = json_encode($newPermissionsArrDec);
|
|
|
- DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->update([
|
|
|
- 'AFAL_USAC' => $usac,
|
|
|
- 'AFAL_USMO' => $idUser,
|
|
|
- 'AFAL_FEMO' => $nowStr,
|
|
|
- ]);
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Actualización',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los usuarios con acceso del archivo $idFile.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO");
|
|
|
- }
|
|
|
-
|
|
|
- public function deleteFile(Request $request) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'id_file' => 'required|string',
|
|
|
- 'linea' => 'required|integer',
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $form['linea']],
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idFileArr = explode('=', $idFile);
|
|
|
- $codeArr = explode('-', $idFileArr[0]);
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }else if($file->AFAL_ESTA == 'Eliminado'){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado está eliminado.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->update([
|
|
|
- 'AFAL_ESTA' => 'Eliminado',
|
|
|
- 'AFAL_USMO' => $idUser,
|
|
|
- 'AFAL_FEMO' => $nowStr
|
|
|
- ]);
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Eliminación',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el archivo $idFile.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO");
|
|
|
- }
|
|
|
-
|
|
|
- public function getAssociatedWorkOrders($idFile, $idUser, $line) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $idUser = $this->encryptionController->shortDec($idUser);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->shortDec($idFile);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idFileArr = explode('=', $idFile);
|
|
|
- $codeArr = explode('-', $idFileArr[0]);
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $line],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $orders = DB::table('S002V01TOTPR')
|
|
|
- ->select([
|
|
|
- 'OTPR_IDOT AS IDORDEN',
|
|
|
- 'OTPR_EQIN AS EQUIPAMIENTO',
|
|
|
- 'OTPR_ACAS AS ACTIVADOR',
|
|
|
- 'OTPR_CLAS AS CLASIFICACION',
|
|
|
- 'ACTI_PRIO AS PRIORIDAD',
|
|
|
- 'ACTI_TIAC AS TIPOACTIVADOR'
|
|
|
- ])->join('S002V01TACTI', 'OTPR_ACAS', '=', 'ACTI_IDCO')
|
|
|
- ->where('OTPR_NULI', '=', $line)
|
|
|
- ->whereJsonContains('OTPR_DONE', $idFile)->get()->all();
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $line,
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Consulta',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") consultó las órdenes de trabajo relacionadas al archivo $idFile.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO", $orders);
|
|
|
- }
|
|
|
-
|
|
|
- public function changeAssociationStatus(Request $request) {
|
|
|
- DB::enableQueryLog();
|
|
|
-
|
|
|
- $validator = Validator::make($request->all(), [
|
|
|
- 'id_user' => 'required|string',
|
|
|
- 'linea' => 'required|integer',
|
|
|
- 'id_file' => 'required|string',
|
|
|
- 'action' => 'required|string|in:disassociate,associate',
|
|
|
- 'id_order' => 'required|string',
|
|
|
- ]);
|
|
|
-
|
|
|
- if($validator->fails()){
|
|
|
- return $this->responseController->makeResponse(
|
|
|
- true,
|
|
|
- "Se encontraron uno o más errores.",
|
|
|
- $this->responseController->makeErrors(
|
|
|
- $validator->errors()->messages()
|
|
|
- ),
|
|
|
- 401
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- $form = $request->all();
|
|
|
- $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
- if(!$idUser){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $usr = DB::table('S002V01TUSUA')->where([
|
|
|
- ['USUA_NULI', '=', $form['linea']],
|
|
|
- ['USUA_IDUS', '=', $idUser],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($usr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
- }
|
|
|
-
|
|
|
- $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
- if(!$idFile){
|
|
|
- return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $idFileArr = explode('=', $idFile);
|
|
|
- $codeArr = explode('-', $idFileArr[0]);
|
|
|
- $file = DB::table('S002V01TAFAL')->where([
|
|
|
- ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
- ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
- ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
- ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
- ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
- ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($file)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
- }else if($file->AFAL_ESTA == 'Eliminado'){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo solicitado está eliminado.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $idOrder = $this->encryptionController->decrypt($form['id_order']);
|
|
|
- if(!$idOrder){
|
|
|
- return $this->responseController->makeResponse(true, 'El ID de la orden solicitada no fue encriptado correctamente.', [], 400);
|
|
|
- }
|
|
|
-
|
|
|
- $workOrder = DB::table('S002V01TOTPR')->where([
|
|
|
- ['OTPR_NULI', '=', $form['linea']],
|
|
|
- ['OTPR_IDOT', '=', $idOrder]
|
|
|
- ])->first();
|
|
|
-
|
|
|
- if(is_null($workOrder)){
|
|
|
- return $this->responseController->makeResponse(true, 'La orden solicitada no existe', [], 404);
|
|
|
- }else if($workOrder->OTPR_ESTA == 'E'){
|
|
|
- return $this->responseController->makeResponse(true, 'La orden solicitada está eliminada', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $filesArr = json_decode($workOrder->OTPR_DONE, true);
|
|
|
- if($form['action'] == 'disassociate'){
|
|
|
- if(!in_array($idFile, $filesArr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo enviado no está asociado a la orden de trabajo.', [], 401);
|
|
|
- }
|
|
|
-
|
|
|
- $filesArrAux = [];
|
|
|
- foreach($filesArr as $fileStr){
|
|
|
- if($fileStr != $idFile){
|
|
|
- $filesArrAux[] = $fileStr;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $filesArr = $filesArrAux;
|
|
|
- }else{
|
|
|
- if(in_array($idFile, $filesArr)){
|
|
|
- return $this->responseController->makeResponse(true, 'El archivo enviado ya está asociado a la orden de trabajo.', [], 401);
|
|
|
- }
|
|
|
- $filesArr[] = $idFile;
|
|
|
- }
|
|
|
-
|
|
|
- $now = $this->functionsController->now();
|
|
|
- $nowStr = $now->toDateTimeString();
|
|
|
- $filesStr = json_encode($filesArr);
|
|
|
-
|
|
|
- DB::table('S002V01TOTPR')->where([
|
|
|
- ['OTPR_NULI', '=', $form['linea']],
|
|
|
- ['OTPR_IDOT', '=', $idOrder]
|
|
|
- ])->update([
|
|
|
- 'OTPR_DONE' => $filesStr,
|
|
|
- 'OTPR_USMO' => $idUser,
|
|
|
- 'OTPR_FEMO' => $nowStr,
|
|
|
- ]);
|
|
|
-
|
|
|
- $actions = DB::getQueryLog();
|
|
|
- $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
-
|
|
|
- $idac = $this->functionsController->registerActivity(
|
|
|
- $form['linea'],
|
|
|
- 'S002V01M04GDEL',
|
|
|
- 'S002V01F01ADDO',
|
|
|
- 'S002V01P01GEDO',
|
|
|
- 'Actualización',
|
|
|
- "El usuario $name (" . $usr->USUA_IDUS . ") actualizó la relación del archivo $idFile y la orden de trabajo #$idOrder.",
|
|
|
- $idUser,
|
|
|
- $nowStr
|
|
|
- );
|
|
|
-
|
|
|
- $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
- return $this->responseController->makeresponse(false, "EXITO");
|
|
|
- }
|
|
|
+ private $responseController;
|
|
|
+ private $encryptionController;
|
|
|
+ private $functionsController;
|
|
|
+
|
|
|
+ public function __construct(){
|
|
|
+ $this->responseController = new ResponseController();
|
|
|
+ $this->encryptionController = new EncryptionController();
|
|
|
+ $this->functionsController = new FunctionsController();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function downloadFile($token, $idUser, $line){
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $tokenInfo = DB::table('S002V01TTODE')->where([
|
|
|
+ ['TODE_NULI', '=', $line],
|
|
|
+ ['TODE_TOKE', '=', $token]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($tokenInfo)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El token de descarga no existe.', [], 404);
|
|
|
+ }else if($tokenInfo->TODE_ESTA != 'Activo'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El token de descarga ya fue utilizado.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $token = $this->encryptionController->decrypt($token);
|
|
|
+ if(!$token){
|
|
|
+ return $this->responseController->makeResponse(true, 'El token de descarga no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $tokenArr = explode("|", $token);
|
|
|
+ if(count($tokenArr) != 3){
|
|
|
+ return $this->responseController->makeResponse(true, 'Estructura de token inválida.', [], 401);
|
|
|
+ }else if(intval($tokenArr[1]) != $tokenInfo->TODE_LLAL){
|
|
|
+ return $this->responseController->makeResponse(true, 'Token inválido.', [], 401);
|
|
|
+ }else if($tokenArr[2] != 'syp'){
|
|
|
+ return $this->responseController->makeResponse(true, 'Token inválido.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ['USUA_NULI', '=', $line]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $id = $tokenArr[0];
|
|
|
+ $codiArr = explode("=", $id);
|
|
|
+ $prefArr = explode("-", $codiArr[0]);
|
|
|
+ $suffArr = explode(".", $codiArr[2]);
|
|
|
+
|
|
|
+ $nuli = intval($prefArr[0]);
|
|
|
+ $como = $prefArr[1];
|
|
|
+ $cldo = $prefArr[2];
|
|
|
+ $fecr = $prefArr[3];
|
|
|
+ $nuse = intval($prefArr[4]);
|
|
|
+ $nuve = $codiArr[1];
|
|
|
+ $noar = $suffArr[0];
|
|
|
+ $exte = $suffArr[1];
|
|
|
+
|
|
|
+ $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
+ DB::table('S002V01TTODE')->where([
|
|
|
+ ['TODE_IDTO', '=', $tokenInfo->TODE_IDTO],
|
|
|
+ ['TODE_NULI', '=', $line]
|
|
|
+ ])->update([
|
|
|
+ 'TODE_ESTA' => 'Usado',
|
|
|
+ 'TODE_USDE' => $idUser,
|
|
|
+ 'TODE_FEDE' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $nuli],
|
|
|
+ ['AFAL_COMO', '=', $como],
|
|
|
+ ['AFAL_CLDO', '=', $cldo],
|
|
|
+ ['AFAL_FECR', '=', $fecr],
|
|
|
+ ['AFAL_NUSE', '=', $nuse],
|
|
|
+ ['AFAL_NUVE', '=', $nuve],
|
|
|
+ ['AFAL_NOAR', '=', $noar],
|
|
|
+ ['AFAL_EXTE', '=', $exte],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no existe.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ return response()->download($file->AFAL_UBIC, $id);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getDownloadToken($idFile, $idUser, $line){
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($idFile);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ['USUA_NULI', '=', $line]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $codiArr = explode("=", $idFile);
|
|
|
+ $prefArr = explode("-", $codiArr[0]);
|
|
|
+ $suffArr = explode(".", $codiArr[2]);
|
|
|
+
|
|
|
+ $nuli = intval($prefArr[0]);
|
|
|
+ $como = $prefArr[1];
|
|
|
+ $cldo = $prefArr[2];
|
|
|
+ $fecr = $prefArr[3];
|
|
|
+ $nuse = intval($prefArr[4]);
|
|
|
+ $nuve = $codiArr[1];
|
|
|
+ $noar = $suffArr[0];
|
|
|
+ $exte = $suffArr[1];
|
|
|
+
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $nuli],
|
|
|
+ ['AFAL_COMO', '=', $como],
|
|
|
+ ['AFAL_CLDO', '=', $cldo],
|
|
|
+ ['AFAL_FECR', '=', $fecr],
|
|
|
+ ['AFAL_NUSE', '=', $nuse],
|
|
|
+ ['AFAL_NUVE', '=', $nuve],
|
|
|
+ ['AFAL_NOAR', '=', $noar],
|
|
|
+ ['AFAL_EXTE', '=', $exte],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no existe.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $rand = rand(0, 99999);
|
|
|
+ $tokenArr = [$idFile, $rand, "syp"];
|
|
|
+ $tokenStr = join('|', $tokenArr);
|
|
|
+
|
|
|
+ $token = $this->encryptionController->encrypt($tokenStr);
|
|
|
+ $token = str_replace("+", "=P=", $token);
|
|
|
+ $token = str_replace("/", "=S=", $token);
|
|
|
+ $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
+
|
|
|
+ DB::table('S002V01TTODE')->insert([
|
|
|
+ 'TODE_NULI' => $line,
|
|
|
+ 'TODE_TOKE' => $token,
|
|
|
+ 'TODE_CODO' => $idFile,
|
|
|
+ 'TODE_LLAL' => $rand,
|
|
|
+ 'TODE_USRE' => $idUser,
|
|
|
+ 'TODE_FERE' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', ['TOKEN' => $token]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getFileInfo($id, $idUser, $line){
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $id = $this->encryptionController->decrypt($id);
|
|
|
+ if(!$id){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ['USUA_NULI', '=', $line]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idArr = explode("=", $id);
|
|
|
+ $codiArr = explode("-", $idArr[0]);
|
|
|
+
|
|
|
+ $nuli = $line;
|
|
|
+ $como = $codiArr[1];
|
|
|
+ $cldo = $codiArr[2];
|
|
|
+ $fecr = $codiArr[3];
|
|
|
+ $nuse = intval($codiArr[4]);
|
|
|
+ $nuve = intval($idArr[1]);
|
|
|
+
|
|
|
+ $fileInfo = DB::table('S002V01TAFAL')->select([
|
|
|
+ 'AFAL_NOAR AS NOMBREARCHIVO',
|
|
|
+ 'AFAL_EXTE AS EXTENSION',
|
|
|
+ 'AFAL_TAMA AS PESO',
|
|
|
+ 'AFAL_USAC AS ACCESO',
|
|
|
+ 'AFAL_ESTA AS ESTADO'
|
|
|
+ ])->where([
|
|
|
+ ['AFAL_NULI', '=', $nuli],
|
|
|
+ ['AFAL_COMO', '=', $como],
|
|
|
+ ['AFAL_CLDO', '=', $cldo],
|
|
|
+ ['AFAL_FECR', '=', $fecr],
|
|
|
+ ['AFAL_NUSE', '=', $nuse],
|
|
|
+ ['AFAL_NUVE', '=', $nuve],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($fileInfo)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }else if($fileInfo->ESTADO != 'Activo'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está disponible.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->responseController->makeResponse(false, 'EXITO', $fileInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getFiles($mod, $cla, $sda, $eda, $dna, $ext, $mode, $idUser, $line){
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ $availableModes = ['my-files', 'shared', 'deleted'];
|
|
|
+ if(!in_array($mode, $availableModes)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El modo seleccionado es inválido.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $whereParameters = [
|
|
|
+ ['AFAL_NULI', '=', $line]
|
|
|
+ ];
|
|
|
+
|
|
|
+ if($mod != '-'){
|
|
|
+ $whereParameters[] = ['AFAL_COMO', '=', $mod];
|
|
|
+ }
|
|
|
+
|
|
|
+ if($cla != '-'){
|
|
|
+ $whereParameters[] = ['AFAL_CLDO', '=', $cla];
|
|
|
+ }
|
|
|
+
|
|
|
+ $files = DB::table('S002V01TAFAL')->where($whereParameters)->get()->all();
|
|
|
+ $filesDateFiltered = [];
|
|
|
+ foreach($files as $file){
|
|
|
+ $dateArr = str_split($file->AFAL_FECR, 2);
|
|
|
+ $dateStr = "20$dateArr[0]-$dateArr[1]-$dateArr[2]";
|
|
|
+ $dateObj = new Carbon($dateStr, 'America/Guatemala');
|
|
|
+
|
|
|
+ if($sda != '-' && $eda == '-'){
|
|
|
+ $dateIniArr = str_split($sda, 2);
|
|
|
+ $dateIniStr = "20$dateIniArr[0]-$dateIniArr[1]-$dateIniArr[2]";
|
|
|
+ $dateIniObj = new Carbon($dateIniStr, 'America/Guatemala');
|
|
|
+
|
|
|
+ if($dateIniObj->lte($dateObj)){
|
|
|
+ $filesDateFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else if($sda == '-' && $eda != '-'){
|
|
|
+ $dateFinArr = str_split($eda, 2);
|
|
|
+ $dateFinStr = "20$dateFinArr[0]-$dateFinArr[1]-$dateFinArr[2]";
|
|
|
+ $dateFinObj = new Carbon($dateFinStr, 'America/Guatemala');
|
|
|
+
|
|
|
+ if($dateFinObj->gte($dateObj)){
|
|
|
+ $filesDateFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else if($sda != '-' && $eda != '-'){
|
|
|
+ $dateIniArr = str_split($sda, 2);
|
|
|
+ $dateIniStr = "20$dateIniArr[0]-$dateIniArr[1]-$dateIniArr[2]";
|
|
|
+ $dateIniObj = new Carbon($dateIniStr, 'America/Guatemala');
|
|
|
+
|
|
|
+ $dateFinArr = str_split($eda, 2);
|
|
|
+ $dateFinStr = "20$dateFinArr[0]-$dateFinArr[1]-$dateFinArr[2]";
|
|
|
+ $dateFinObj = new Carbon($dateFinStr, 'America/Guatemala');
|
|
|
+
|
|
|
+ if($dateFinObj->gte($dateObj) && $dateIniObj->lte($dateObj)){
|
|
|
+ $filesDateFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $filesDateFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesNameFiltered = [];
|
|
|
+ foreach($filesDateFiltered as $file){
|
|
|
+ if($dna != '-' && $ext == '-'){
|
|
|
+ if(str_contains($file->AFAL_NOAR, $dna)){
|
|
|
+ $filesNameFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else if($dna == '-' && $ext != '-'){
|
|
|
+ //$extArr = explode(',', $ext);
|
|
|
+ $extArr = json_decode($ext);
|
|
|
+ if(in_array($file->AFAL_EXTE, $extArr)){
|
|
|
+ $filesNameFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else if($dna != '-' && $ext != '-'){
|
|
|
+ $extArr = json_decode($ext);
|
|
|
+ if(str_contains($file->AFAL_NOAR, $dna) && in_array($file->AFAL_EXTE, $extArr)){
|
|
|
+ $filesNameFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $filesNameFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesAccessFiltered = [];
|
|
|
+ foreach($filesNameFiltered as $file){
|
|
|
+ $access = json_decode($file->AFAL_USAC);
|
|
|
+
|
|
|
+ if($mode == 'my-files' && $file->AFAL_USRE == $idUser && $file->AFAL_ESTA == 'Activo'){
|
|
|
+ $filesAccessFiltered[] = $file;
|
|
|
+ }else if($mode == 'shared' && in_array($idUser, $access) && $file->AFAL_USRE != $idUser && $file->AFAL_ESTA == 'Activo'){
|
|
|
+ $filesAccessFiltered[] = $file;
|
|
|
+ }else if($mode == 'deleted' && $file->AFAL_ESTA == 'Eliminado' && ($file->AFAL_USRE == $idUser || in_array($idUser, $access))){
|
|
|
+ $filesAccessFiltered[] = $file;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesF = [];
|
|
|
+ foreach($filesAccessFiltered as $file){
|
|
|
+ $linea = $file->AFAL_NULI < 10 ? "0" . $file->AFAL_NULI : "" . $file->AFAL_NULI . "";
|
|
|
+ $secu = "";
|
|
|
+
|
|
|
+ for($i = strlen($file->AFAL_NUSE); $i < 6; $i++){
|
|
|
+ $secu .= "0";
|
|
|
+ }
|
|
|
+
|
|
|
+ $secu .= $file->AFAL_NUSE;
|
|
|
+ $vers = $file->AFAL_NUVE < 10 ? "0" . $file->AFAL_NUVE : "" . $file->AFAL_NUVE . "";
|
|
|
+ $fName = $file->AFAL_NOAR . '.' . $file->AFAL_EXTE;
|
|
|
+
|
|
|
+ $usrReg = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $file->AFAL_USRE],
|
|
|
+ ])->first();
|
|
|
+ $nameReg = $this->functionsController->joinName($usrReg->USUA_NOMB, $usrReg->USUA_APPA, $usrReg->USUA_APMA);
|
|
|
+ $nameReg .= " (" . $file->AFAL_USRE . ")";
|
|
|
+
|
|
|
+ $access = json_decode($file->AFAL_USAC, true);
|
|
|
+ foreach($access as $k=>$v){
|
|
|
+ $usrAcc = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $line],
|
|
|
+ ['USUA_IDUS', '=', $v],
|
|
|
+ ])->first();
|
|
|
+ $nameAcc = $this->functionsController->joinName($usrAcc->USUA_NOMB, $usrAcc->USUA_APPA, $usrAcc->USUA_APMA);
|
|
|
+ $nameAcc .= " (" . $v . ")";
|
|
|
+
|
|
|
+ $access[$k] = $nameAcc;
|
|
|
+ }
|
|
|
+
|
|
|
+ $accessStr = json_encode($access);
|
|
|
+
|
|
|
+ $filesF[] = [
|
|
|
+ 'CODIGO' => $linea . '-' . $file->AFAL_COMO . '-' . $file->AFAL_CLDO . '-' . $file->AFAL_FECR . '-' . $secu,
|
|
|
+ 'VERSION' => $vers,
|
|
|
+ 'NOMBRE' => $fName,
|
|
|
+ 'TAMANIO' => $file->AFAL_TAMA,
|
|
|
+ 'USRREG' => $nameReg,
|
|
|
+ 'ACCESO' => $accessStr
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó los documentos registrados.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO", $filesF);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function uploadTempFile(Request $request){
|
|
|
+ DB::enableQueryLog();
|
|
|
+ if(!$request->hasFile('file')){
|
|
|
+ return $this->responseController->makeResponse(true, "No se envió ningún archivo.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'linea' => 'required|integer'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ['USUA_NULI', '=', $form['linea']]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $originalFileName = $request->file('file')->getClientOriginalName();
|
|
|
+ $extension = $request->file('file')->extension();
|
|
|
+ $size = $request->file('file')->getSize();
|
|
|
+
|
|
|
+ $extArr = explode(".", $originalFileName);
|
|
|
+ $extArr = array_reverse($extArr);
|
|
|
+ $extStr = $extArr[0];
|
|
|
+
|
|
|
+ $isValid = $this->functionsController->checkFileSize($extStr, $size);
|
|
|
+ if($isValid){
|
|
|
+ $dir = str_replace("app\\Http\\Controllers", "storage\\app", __DIR__);
|
|
|
+ $tmpPath = $request->file('file')->store('tempFiles');
|
|
|
+ $tmpPath = str_replace("/", "\\", $tmpPath);
|
|
|
+
|
|
|
+ $location = "$dir\\$tmpPath";
|
|
|
+ $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
+
|
|
|
+ $fileID = DB::table('S002V01TARTE')->insertGetId([
|
|
|
+ 'ARTE_NULI' => $form['linea'],
|
|
|
+ 'ARTE_NOAR' => $originalFileName,
|
|
|
+ 'ARTE_EXTE' => $extension,
|
|
|
+ 'ARTE_TAMA' => $size,
|
|
|
+ 'ARTE_UBTE' => $location,
|
|
|
+ 'ARTE_USRE' => $idUser,
|
|
|
+ 'ARTE_FERE' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P05REDO',
|
|
|
+ 'Registro',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") subió de manera temporal el archivo $originalFileName.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO", [
|
|
|
+ 'idArchivo' => $this->encryptionController->encrypt($fileID),
|
|
|
+ ]);
|
|
|
+ }else{
|
|
|
+ return $this->responseController->makeResponse(true, "El archivo enviado tiene una extensión no soportada o sobrepasa el límite de peso de su categoría.", [], 400);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function deleteTempFile(Request $request){
|
|
|
+ DB::enableQueryLog();
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'id_file' => 'required|string',
|
|
|
+ 'linea' => 'required|integer'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ['USUA_NULI', '=', $form['linea']]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, "El id del archivo que desea eliminar no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $file = DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_IDAR', '=', $idFile],
|
|
|
+ ['ARTE_NULI', '=', $form['linea']]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo que desea eliminar no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(file_exists($file->ARTE_UBTE)){
|
|
|
+ unlink($file->ARTE_UBTE);
|
|
|
+ }
|
|
|
+
|
|
|
+ $nowStr = Carbon::now('America/Mexico_city')->toDateTimeString();
|
|
|
+ DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_IDAR', '=', $idFile],
|
|
|
+ ['ARTE_NULI', '=', $form['linea']]
|
|
|
+ ])->update([
|
|
|
+ 'ARTE_ESTA' => 'Eliminado',
|
|
|
+ 'ARTE_USMO' => $idUser,
|
|
|
+ 'ARTE_FEMO' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P05REDO',
|
|
|
+ 'Eliminación',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el archivo " . $file->ARTE_NOAR,
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO");
|
|
|
+ }
|
|
|
+
|
|
|
+ public function saveFinalFile(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'id_file' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'module' => 'required|string|max:4',
|
|
|
+ 'clasification' => 'required|string|max:2',
|
|
|
+ 'has_order' => 'required|string|in:S,N',
|
|
|
+ 'id_order' => 'required_if:has_order,=,S|string',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, "El id del archivo solicitado no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $tempFile = DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_NULI', '=', $form['linea']],
|
|
|
+ ['ARTE_IDAR', '=', $idFile],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($tempFile)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo consultado no está registrado', [], 404);
|
|
|
+ }else if($tempFile->ARTE_ESTA == 'Eliminado'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo consultado está eliminado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $fileResponse = $this->moveFinalFile(
|
|
|
+ intval($form['linea']),
|
|
|
+ $form['module'],
|
|
|
+ $form['clasification'],
|
|
|
+ $tempFile,
|
|
|
+ $idUser,
|
|
|
+ );
|
|
|
+
|
|
|
+ if(!$fileResponse[0]){
|
|
|
+ return $this->responseController->makeResponse(true, $fileResponse[1], [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+
|
|
|
+ if($form['has_order'] == 'S' && ($form['module'] == 'GMPR' || $form['module'] == 'GMCO')){
|
|
|
+ $idOrder = $this->encryptionController->decrypt($form['id_order']);
|
|
|
+ if(!$idOrder){
|
|
|
+ return $this->responseController->makeResponse(true, "El id de la orden relacionada no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = DB::table('S002V01TOTPR')->where([
|
|
|
+ ['OTPR_IDOT', '=', $idOrder],
|
|
|
+ ['OTPR_NULI', '=', $form['linea']]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($order)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La orden solicitada no está registrada', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $documentsArr = json_decode($order->OTPR_DONE, true);
|
|
|
+ $fileCodeEnc = $this->encryptionController->encrypt($fileResponse[1]);
|
|
|
+
|
|
|
+ $documentsArr[] = $fileCodeEnc;
|
|
|
+ $documentsStr = json_encode($documentsArr);
|
|
|
+
|
|
|
+ DB::table('S002V01TOTPR')->where([
|
|
|
+ ['OTPR_IDOT', '=', $idOrder],
|
|
|
+ ['OTPR_NULI', '=', $form['linea']]
|
|
|
+ ])->update([
|
|
|
+ 'OTPR_DONE' => $documentsStr,
|
|
|
+ 'OTPR_USMO' => $idUser,
|
|
|
+ 'OTPR_FEMO' => $nowStr
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P05REDO',
|
|
|
+ 'Registro',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") registró el archivo " . $tempFile->ARTE_NOAR,
|
|
|
+ $idUser,
|
|
|
+ $nowStr,
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO");
|
|
|
+ }
|
|
|
+
|
|
|
+ private function moveFinalFile(int $line, string $como, string $cldo, object $tempFile, string $idUser) {
|
|
|
+ $modulesCodes = [
|
|
|
+ "GEAD","GIST","GMPR","GMCO","GEEQ","COAC","GEPR",
|
|
|
+ "ANFA","PCSA","GPRS","GEPR","GDEL","ADSI","USPE"
|
|
|
+ ];
|
|
|
+
|
|
|
+ $clasifications = [
|
|
|
+ "AV","AU","CA","CE","CO","DP","FA","FI",
|
|
|
+ "FO","IN","LA","OR","PL","RE","VI"
|
|
|
+ ];
|
|
|
+
|
|
|
+ if(!in_array($como, $modulesCodes)){
|
|
|
+ return [false, "El código $como es inválido."];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!in_array($cldo, $clasifications)){
|
|
|
+ return [false, "La clasificación $cldo es inválida."];
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $dateTimeArr = explode(' ', $nowStr);
|
|
|
+ $dateArr = explode('-', $dateTimeArr[0]);
|
|
|
+ $year = substr($dateArr[0], 2);
|
|
|
+
|
|
|
+ $fecr = "$year$dateArr[1]$dateArr[2]";
|
|
|
+ $sec = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_COMO', '=', $como],
|
|
|
+ ['AFAL_CLDO', '=', $cldo],
|
|
|
+ ['AFAL_NULI', '=', $line],
|
|
|
+ ])->orderBy('AFAL_NUSE', 'desc')->first();
|
|
|
+
|
|
|
+ $nuse = 1;
|
|
|
+ if(!is_null($sec)){
|
|
|
+ $nuse = intval($sec->AFAL_NUSE) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $fileNameArr = explode('.', $tempFile->ARTE_NOAR);
|
|
|
+ array_pop($fileNameArr);
|
|
|
+
|
|
|
+ $noar = implode('.', $fileNameArr);
|
|
|
+ $exte = $tempFile->ARTE_EXTE;
|
|
|
+
|
|
|
+ $ver = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $line],
|
|
|
+ ['AFAL_COMO', '=', $como],
|
|
|
+ ['AFAL_CLDO', '=', $cldo],
|
|
|
+ ['AFAL_NOAR', '=', $noar],
|
|
|
+ ['AFAL_EXTE', '=', $exte],
|
|
|
+ ])->orderBy('AFAL_NUVE', 'desc')->first();
|
|
|
+
|
|
|
+ $nuve = 1;
|
|
|
+ if(!is_null($ver)){
|
|
|
+ $nuve = intval($sec->AFAL_NUVE) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $tama = $tempFile->ARTE_TAMA;
|
|
|
+ $ubiFileArr = explode('tempFiles', $tempFile->ARTE_UBTE);
|
|
|
+ $ubic = $ubiFileArr[0] . 'files' . $ubiFileArr[1];
|
|
|
+
|
|
|
+ if(file_exists($tempFile->ARTE_UBTE)){
|
|
|
+ rename($tempFile->ARTE_UBTE, $ubic);
|
|
|
+ DB::table('S002V01TARTE')->where([
|
|
|
+ ['ARTE_IDAR', '=', $tempFile->ARTE_IDAR],
|
|
|
+ ['ARTE_NULI', '=', $line],
|
|
|
+ ])->update([
|
|
|
+ 'ARTE_ESTA' => 'Eliminado',
|
|
|
+ 'ARTE_USMO' => $idUser,
|
|
|
+ 'ARTE_FEMO' => $nowStr,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $code = $line < 10 ? "0$line" : "$line";
|
|
|
+ $code .= "-$como-$cldo-$fecr-";
|
|
|
+
|
|
|
+ for($i = strlen($nuse); $i < 6; $i++){
|
|
|
+ $code .= "0";
|
|
|
+ }
|
|
|
+
|
|
|
+ $code .= "$nuse=";
|
|
|
+ $code .= $nuve < 10 ? "0$nuve=" : "$nuve=";
|
|
|
+ $code .= "$noar.$exte";
|
|
|
+
|
|
|
+ $usac = json_encode([$idUser]);
|
|
|
+
|
|
|
+ DB::table('S002V01TAFAL')->insert([
|
|
|
+ 'AFAL_NULI' => $line,
|
|
|
+ 'AFAL_COMO' => $como,
|
|
|
+ 'AFAL_CLDO' => $cldo,
|
|
|
+ 'AFAL_FECR' => $fecr,
|
|
|
+ 'AFAL_NUSE' => $nuse,
|
|
|
+ 'AFAL_NUVE' => $nuve,
|
|
|
+ 'AFAL_NOAR' => $noar,
|
|
|
+ 'AFAL_EXTE' => $exte,
|
|
|
+ 'AFAL_TAMA' => $tama,
|
|
|
+ 'AFAL_UBIC' => $ubic,
|
|
|
+ 'AFAL_USAC' => $usac,
|
|
|
+ 'AFAL_USRE' => $idUser,
|
|
|
+ 'AFAL_FERE' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ return [true, $code];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getPublicDocumentURL($id, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ $id = $this->encryptionController->decrypt($id);
|
|
|
+ if(!$id){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idArr = explode('=', $id);
|
|
|
+ $codeArr = explode('-', $idArr[0]);
|
|
|
+
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $ubicArr = explode('storage', $file->AFAL_UBIC);
|
|
|
+ $publicUbi = "$ubicArr[0]public_files\\$id";
|
|
|
+
|
|
|
+ if(!file_exists($publicUbi)){
|
|
|
+ copy($file->AFAL_UBIC, $publicUbi);
|
|
|
+ }
|
|
|
+
|
|
|
+ $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', 'http://git.ittec.mx/', $publicUbi);
|
|
|
+ $publicUbiStr = str_replace('\\', '/', $publicUbiStr);
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó la URL pública del archivo $id.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO", ['public_uri' => $publicUbiStr]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getFileAccess($id, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ $id = $this->encryptionController->decrypt($id);
|
|
|
+ if(!$id){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idArr = explode('=', $id);
|
|
|
+ $codeArr = explode('-', $idArr[0]);
|
|
|
+
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $owner = $this->encryptionController->encrypt($file->AFAL_USRE);
|
|
|
+ $permissionsArr = json_decode($file->AFAL_USAC, true);
|
|
|
+ foreach($permissionsArr as $k=>$v){
|
|
|
+ $idEnc = $this->encryptionController->encrypt($v);
|
|
|
+ $permissionsArr[$k] = $idEnc;
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó los usuarios con acceso al archivo $id.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO", [
|
|
|
+ 'access' => $permissionsArr,
|
|
|
+ 'owner' => $owner
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function updateFilePermissions(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'id_file' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'permissions' => 'required|json',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFileArr = explode('=', $idFile);
|
|
|
+ $codeArr = explode('-', $idFileArr[0]);
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $permissionsArr = json_decode($file->AFAL_USAC, true);
|
|
|
+ if(!in_array($idUser, $permissionsArr)){
|
|
|
+ $usrName = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA) . " ($idUser)";
|
|
|
+ return $this->responseController->makeResponse(true, "El usuario $usrName no tiene permisos para modificar el archivo $idFile.", [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $newPermissionsArr = json_decode($form['permissions'], true);
|
|
|
+ if(count($newPermissionsArr) <= 0){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de permisos está vacío.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $newPermissionsArrDec = [];
|
|
|
+ foreach($newPermissionsArr as $val){
|
|
|
+ $idDec = $this->encryptionController->decrypt($val);
|
|
|
+ if(!$idDec){
|
|
|
+ return $this->responseController->makeResponse(true, "Alguno de los ID's enviados no fue encriptado correctamente.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $newPermissionsArrDec[] = $idDec;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!in_array($file->AFAL_USRE, $newPermissionsArrDec)){
|
|
|
+ return $this->responseController->makeResponse(true, "El arreglo de permisos no incluye el ID del propietario.", [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $usac = json_encode($newPermissionsArrDec);
|
|
|
+ DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->update([
|
|
|
+ 'AFAL_USAC' => $usac,
|
|
|
+ 'AFAL_USMO' => $idUser,
|
|
|
+ 'AFAL_FEMO' => $nowStr,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Actualización',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") actualizó los usuarios con acceso del archivo $idFile.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO");
|
|
|
+ }
|
|
|
+
|
|
|
+ public function deleteFile(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'id_file' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFileArr = explode('=', $idFile);
|
|
|
+ $codeArr = explode('-', $idFileArr[0]);
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }else if($file->AFAL_ESTA == 'Eliminado'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado está eliminado.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->update([
|
|
|
+ 'AFAL_ESTA' => 'Eliminado',
|
|
|
+ 'AFAL_USMO' => $idUser,
|
|
|
+ 'AFAL_FEMO' => $nowStr
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Eliminación',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") eliminó el archivo $idFile.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO");
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getAssociatedWorkOrders($idFile, $idUser, $line) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $idUser = $this->encryptionController->decrypt($idUser);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($idFile);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID del archivo solicitado no está encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFileArr = explode('=', $idFile);
|
|
|
+ $codeArr = explode('-', $idFileArr[0]);
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $line],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $orders = DB::table('S002V01TOTPR')
|
|
|
+ ->select([
|
|
|
+ 'OTPR_IDOT AS IDORDEN',
|
|
|
+ 'OTPR_EQIN AS EQUIPAMIENTO',
|
|
|
+ 'OTPR_ACAS AS ACTIVADOR',
|
|
|
+ 'OTPR_CLAS AS CLASIFICACION',
|
|
|
+ 'ACTI_PRIO AS PRIORIDAD',
|
|
|
+ 'ACTI_TIAC AS TIPOACTIVADOR'
|
|
|
+ ])->join('S002V01TACTI', 'OTPR_ACAS', '=', 'ACTI_IDCO')
|
|
|
+ ->where('OTPR_NULI', '=', $line)
|
|
|
+ ->whereJsonContains('OTPR_DONE', $idFile)->get()->all();
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $line,
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Consulta',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") consultó las órdenes de trabajo relacionadas al archivo $idFile.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $line);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO", $orders);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function changeAssociationStatus(Request $request) {
|
|
|
+ DB::enableQueryLog();
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'id_user' => 'required|string',
|
|
|
+ 'linea' => 'required|integer',
|
|
|
+ 'id_file' => 'required|string',
|
|
|
+ 'action' => 'required|string|in:disassociate,associate',
|
|
|
+ 'id_order' => 'required|string',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if($validator->fails()){
|
|
|
+ return $this->responseController->makeResponse(
|
|
|
+ true,
|
|
|
+ "Se encontraron uno o más errores.",
|
|
|
+ $this->responseController->makeErrors(
|
|
|
+ $validator->errors()->messages()
|
|
|
+ ),
|
|
|
+ 401
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form = $request->all();
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
+ if(!$idUser){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $usr = DB::table('S002V01TUSUA')->where([
|
|
|
+ ['USUA_NULI', '=', $form['linea']],
|
|
|
+ ['USUA_IDUS', '=', $idUser],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($usr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El usuario que realizó la consulta no está registrado', [], 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFile = $this->encryptionController->decrypt($form['id_file']);
|
|
|
+ if(!$idFile){
|
|
|
+ return $this->responseController->makeResponse(true, "El ID del archivo solicitado no fue encriptado correctamente.", [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idFileArr = explode('=', $idFile);
|
|
|
+ $codeArr = explode('-', $idFileArr[0]);
|
|
|
+ $file = DB::table('S002V01TAFAL')->where([
|
|
|
+ ['AFAL_NULI', '=', $codeArr[0]],
|
|
|
+ ['AFAL_COMO', '=', $codeArr[1]],
|
|
|
+ ['AFAL_CLDO', '=', $codeArr[2]],
|
|
|
+ ['AFAL_FECR', '=', $codeArr[3]],
|
|
|
+ ['AFAL_NUSE', '=', $codeArr[4]],
|
|
|
+ ['AFAL_NUVE', '=', $idFileArr[1]],
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($file)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404);
|
|
|
+ }else if($file->AFAL_ESTA == 'Eliminado'){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo solicitado está eliminado.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $idOrder = $this->encryptionController->decrypt($form['id_order']);
|
|
|
+ if(!$idOrder){
|
|
|
+ return $this->responseController->makeResponse(true, 'El ID de la orden solicitada no fue encriptado correctamente.', [], 400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $workOrder = DB::table('S002V01TOTPR')->where([
|
|
|
+ ['OTPR_NULI', '=', $form['linea']],
|
|
|
+ ['OTPR_IDOT', '=', $idOrder]
|
|
|
+ ])->first();
|
|
|
+
|
|
|
+ if(is_null($workOrder)){
|
|
|
+ return $this->responseController->makeResponse(true, 'La orden solicitada no existe', [], 404);
|
|
|
+ }else if($workOrder->OTPR_ESTA == 'E'){
|
|
|
+ return $this->responseController->makeResponse(true, 'La orden solicitada está eliminada', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesArr = json_decode($workOrder->OTPR_DONE, true);
|
|
|
+ if($form['action'] == 'disassociate'){
|
|
|
+ if(!in_array($idFile, $filesArr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo enviado no está asociado a la orden de trabajo.', [], 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesArrAux = [];
|
|
|
+ foreach($filesArr as $fileStr){
|
|
|
+ if($fileStr != $idFile){
|
|
|
+ $filesArrAux[] = $fileStr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $filesArr = $filesArrAux;
|
|
|
+ }else{
|
|
|
+ if(in_array($idFile, $filesArr)){
|
|
|
+ return $this->responseController->makeResponse(true, 'El archivo enviado ya está asociado a la orden de trabajo.', [], 401);
|
|
|
+ }
|
|
|
+ $filesArr[] = $idFile;
|
|
|
+ }
|
|
|
+
|
|
|
+ $now = $this->functionsController->now();
|
|
|
+ $nowStr = $now->toDateTimeString();
|
|
|
+ $filesStr = json_encode($filesArr);
|
|
|
+
|
|
|
+ DB::table('S002V01TOTPR')->where([
|
|
|
+ ['OTPR_NULI', '=', $form['linea']],
|
|
|
+ ['OTPR_IDOT', '=', $idOrder]
|
|
|
+ ])->update([
|
|
|
+ 'OTPR_DONE' => $filesStr,
|
|
|
+ 'OTPR_USMO' => $idUser,
|
|
|
+ 'OTPR_FEMO' => $nowStr,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $actions = DB::getQueryLog();
|
|
|
+ $name = $this->functionsController->joinName($usr->USUA_NOMB, $usr->USUA_APPA, $usr->USUA_APMA);
|
|
|
+
|
|
|
+ $idac = $this->functionsController->registerActivity(
|
|
|
+ $form['linea'],
|
|
|
+ 'S002V01M04GDEL',
|
|
|
+ 'S002V01F01ADDO',
|
|
|
+ 'S002V01P01GEDO',
|
|
|
+ 'Actualización',
|
|
|
+ "El usuario $name (" . $usr->USUA_IDUS . ") actualizó la relación del archivo $idFile y la orden de trabajo #$idOrder.",
|
|
|
+ $idUser,
|
|
|
+ $nowStr
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->functionsController->registerLog($actions, $idUser, $nowStr, $idac, $form['linea']);
|
|
|
+ return $this->responseController->makeresponse(false, "EXITO");
|
|
|
+ }
|
|
|
}
|