diff --git a/app/Controllers/JobWorker.php b/app/Controllers/JobWorker.php index 5c099fe8..a0d5f694 100644 --- a/app/Controllers/JobWorker.php +++ b/app/Controllers/JobWorker.php @@ -6,6 +6,7 @@ namespace App\Controllers; use App\Models\JobModel; +use App\Models\FileModel; class JobWorker extends AdminController { const STATUS_DONE = 'done'; @@ -287,23 +288,24 @@ class JobWorker extends AdminController try { $response = $jobHandler($payload,$job->id); + $job_status = self::STATUS_DONE; } catch(\Exception $e) { $job_status = self::STATUS_FAILED; $runtime = $runtime === null ? microtime(true) - $start : $runtime; - $response = ['file_name' => $e->getFile(),'error' => $e->getMessage(),'line_no' => $e->getLine(),'info' => $e->getTraceAsString()]; + $response = ['file_name' => $e->getFile(),'error' => $e->getMessage(),'line_no' => $e->getLine(),'info' => $e->getTraceAsString(),'scope' => 'task failed']; } $runtime = microtime(true) - $start; - $job_status = self::STATUS_DONE; + } catch (\Exception $e) { //die(); $job_status = self::STATUS_FAILED; $runtime = $runtime === null ? microtime(true) - $start : $runtime; - $response = ['file_name' => $e->getFile(),'error' => $e->getMessage(),'line_no' => $e->getLine(),'info' => $e->getTraceAsString()]; + $response = ['file_name' => $e->getFile(),'error' => $e->getMessage(),'line_no' => $e->getLine(),'info' => $e->getTraceAsString(),'scope' => 'worker failed']; } $db->query("UPDATE jobs SET status=?, run_time=?, response=? WHERE id=? AND uuid=?", [ @@ -313,6 +315,21 @@ class JobWorker extends AdminController $job->id,$job->uuid ]); + //update file status if this job is directly linked with a file id + + if($job_status == self::STATUS_FAILED) + { + //get file from job payload + if(array_key_exists('file_id', $payload) && $payload['file_id'] != NULL && $payload['file_id'] != "" && is_numeric($payload['file_id']) && count($payload) == 1) + { + $fileModel = new FileModel(); + $fileModel->where('id', $payload['file_id']) + ->set(['status' => 'failed','reason' => json_encode(['error_type' => 0,'error_summary' => [0],'error_data' => 'System Error, please contact Admin/Support team']) ]) + ->update(); + } + + } + // echo "Job $job->id $job_status. Response - $response \n"; // echo "Job $job->id $job_status \n"; SELF::streamOutput("Job $job->id $job_status \n"); diff --git a/app/Views/employee_upload.php b/app/Views/employee_upload.php index 9d40885e..cc94977d 100644 --- a/app/Views/employee_upload.php +++ b/app/Views/employee_upload.php @@ -476,6 +476,10 @@ function fetchFileError(file_id) { var err_id = parseInt(key); var err_count = file_error_data['error_summary'][key]; switch (err_id) { + case 0: + file_error_html += + ""+file_error_data['error_data']+""; + break; case 1: file_error_html += "Mandatory values missing " + @@ -562,7 +566,7 @@ function fetchFileError(file_id) { // console.log('file_error_html_2', file_error_html) } - if (err_id != 5 && err_id != 6) { + if (err_id != 5 && err_id != 6 && err_id != 0) { file_error_html += (file_error_html != "" ? "