|
|
@@ -1,5 +1,6 @@
|
|
|
<?php
|
|
|
// Configuración de BD
|
|
|
+
|
|
|
$host = 'localhost';
|
|
|
$port = 3306;
|
|
|
$database = 'samqa';
|
|
|
@@ -97,11 +98,27 @@ try {
|
|
|
$results = json_decode($job['results'], true) ?? ['processed_files' => []];
|
|
|
$procesados = $results['processed_files'] ?? [];
|
|
|
|
|
|
- // 5. Abrir ZIP y obtener lista completa de archivos
|
|
|
- $zipPath = $job['zip_temp_path'];
|
|
|
+ // 5. Buscar ruta del ZIP en base de datos
|
|
|
+ $stmt = $pdo->prepare("SELECT ARTE_UBTE FROM s002v01tarte WHERE ARTE_IDAR = ?");
|
|
|
+ $stmt->execute([$job['zip_temp_id']]);
|
|
|
+ $zipData = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
+
|
|
|
+ if (!$zipData) {
|
|
|
+ throw new Exception("ZIP ID no encontrado: {$job['zip_temp_id']}");
|
|
|
+ }
|
|
|
+
|
|
|
+ $zipPath = $zipData['ARTE_UBTE'];
|
|
|
if (!file_exists($zipPath)) {
|
|
|
throw new Exception("ZIP no encontrado: {$zipPath}");
|
|
|
}
|
|
|
+
|
|
|
+ // Guardar IDs de archivos temporales
|
|
|
+ $tempFiles = [
|
|
|
+ 'excel' => getEncrypt($job['excel_temp_id']),
|
|
|
+ 'zip' => getEncrypt($job['zip_temp_id'])
|
|
|
+ ];
|
|
|
+
|
|
|
+ $individualTempFiles = [];
|
|
|
|
|
|
$zip = new ZipArchive();
|
|
|
if ($zip->open($zipPath) !== TRUE) {
|
|
|
@@ -173,8 +190,15 @@ try {
|
|
|
unlink($archivoExtraido);
|
|
|
|
|
|
// Solo marcar como procesado si el endpoint respondió exitosamente
|
|
|
- echo "response: {$response}\n";
|
|
|
if ($httpCode >= 200 && $httpCode < 300) {
|
|
|
+ $responseData = json_decode($response, true);
|
|
|
+ if (isset($responseData['response']['idArchivo'])) {
|
|
|
+ $individualTempFiles[] = [
|
|
|
+ 'original_name' => $nombreArchivo,
|
|
|
+ 'temp_id' => $responseData['response']['idArchivo']
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
$procesados[] = $nombreArchivo;
|
|
|
$progress = intval((count($procesados) / $totalArchivos) * 100);
|
|
|
|
|
|
@@ -189,7 +213,7 @@ try {
|
|
|
// Enviar notificación de progreso
|
|
|
sendWebSocketNotification($job['user_id'], 'progress', $job['id'], $progress);
|
|
|
|
|
|
- echo "Progreso: {$progress}%\n";
|
|
|
+ //echo "Progreso: {$progress}%\n";
|
|
|
} else {
|
|
|
echo "Error al procesar archivo {$nombreArchivo}: HTTP {$httpCode}\n";
|
|
|
throw new Exception("Error al procesar archivo: {$nombreArchivo}");
|
|
|
@@ -209,8 +233,14 @@ try {
|
|
|
");
|
|
|
$stmt->execute([$job['id']]);
|
|
|
|
|
|
- // Enviar notificación de completado
|
|
|
- sendWebSocketNotification($job['user_id'], 'completed', $job['id'], 100);
|
|
|
+ // Enviar notificación de completado con archivos temporales
|
|
|
+ $completionData = [
|
|
|
+ 'temp_files' => $tempFiles,
|
|
|
+ 'individual_temp_files' => $individualTempFiles
|
|
|
+ ];
|
|
|
+
|
|
|
+ echo ("completionData: " . json_encode($completionData) . "\n");
|
|
|
+ sendWebSocketNotification($job['user_id'], 'completed', $job['id'], 100, $completionData);
|
|
|
|
|
|
echo "Job completado: {$job['id']}\n";
|
|
|
|
|
|
@@ -239,7 +269,7 @@ try {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function sendWebSocketNotification($userId, $status, $jobId, $progress = null) {
|
|
|
+function sendWebSocketNotification($userId, $status, $jobId, $progress = 0, $completionData = []) {
|
|
|
try {
|
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
|
|
|
|
@@ -257,14 +287,19 @@ function sendWebSocketNotification($userId, $status, $jobId, $progress = null) {
|
|
|
$data['progress'] = $progress;
|
|
|
}
|
|
|
|
|
|
+ if (!empty($completionData)) {
|
|
|
+ $data = array_merge($data, $completionData);
|
|
|
+ }
|
|
|
+
|
|
|
$client->emit('laravel_emit', [
|
|
|
'event' => 'validation_status',
|
|
|
'data' => $data,
|
|
|
+ 'completionData' => $completionData,
|
|
|
'userId' => (string)$userId
|
|
|
]);
|
|
|
|
|
|
$client->close();
|
|
|
- echo "WebSocket: $status enviado a usuario $userId\n";
|
|
|
+ //echo "WebSocket: $status enviado a usuario $userId\n";
|
|
|
} catch (Exception $e) {
|
|
|
echo "WebSocket error: " . $e->getMessage() . "\n";
|
|
|
}
|
|
|
@@ -279,4 +314,16 @@ function getStatusMessage($status) {
|
|
|
'failed' => 'Error en validación'
|
|
|
];
|
|
|
return $messages[$status] ?? 'Estado desconocido';
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+function getEncrypt($value){
|
|
|
+ $ch = curl_init('http://192.168.2.21:8000/api/encrypt');
|
|
|
+ curl_setopt($ch, CURLOPT_POST, true);
|
|
|
+ curl_setopt($ch, CURLOPT_POSTFIELDS, ['value' => $value]);
|
|
|
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
+ $response = curl_exec($ch);
|
|
|
+ curl_close($ch);
|
|
|
+
|
|
|
+ $responseData = json_decode($response, true);
|
|
|
+ return $responseData['response']['encrypted'];
|
|
|
+}
|