responseController = new ResponseController(); $this->encryptionController = new EncryptionController(); $this->functionsController = new FunctionsController(); $this->resourcesController = new ResourcesController(); } 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(); $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 = $this->encryptionController->decrypt($id); if(!$id){ return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400); } $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']); $idUser = "0000000001"; 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 = strtolower($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"); } 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->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); } $apiURI = $this->functionsController->getApiURI(); $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', $apiURI, $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 getPublicTempDocumentURL($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); } $file = DB::table('S002V01TARTE')->where([ ['ARTE_NULI', '=', $line], ['ARTE_IDAR', '=', $id], ])->first(); if(is_null($file)){ return $this->responseController->makeResponse(true, 'El archivo solicitado no está registrado.', [], 404); }else if($file->ARTE_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, 'El archivo solicitado está eliminado.', [], 404); } $ubicArr = explode('storage', $file->ARTE_UBTE); $publicUbi = "$ubicArr[0]public_files\\" . $file->ARTE_NOAR; if(!file_exists($publicUbi)){ copy($file->ARTE_UBTE, $publicUbi); } $apiURI = $this->functionsController->getApiURI(); $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', $apiURI, $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 temporal " . $file->ARTE_NOAR . ".", $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_IDAC') ->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"); } public function privateGetPublicDocumentURL($id, $idUser, $line) { $idUser = $this->encryptionController->decrypt($idUser); if(!$idUser){ return ['error' => true, 'msg' => 'El ID del usuario que realizó la petición no está encriptado correctamente.', 'response' => []]; } $usr = DB::table('S002V01TUSUA')->where([ ['USUA_NULI', '=', $line], ['USUA_IDUS', '=', $idUser], ])->first(); if(is_null($usr)){ return ['error' => true, 'msg' => 'El usuario que realizó la consulta no está registrado.', 'response' => []]; } $id = $this->encryptionController->decrypt($id); if(!$id){ return ['error' => true, 'msg' => 'El ID del archivo solicitado no está encriptado correctamente.', 'response' => []]; } $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 ['error' => true, 'msg' => 'El archivo solicitado no está registrado.', 'response' => []]; } $ubicArr = explode('storage', $file->AFAL_UBIC); $publicUbi = "$ubicArr[0]public_files\\$id"; if(!file_exists($publicUbi)){ copy($file->AFAL_UBIC, $publicUbi); } $apiURI = $this->functionsController->getApiURI(); $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', $apiURI, $publicUbi); $publicUbiStr = str_replace('\\', '/', $publicUbiStr); return ['error' => false, 'msg' => "EXITO", 'response' => ['public_uri' => $publicUbiStr]]; } public function getFileByCode ($code, $user, $line) { $response = array('error' => false, 'msg' => 'ÉXITO', 'response' => []); $code = $this->encryptionController->decrypt($code); if (is_null($code)) { $response['error'] = true; $response['msg'] = 'El código del archivo no está encriptado correctamente.'; return $response; } $idArr = explode('=', $code); $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\\$code"; // $publicUbi = "$ubicArr[0]public\\public_files\\$code"; if(!file_exists($publicUbi)){ copy($file->AFAL_UBIC, $publicUbi); } $apiURI = $this->functionsController->getApiURI(); $publicUbiStr = str_replace('C:\inetpub\wwwroot\\', $apiURI, $publicUbi); $publicUbiStr = str_replace('\\', '/', $publicUbiStr); $arrResponse = [ 'ID' => $code, 'NAME' => "{$file->AFAL_NOAR}.{$file->AFAL_EXTE}", 'SIZE' => $this->resourcesController->formatBytes($file->AFAL_TAMA), 'SHOW' => $publicUbiStr, 'TYPE' => 'O', ]; $response['response'] = $arrResponse; return $response; } }