|
@@ -4,7 +4,6 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
-use Illuminate\Support\Facades\Log;
|
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
use ZipArchive;
|
|
use ZipArchive;
|
|
@@ -93,10 +92,7 @@ class ValidateLoadArchivesController extends Controller
|
|
|
*/
|
|
*/
|
|
|
public function validateFiles(Request $request)
|
|
public function validateFiles(Request $request)
|
|
|
{
|
|
{
|
|
|
- Log::info('=== INICIANDO VALIDACIÓN DE ARCHIVOS ===');
|
|
|
|
|
-
|
|
|
|
|
// Validate request inputs
|
|
// Validate request inputs
|
|
|
- Log::info('Paso 1: Validando tipos de archivo');
|
|
|
|
|
$validator = Validator::make($request->all(), [
|
|
$validator = Validator::make($request->all(), [
|
|
|
'id_user' => 'required|string',
|
|
'id_user' => 'required|string',
|
|
|
'linea' => 'required|integer',
|
|
'linea' => 'required|integer',
|
|
@@ -105,7 +101,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
if ($validator->fails()) {
|
|
if ($validator->fails()) {
|
|
|
- Log::error('Error en validación de tipos de archivo', $validator->errors()->toArray());
|
|
|
|
|
return $this->responseController->makeResponse(
|
|
return $this->responseController->makeResponse(
|
|
|
true,
|
|
true,
|
|
|
'Se encontraron uno o más errores.',
|
|
'Se encontraron uno o más errores.',
|
|
@@ -113,74 +108,54 @@ class ValidateLoadArchivesController extends Controller
|
|
|
400
|
|
400
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Tipos de archivo válidos');
|
|
|
|
|
|
|
+
|
|
|
|
|
+ $idUser = $this->encryptionController->decrypt($request->input('id_user'));
|
|
|
|
|
+ if(!$idUser){
|
|
|
|
|
+ return $this->responseController->makeResponse(true, "El id del usuario que realizó la petición no fue encriptado correctamente", [], 400);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// Validate Excel file headers structure
|
|
// Validate Excel file headers structure
|
|
|
- Log::info('Paso 2: Validando encabezados de Excel');
|
|
|
|
|
$excelValidation = $this->validateExcelHeaders($request->file('excel_file'));
|
|
$excelValidation = $this->validateExcelHeaders($request->file('excel_file'));
|
|
|
if ($excelValidation['error']) {
|
|
if ($excelValidation['error']) {
|
|
|
- Log::error('Error en encabezados Excel: ' . $excelValidation['message']);
|
|
|
|
|
return $this->responseController->makeResponse(true, $excelValidation['message'], [], 400);
|
|
return $this->responseController->makeResponse(true, $excelValidation['message'], [], 400);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Encabezados de Excel válidos');
|
|
|
|
|
|
|
|
|
|
// Extract and validate file listings from Excel
|
|
// Extract and validate file listings from Excel
|
|
|
- Log::info('Paso 3: Extrayendo listado de archivos del Excel');
|
|
|
|
|
$filesValidation = $this->extractAndValidateFiles($request->file('excel_file'));
|
|
$filesValidation = $this->extractAndValidateFiles($request->file('excel_file'));
|
|
|
if ($filesValidation['error']) {
|
|
if ($filesValidation['error']) {
|
|
|
- Log::error('Error extrayendo archivos Excel: ' . $filesValidation['message']);
|
|
|
|
|
return $this->responseController->makeResponse(true, $filesValidation['message'], [], 400);
|
|
return $this->responseController->makeResponse(true, $filesValidation['message'], [], 400);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Archivos extraídos: ' . count($filesValidation['files']) . ' archivos encontrados');
|
|
|
|
|
|
|
|
|
|
// Validate ZIP file integrity
|
|
// Validate ZIP file integrity
|
|
|
- Log::info('Paso 4: Validando integridad del archivo ZIP');
|
|
|
|
|
$zipValidation = $this->validateZipFile($request->file('zip_file'));
|
|
$zipValidation = $this->validateZipFile($request->file('zip_file'));
|
|
|
if ($zipValidation['error']) {
|
|
if ($zipValidation['error']) {
|
|
|
- Log::error('Error validando ZIP: ' . $zipValidation['message']);
|
|
|
|
|
return $this->responseController->makeResponse(true, $zipValidation['message'], [], 400);
|
|
return $this->responseController->makeResponse(true, $zipValidation['message'], [], 400);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Archivo ZIP válido');
|
|
|
|
|
|
|
|
|
|
// Compare Excel file listings with ZIP contents
|
|
// Compare Excel file listings with ZIP contents
|
|
|
- Log::info('Paso 5: Comparando listados Excel vs ZIP y validando tamaños');
|
|
|
|
|
$comparison = $this->compareExcelWithZip($filesValidation['files'], $request->file('zip_file'));
|
|
$comparison = $this->compareExcelWithZip($filesValidation['files'], $request->file('zip_file'));
|
|
|
|
|
|
|
|
// Check for file size validation errors
|
|
// Check for file size validation errors
|
|
|
if (isset($comparison['error'])) {
|
|
if (isset($comparison['error'])) {
|
|
|
- Log::error('Error en validación de tamaños: ' . $comparison['error']);
|
|
|
|
|
return $this->responseController->makeResponse(true, $comparison['error'], [], 400);
|
|
return $this->responseController->makeResponse(true, $comparison['error'], [], 400);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Log::info('✓ Comparación completada', [
|
|
|
|
|
- 'valid' => $comparison['valid'],
|
|
|
|
|
- 'missing_in_zip' => count($comparison['missing_in_zip'] ?? []),
|
|
|
|
|
- 'extra_in_zip' => count($comparison['extra_in_zip'] ?? [])
|
|
|
|
|
- ]);
|
|
|
|
|
-
|
|
|
|
|
// Upload temp files if validation is successful
|
|
// Upload temp files if validation is successful
|
|
|
if ($comparison['valid']) {
|
|
if ($comparison['valid']) {
|
|
|
- Log::info('Paso 6: Subiendo archivos temporales');
|
|
|
|
|
$tempFiles = $this->uploadTempFiles($request);
|
|
$tempFiles = $this->uploadTempFiles($request);
|
|
|
if ($tempFiles['error']) {
|
|
if ($tempFiles['error']) {
|
|
|
- Log::error('Error subiendo archivos temporales: ' . $tempFiles['message']);
|
|
|
|
|
return $this->responseController->makeResponse(true, $tempFiles['message'], [], 400);
|
|
return $this->responseController->makeResponse(true, $tempFiles['message'], [], 400);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Archivos temporales subidos');
|
|
|
|
|
|
|
|
|
|
// Extract and save individual files as temp
|
|
// Extract and save individual files as temp
|
|
|
- Log::info('Paso 7: Extrayendo y guardando archivos individuales como temporales');
|
|
|
|
|
- $individualTempFiles = $this->extractAndSaveIndividualFilesAsTemp($request->file('zip_file'), $request->input('linea'), "0000000001");
|
|
|
|
|
|
|
+ $individualTempFiles = $this->extractAndSaveIndividualFilesAsTemp($request->file('zip_file'), $request->input('linea'), $idUser);
|
|
|
if ($individualTempFiles === false) {
|
|
if ($individualTempFiles === false) {
|
|
|
return $this->responseController->makeResponse(true, 'Error procesando archivos individuales', [], 400);
|
|
return $this->responseController->makeResponse(true, 'Error procesando archivos individuales', [], 400);
|
|
|
}
|
|
}
|
|
|
- Log::info('✓ Archivos individuales guardados como temporales: ' . count($individualTempFiles));
|
|
|
|
|
|
|
|
|
|
$comparison['temp_files'] = $tempFiles['files'];
|
|
$comparison['temp_files'] = $tempFiles['files'];
|
|
|
$comparison['individual_temp_files'] = $individualTempFiles;
|
|
$comparison['individual_temp_files'] = $individualTempFiles;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- Log::info('=== VALIDACIÓN COMPLETADA EXITOSAMENTE ===');
|
|
|
|
|
return $this->responseController->makeResponse(false, 'Validación completada.', $comparison);
|
|
return $this->responseController->makeResponse(false, 'Validación completada.', $comparison);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -191,10 +166,8 @@ class ValidateLoadArchivesController extends Controller
|
|
|
private function validateExcelHeaders($file)
|
|
private function validateExcelHeaders($file)
|
|
|
{
|
|
{
|
|
|
try {
|
|
try {
|
|
|
- Log::info(' - Cargando archivo Excel: ' . $file->getClientOriginalName());
|
|
|
|
|
$spreadsheet = IOFactory::load($file->getPathname());
|
|
$spreadsheet = IOFactory::load($file->getPathname());
|
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
|
- Log::info(' - Excel cargado, validando encabezados en fila 7');
|
|
|
|
|
|
|
|
|
|
// Check each expected header in row 7
|
|
// Check each expected header in row 7
|
|
|
foreach ($this->expectedHeaders as $header) {
|
|
foreach ($this->expectedHeaders as $header) {
|
|
@@ -218,7 +191,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
*/
|
|
*/
|
|
|
private function validateZipFile($file)
|
|
private function validateZipFile($file)
|
|
|
{
|
|
{
|
|
|
- Log::info(' - Abriendo archivo ZIP: ' . $file->getClientOriginalName());
|
|
|
|
|
$zip = new ZipArchive();
|
|
$zip = new ZipArchive();
|
|
|
$result = $zip->open($file->getPathname());
|
|
$result = $zip->open($file->getPathname());
|
|
|
|
|
|
|
@@ -231,7 +203,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
return ['error' => true, 'message' => 'El archivo ZIP está vacío.'];
|
|
return ['error' => true, 'message' => 'El archivo ZIP está vacío.'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Log::info(' - ZIP contiene ' . $zip->numFiles . ' archivos');
|
|
|
|
|
$zip->close();
|
|
$zip->close();
|
|
|
return ['error' => false];
|
|
return ['error' => false];
|
|
|
}
|
|
}
|
|
@@ -247,7 +218,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$spreadsheet = IOFactory::load($file->getPathname());
|
|
$spreadsheet = IOFactory::load($file->getPathname());
|
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
|
$highestRow = $worksheet->getHighestRow();
|
|
$highestRow = $worksheet->getHighestRow();
|
|
|
- Log::info(' - Procesando ' . ($highestRow - 7) . ' filas de datos (filas 8-' . $highestRow . ')');
|
|
|
|
|
$files = [];
|
|
$files = [];
|
|
|
|
|
|
|
|
// Process each row starting from row 8 (data rows)
|
|
// Process each row starting from row 8 (data rows)
|
|
@@ -311,7 +281,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$zip->open($zipFile->getPathname());
|
|
$zip->open($zipFile->getPathname());
|
|
|
|
|
|
|
|
// Extract all file names and sizes from ZIP
|
|
// Extract all file names and sizes from ZIP
|
|
|
- Log::info(' - Extrayendo nombres de archivos del ZIP');
|
|
|
|
|
$zipFiles = [];
|
|
$zipFiles = [];
|
|
|
$zipFileSizes = [];
|
|
$zipFileSizes = [];
|
|
|
for ($i = 0; $i < $zip->numFiles; $i++) {
|
|
for ($i = 0; $i < $zip->numFiles; $i++) {
|
|
@@ -330,10 +299,8 @@ class ValidateLoadArchivesController extends Controller
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
$zip->close();
|
|
$zip->close();
|
|
|
- Log::info(' - ZIP contiene ' . count($zipFiles) . ' archivos (excluyendo directorios)');
|
|
|
|
|
|
|
|
|
|
// Validate file sizes
|
|
// Validate file sizes
|
|
|
- Log::info(' - Validando tamaños de archivos');
|
|
|
|
|
foreach ($zipFileSizes as $fileName => $size) {
|
|
foreach ($zipFileSizes as $fileName => $size) {
|
|
|
$extension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
|
|
$extension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
|
|
|
if (isset($this->fileSizeLimits[$extension])) {
|
|
if (isset($this->fileSizeLimits[$extension])) {
|
|
@@ -351,13 +318,10 @@ class ValidateLoadArchivesController extends Controller
|
|
|
|
|
|
|
|
// Get file names from Excel listings
|
|
// Get file names from Excel listings
|
|
|
$excelFileNames = array_column($excelFiles, 'file_name');
|
|
$excelFileNames = array_column($excelFiles, 'file_name');
|
|
|
- Log::info(' - Excel lista ' . count($excelFileNames) . ' archivos');
|
|
|
|
|
|
|
|
|
|
// Find discrepancies between Excel and ZIP
|
|
// Find discrepancies between Excel and ZIP
|
|
|
$missingInZip = array_diff($excelFileNames, $zipFiles);
|
|
$missingInZip = array_diff($excelFileNames, $zipFiles);
|
|
|
$extraInZip = array_diff($zipFiles, $excelFileNames);
|
|
$extraInZip = array_diff($zipFiles, $excelFileNames);
|
|
|
- Log::info(' - Archivos faltantes en ZIP: ' . count($missingInZip));
|
|
|
|
|
- Log::info(' - Archivos extra en ZIP: ' . count($extraInZip));
|
|
|
|
|
|
|
|
|
|
return [
|
|
return [
|
|
|
'valid' => empty($missingInZip) && empty($extraInZip),
|
|
'valid' => empty($missingInZip) && empty($extraInZip),
|
|
@@ -385,8 +349,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$excelResponse = $this->documentManagementController->uploadTempFile($excelRequest);
|
|
$excelResponse = $this->documentManagementController->uploadTempFile($excelRequest);
|
|
|
$excelData = json_decode($excelResponse->getContent());
|
|
$excelData = json_decode($excelResponse->getContent());
|
|
|
|
|
|
|
|
- Log::info('Excel upload response:', ['data' => $excelData]);
|
|
|
|
|
-
|
|
|
|
|
if ($excelData->error) {
|
|
if ($excelData->error) {
|
|
|
$errorMsg = isset($excelData->message) ? $excelData->message : 'Error desconocido subiendo Excel';
|
|
$errorMsg = isset($excelData->message) ? $excelData->message : 'Error desconocido subiendo Excel';
|
|
|
return ['error' => true, 'message' => 'Error subiendo Excel: ' . $errorMsg];
|
|
return ['error' => true, 'message' => 'Error subiendo Excel: ' . $errorMsg];
|
|
@@ -405,8 +367,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$zipResponse = $this->documentManagementController->uploadTempFile($zipRequest);
|
|
$zipResponse = $this->documentManagementController->uploadTempFile($zipRequest);
|
|
|
$zipData = json_decode($zipResponse->getContent());
|
|
$zipData = json_decode($zipResponse->getContent());
|
|
|
|
|
|
|
|
- Log::info('ZIP upload response:', ['data' => $zipData]);
|
|
|
|
|
-
|
|
|
|
|
if ($zipData->error) {
|
|
if ($zipData->error) {
|
|
|
$errorMsg = isset($zipData->message) ? $zipData->message : 'Error desconocido subiendo ZIP';
|
|
$errorMsg = isset($zipData->message) ? $zipData->message : 'Error desconocido subiendo ZIP';
|
|
|
return ['error' => true, 'message' => 'Error subiendo ZIP: ' . $errorMsg];
|
|
return ['error' => true, 'message' => 'Error subiendo ZIP: ' . $errorMsg];
|
|
@@ -426,8 +386,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
*/
|
|
*/
|
|
|
public function processLoadArchives(Request $request)
|
|
public function processLoadArchives(Request $request)
|
|
|
{
|
|
{
|
|
|
- Log::info('=== INICIANDO PROCESAMIENTO DE ARCHIVOS ===');
|
|
|
|
|
-
|
|
|
|
|
$validator = Validator::make($request->all(), [
|
|
$validator = Validator::make($request->all(), [
|
|
|
'id_user' => 'required|string',
|
|
'id_user' => 'required|string',
|
|
|
'linea' => 'required|integer',
|
|
'linea' => 'required|integer',
|
|
@@ -447,8 +405,7 @@ class ValidateLoadArchivesController extends Controller
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$form = $request->all();
|
|
$form = $request->all();
|
|
|
- // $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
|
|
- $idUser = "0000000001";
|
|
|
|
|
|
|
+ $idUser = $this->encryptionController->decrypt($form['id_user']);
|
|
|
if (!$idUser) {
|
|
if (!$idUser) {
|
|
|
return $this->responseController->makeResponse(true, 'ID de usuario inválido.', [], 400);
|
|
return $this->responseController->makeResponse(true, 'ID de usuario inválido.', [], 400);
|
|
|
}
|
|
}
|
|
@@ -457,7 +414,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
// Move Excel to final
|
|
// Move Excel to final
|
|
|
- Log::info('Moviendo Excel a almacenamiento final');
|
|
|
|
|
$excelFinal = $this->moveToFinal($form['temp_files']['excel'], $form['linea'], $idUser);
|
|
$excelFinal = $this->moveToFinal($form['temp_files']['excel'], $form['linea'], $idUser);
|
|
|
if (!$excelFinal) {
|
|
if (!$excelFinal) {
|
|
|
return $this->responseController->makeResponse(true, 'Error procesando Excel', [], 400);
|
|
return $this->responseController->makeResponse(true, 'Error procesando Excel', [], 400);
|
|
@@ -465,7 +421,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$finalFiles['excel'] = $excelFinal;
|
|
$finalFiles['excel'] = $excelFinal;
|
|
|
|
|
|
|
|
// Move ZIP to final
|
|
// Move ZIP to final
|
|
|
- Log::info('Moviendo ZIP a almacenamiento final');
|
|
|
|
|
$zipFinal = $this->moveToFinal($form['temp_files']['zip'], $form['linea'], $idUser);
|
|
$zipFinal = $this->moveToFinal($form['temp_files']['zip'], $form['linea'], $idUser);
|
|
|
if (!$zipFinal) {
|
|
if (!$zipFinal) {
|
|
|
return $this->responseController->makeResponse(true, 'Error procesando ZIP', [], 400);
|
|
return $this->responseController->makeResponse(true, 'Error procesando ZIP', [], 400);
|
|
@@ -473,7 +428,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
$finalFiles['zip'] = $zipFinal;
|
|
$finalFiles['zip'] = $zipFinal;
|
|
|
|
|
|
|
|
// Move individual temp files to final storage
|
|
// Move individual temp files to final storage
|
|
|
- Log::info('Moviendo archivos individuales de temporal a final');
|
|
|
|
|
$individualFiles = [];
|
|
$individualFiles = [];
|
|
|
foreach ($form['individual_temp_files'] as $tempFile) {
|
|
foreach ($form['individual_temp_files'] as $tempFile) {
|
|
|
$finalFileId = $this->moveToFinal($tempFile['temp_id'], $form['linea'], $idUser);
|
|
$finalFileId = $this->moveToFinal($tempFile['temp_id'], $form['linea'], $idUser);
|
|
@@ -485,13 +439,9 @@ class ValidateLoadArchivesController extends Controller
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
$finalFiles['individual_files'] = $individualFiles;
|
|
$finalFiles['individual_files'] = $individualFiles;
|
|
|
- Log::info('Archivos individuales procesados: ' . count($individualFiles));
|
|
|
|
|
-
|
|
|
|
|
- Log::info('=== PROCESAMIENTO COMPLETADO EXITOSAMENTE ===');
|
|
|
|
|
return $this->responseController->makeResponse(false, 'Archivos procesados exitosamente.', $finalFiles);
|
|
return $this->responseController->makeResponse(false, 'Archivos procesados exitosamente.', $finalFiles);
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('Error en procesamiento: ' . $e->getMessage());
|
|
|
|
|
return $this->responseController->makeResponse(true, 'Error interno: ' . $e->getMessage(), [], 500);
|
|
return $this->responseController->makeResponse(true, 'Error interno: ' . $e->getMessage(), [], 500);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -516,7 +466,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
return $result[0] ? $result[1] : false;
|
|
return $result[0] ? $result[1] : false;
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('Error en moveToFinal: ' . $e->getMessage());
|
|
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -529,7 +478,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
try {
|
|
try {
|
|
|
$zip = new ZipArchive();
|
|
$zip = new ZipArchive();
|
|
|
if ($zip->open($zipFile->getPathname()) !== TRUE) {
|
|
if ($zip->open($zipFile->getPathname()) !== TRUE) {
|
|
|
- Log::error('Cannot open ZIP file');
|
|
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -570,12 +518,11 @@ class ValidateLoadArchivesController extends Controller
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$zip->close();
|
|
$zip->close();
|
|
|
- //$this->removeDirectory($tempDir);
|
|
|
|
|
|
|
+ $this->removeDirectory($tempDir);
|
|
|
|
|
|
|
|
return $tempFiles;
|
|
return $tempFiles;
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('Error en extractAndSaveIndividualFilesAsTemp: ' . $e->getMessage());
|
|
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -611,7 +558,6 @@ class ValidateLoadArchivesController extends Controller
|
|
|
return $data->error ? false : $data->response->idArchivo;
|
|
return $data->error ? false : $data->response->idArchivo;
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('Error en uploadExtractedFileAsTemp: ' . $e->getMessage());
|
|
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|