|
|
@@ -4,8 +4,6 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
-use Illuminate\Support\Facades\DB;
|
|
|
-use Illuminate\Support\Facades\Log;
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
use ZipArchive;
|
|
|
use App\Jobs\ValidateLoadArchives;
|
|
|
@@ -109,21 +107,21 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
if ($excelValidation['error']) {
|
|
|
return $this->responseController->makeResponse(true, $excelValidation['message'], [], 400);
|
|
|
}
|
|
|
- Log::info('ValidateFiles: Headers Excel validados correctamente');
|
|
|
+
|
|
|
|
|
|
// Validate ZIP file integrity
|
|
|
$zipValidation = $this->validateZipFile($request->file('zip_file'));
|
|
|
if ($zipValidation['error']) {
|
|
|
return $this->responseController->makeResponse(true, $zipValidation['message'], [], 400);
|
|
|
}
|
|
|
- Log::info('ValidateFiles: Archivo ZIP validado correctamente');
|
|
|
+
|
|
|
|
|
|
// Extract and validate file listings from Excel
|
|
|
$filesValidation = $this->extractAndValidateFiles($request->file('excel_file'));
|
|
|
if ($filesValidation['error']) {
|
|
|
return $this->responseController->makeResponse(true, $filesValidation['message'], [], 400);
|
|
|
}
|
|
|
- Log::info('ValidateFiles: Archivos extraídos del Excel', ['count' => count($filesValidation['files'])]);
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
@@ -134,7 +132,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
if (isset($comparison['error'])) {
|
|
|
return $this->responseController->makeResponse(true, $comparison['error'], [], 400);
|
|
|
}
|
|
|
- Log::info('ValidateFiles: Comparación Excel-ZIP completada', ['valid' => $comparison['valid']]);
|
|
|
+
|
|
|
|
|
|
if (!$comparison['valid']) {
|
|
|
return $this->responseController->makeResponse(
|
|
|
@@ -158,13 +156,13 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
'temp_files' => $tempFiles['files']
|
|
|
];
|
|
|
|
|
|
- Log::info('ValidateFiles: Datos serializados para el job', $requestData);
|
|
|
+
|
|
|
|
|
|
//make sync the call to the job
|
|
|
|
|
|
// Ejecutar el job sincrónicamente en lugar de despacharlo a la cola
|
|
|
- (new ValidateLoadArchives($requestData, $userId, $jobId))->handle();
|
|
|
- //ValidateLoadArchives::dispatch($requestData, $userId, $jobId);
|
|
|
+ //(new ValidateLoadArchives($requestData, $userId, $jobId))->handle();
|
|
|
+ ValidateLoadArchives::dispatch($requestData, $userId, $jobId);
|
|
|
|
|
|
return $this->responseController->makeResponse(
|
|
|
false,
|
|
|
@@ -194,7 +192,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Log::info('ValidateExcelHeaders: Todos los headers validados correctamente');
|
|
|
+
|
|
|
return ['error' => false];
|
|
|
} catch (\Exception $e) {
|
|
|
return ['error' => true, 'message' => 'Error al procesar el archivo Excel: ' . $e->getMessage()];
|
|
|
@@ -218,7 +216,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
return ['error' => true, 'message' => 'El archivo ZIP está vacío.'];
|
|
|
}
|
|
|
|
|
|
- Log::info('ValidateZipFile: ZIP válido', ['num_files' => $zip->numFiles]);
|
|
|
+
|
|
|
$zip->close();
|
|
|
return ['error' => false];
|
|
|
}
|
|
|
@@ -236,7 +234,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
$highestRow = $worksheet->getHighestRow();
|
|
|
$files = [];
|
|
|
|
|
|
- Log::info('ExtractAndValidateFiles: Iniciando extracción', ['total_rows' => $highestRow]);
|
|
|
+
|
|
|
|
|
|
// Process each row starting from row 8 (data rows)
|
|
|
for ($row = 8; $row <= $highestRow; $row++) {
|
|
|
@@ -282,10 +280,10 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Log::info('ExtractAndValidateFiles: Extracción completada', ['files_found' => count($files)]);
|
|
|
+
|
|
|
return ['error' => false, 'files' => $files];
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('ExtractAndValidateFiles: Excepción', ['error' => $e->getMessage()]);
|
|
|
+
|
|
|
return ['error' => true, 'message' => 'Error al extraer archivos del Excel: ' . $e->getMessage()];
|
|
|
}
|
|
|
}
|
|
|
@@ -299,7 +297,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
$zip = new ZipArchive();
|
|
|
$zip->open($zipFile->getPathname());
|
|
|
|
|
|
- Log::info('CompareExcelWithZip: Iniciando comparación');
|
|
|
+
|
|
|
|
|
|
// Extract all file names and sizes from ZIP
|
|
|
$zipFiles = [];
|
|
|
@@ -341,11 +339,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
$extraInZip = array_diff($zipFiles, $excelFileNames);
|
|
|
|
|
|
$isValid = empty($missingInZip) && empty($extraInZip);
|
|
|
- Log::info('CompareExcelWithZip: Comparación completada', [
|
|
|
- 'valid' => $isValid,
|
|
|
- 'missing_count' => count($missingInZip),
|
|
|
- 'extra_count' => count($extraInZip)
|
|
|
- ]);
|
|
|
+
|
|
|
|
|
|
return [
|
|
|
'valid' => $isValid,
|
|
|
@@ -360,7 +354,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
private function uploadTempFiles(Request $request)
|
|
|
{
|
|
|
try {
|
|
|
- Log::info('UploadTempFiles: Iniciando subida de archivos temporales');
|
|
|
+
|
|
|
$tempFiles = [];
|
|
|
|
|
|
// Upload Excel file
|
|
|
@@ -376,7 +370,7 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
|
|
|
if ($excelData->error) {
|
|
|
$errorMsg = isset($excelData->message) ? $excelData->message : 'Error desconocido subiendo Excel';
|
|
|
- Log::error('UploadTempFiles: Error subiendo Excel', ['message' => $errorMsg]);
|
|
|
+
|
|
|
return ['error' => true, 'message' => 'Error subiendo Excel: ' . $errorMsg];
|
|
|
}
|
|
|
|
|
|
@@ -395,17 +389,17 @@ class AsyncValidateLoadArchivesController extends Controller
|
|
|
|
|
|
if ($zipData->error) {
|
|
|
$errorMsg = isset($zipData->message) ? $zipData->message : 'Error desconocido subiendo ZIP';
|
|
|
- Log::error('UploadTempFiles: Error subiendo ZIP', ['message' => $errorMsg]);
|
|
|
+
|
|
|
return ['error' => true, 'message' => 'Error subiendo ZIP: ' . $errorMsg];
|
|
|
}
|
|
|
|
|
|
$tempFiles['zip'] = $zipData->response->idArchivo;
|
|
|
|
|
|
- Log::info('UploadTempFiles: Archivos temporales subidos exitosamente', $tempFiles);
|
|
|
+
|
|
|
return ['error' => false, 'files' => $tempFiles];
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('UploadTempFiles: Excepción', ['error' => $e->getMessage()]);
|
|
|
+
|
|
|
return ['error' => true, 'message' => 'Error en uploadTempFiles: ' . $e->getMessage()];
|
|
|
}
|
|
|
}
|