diff --git a/app/Config/Routes.php b/app/Config/Routes.php index fe10e12f..c0a2d653 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -220,6 +220,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("full-excel-error-file/(:any)", "EmployeeController::downloadFullExcelErrorFile/$1"); $routes->get("id-card", "EmployeeController::viewECard/$1"); $routes->get("preview-card/(:any)", "EmployeeController::previewTemplate/$1"); + $routes->get("export-import-error-list/(:any)", "EmployeeController::errorListExportImport/$1"); }); $routes->cli('cli/processjob', 'JobWorker::processJob'); diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index af0710f0..d7b04f76 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -22,8 +22,10 @@ use App\Models\EmpEndorsementModel; use App\Models\ClientDepositModel; use App\Controllers\Jobs; +use App\Controllers\JobWorker; + + use PhpOffice\PhpSpreadsheet\Spreadsheet; -// use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Reader\Exception as SpreadsheetReaderException; @@ -93,6 +95,19 @@ class EmpDataServiceController extends BaseController } + public function insertBatchList($params){ + + foreach ($params['batch_list_data'] as $value) { + + $batch_list_data['batch_code'] = $params['batch_code']; + $batch_list_data['emp_policy_id'] = $value['primaryKey']; + $batch_list_data['created_by'] = get_session_userid(); + $this->batchListModel->insert($batch_list_data); + } + + } + + /** * Generates an Excel file for Inception_Addititon_DependentAddititon, Correction, SI_Enhancement and Deletion events based on given export data. * @@ -107,23 +122,31 @@ class EmpDataServiceController extends BaseController public function generateExcelForAdditionandInception($export_data) { + + $return = $this->removeOldExportInfoFromBatchFile($export_data); + // Fetch employee data for export from the database $objects = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($export_data); - + $insurer_id = $this->clientPolicyModel->where('id', $export_data['client_policy_id'])->first(); - $cash_balance = $this->clientDepositModel->where('client_id',$export_data['client_id'] )->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); - - + $cash_balance = $this->clientDepositModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); + + $totals = 0; foreach ($objects as $key => $value) { - + $totals += $value->total; } - if((int) $cash_balance['balance'] < (int) $totals){ + if (!empty($cash_balance)) { - return 0; + if ((int) $cash_balance['balance'] < (int) $totals) { + + return 0; + } + } else { + // return 0; } @@ -131,6 +154,7 @@ class EmpDataServiceController extends BaseController $count = count($objects); $export_data['count'] = $count; $export_data['amount'] = $totals; + $export_data['status'] = 'success'; $this->myLogger->logme('error', 'Inception export data count : {data}', ['data' => $count]); @@ -177,11 +201,27 @@ class EmpDataServiceController extends BaseController // If Excel generation is successful if ($success) { + + // Batch files and list entry - $return = $this->batchFilesAndBatchListEntry($export_data, $objects); + // $return = $this->batchFilesAndBatchListEntry($export_data, $objects); + + $random_number_count = 4; + $export_data['batch_code'] = generate_random_string($random_number_count); + $export_data['created_by'] = get_session_userid(); + + $insert = $this->batchFileModel->insert($export_data); + $batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first(); + $batch_code = $batch_file_batch_code['batch_code']; + + // $this->insertBatchList(['batch_code' => $batch_code, 'batch_list_data' => $objects ]); + + $job_details = new Jobs(); + $r = Jobs::addJob(['job_name' => 'insertBatchList','payload' => ['batch_code' => $batch_code, 'batch_list_data' => $objects ]]); + // If batch operation is successful - if ($return) { + if (true) { // Set headers for Excel file download header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $export_data['file_name'] . '"'); @@ -195,7 +235,9 @@ class EmpDataServiceController extends BaseController fclose($tempFile); return true; // Excel file successfully generated and exported + } else { + return false; // Batch operation failed } } @@ -289,7 +331,7 @@ class EmpDataServiceController extends BaseController $ids = []; $objects = $this->employeePolicyModel->getSIEnhancementEmployeesDataForExportExcel($export_data); - + $totals = 0; foreach ($objects as $obj) { $ids[] = $obj->endorsement_primarykey; @@ -395,7 +437,7 @@ class EmpDataServiceController extends BaseController $count = count($objects); $export_data['count'] = $count; $export_data['amount'] = $rounded_totals; - + $this->myLogger->logme('error', 'Deletion export data count : {data}', ['data' => $count]); @@ -490,181 +532,467 @@ class EmpDataServiceController extends BaseController public function importExcelDataForInception($import_data) { - $client_id = $import_data['client_id']; - $client_policy_id = $import_data['client_policy_id']; $file = $import_data['file']; - $data = $this->readExcelToArray($file); - - if (!$data) { - - return 0; - } - - unset($data[0]); - array_pop($data); - $count = count($data); - - $missing_id = []; - $empty_emp_tpa_uh_ids = []; - $totals = 0; - foreach ($data as $key => $value) { - - try { - - - if ($import_data['insurer_or_tpa'] == 'tpa') { - - if ($value[15] === null) { - $missing_id[] = $key + 1; - } - } else if ($import_data['insurer_or_tpa'] == 'insurer') { - - if ($value[16] === null) { - $missing_id[] = $key + 1; - } - } - - $emp_code = $value[2]; - $name = $value[1]; - $totals += $value[20]; - - $db = \Config\Database::connect(); - - // Execute the query - $query = $db->table('employee_polices'); - $query->select('employee_polices.id'); - $query->join('employees', 'employees.id = employee_polices.employee_id'); - $query->where('employee_polices.client_policy_id', $client_policy_id); - $query->where('employees.client_id', $client_id); - $query->where('employees.name', $name); - $query->where('employees.emp_code', $emp_code); - if ($import_data['insurer_or_tpa'] == 'tpa') { - - $query->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")'); - } else if ($import_data['insurer_or_tpa'] == 'insurer') { - - $query->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")'); - } - $query->where('employee_polices.is_active', 1); - $query->limit(1); - - // Get the result - $result = $query->get()->getRowArray(); - if (isset($result['id']) && $result['id'] !== null) { - $empty_emp_tpa_uh_ids[] = $result['id']; - } - } catch (\Exception $e) { - - return 0; - } - } - - - $missing_id_count = count($missing_id); - $empty_id_count = count($empty_emp_tpa_uh_ids); - - - if ($import_data['insurer_or_tpa'] == 'tpa') { - - if ($empty_id_count == 0) { - - return 3; - } - - if ($missing_id_count != 0) { - - return 2; - } - } else if ($import_data['insurer_or_tpa'] == 'insurer') { - - if ($empty_id_count == 0) { - - return 5; - } - - if ($missing_id_count != 0) { - - return 4; - } - } - - // if ($missing_id_count != $count) { - - // return 2; - // } - - - // if ($empty_emp_tpa_uh_ids != $count) { - - // return 3; - // } - - - - // dd($empty_emp_tpa_uh_ids); - $is_moved = $file->move(WRITEPATH . 'uploads/import_excel'); $filename = $file->getName(); $this->myLogger->logme('error', 'Inception Import file name : {data}', ['data' => $filename]); - $import_data['count'] = $count; + + $random_number_count = 4; + $import_data['batch_code'] = generate_random_string($random_number_count); + $import_data['created_by'] = get_session_userid(); + $import_data['status'] = 'pending'; $import_data['file_name'] = $filename; - $import_data['amount'] = $totals; + $insert = $this->batchFileModel->insert($import_data); - $this->insertBatchFileAndBatchListForImportExcel($import_data, $empty_emp_tpa_uh_ids); - - // dd($import_data, $empty_emp_tpa_uh_ids); - - - $tpa_id = []; - $uhid = []; - - foreach ($data as $key => $value) { - $tpa_id[] = $value[15]; - $uhid[] = $value[16]; - } - - foreach ($empty_emp_tpa_uh_ids as $key => $id) { - - $dataToUpdateTPAID = ['tpa_id' => $tpa_id[$key]]; - $dataToUpdateUHID = ['uhid' => $uhid[$key]]; - - $this->employeePolicyModel->where('id', $id) - ->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")') - ->set($dataToUpdateTPAID)->update(); - - $this->employeePolicyModel->where('id', $id) - ->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")') - ->set($dataToUpdateUHID)->update(); - } - - - if($import_data['insurer_or_tpa'] == 'tpa'){ - - $policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id); - $depositeData = [ - 'employeeIds' => $empty_emp_tpa_uh_ids, - 'client_id' => $client_id, - 'client_policy_id' => $client_policy_id, - 'count' => $count, - 'event' => $import_data['event_type'], - 'policy_name' => $policy_name['policy_name'], - ]; - - $this->cashDepositCalculationForInception($depositeData); - - - $this->sendMailForDownloadingECard($empty_emp_tpa_uh_ids); - - } + $file_id['file_id'] = $insert; + $job_details = new Jobs(); + $r = Jobs::addJob(['job_name' => 'importInceptionFileValidation','payload' => ['file_id' => $insert]]); return 1; } + public function importInceptionFileValidation($params) + { + + $file_id = $params['file_id']; + $file = $this->batchFileModel->where('id', $file_id)->first(); + $client_id = $file['client_id']; + $client_policy_id = $file['client_policy_id']; + $batch_code = $file['batch_code']; + + + $insurer_or_tpa = $file['insurer_or_tpa']; + if ($insurer_or_tpa == 'tpa') { + + $id = 'tpa_id'; + } else if ($insurer_or_tpa == 'insurer') { + + $id = 'uhid'; + } + + $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name']; + $excel_data = $this->readExcelFileToArray($file_name_with_path); + unset($excel_data[0]); + array_pop($excel_data); + + $emp_count = count($excel_data); + + $employee_data = $this->employeePolicyModel + ->select(' + + employee_polices.id as emp_policy_id, + employees.name AS emp_name, + employees.emp_code AS emp_code, + "Has Define" as emp_type, + employees.relationship_code AS emp_relationship_code, + employees.dob AS emp_dob, + employees.gender AS emp_gender, + employee_polices.pre_existing_alignments, + employee_polices.basic_cover_si, + employee_polices.date_coverage, + TIMESTAMPDIFF(YEAR, employees.dob, CURDATE()) AS emp_age, + employees.relationship AS emp_relationship, + employees.change_event AS change_event, + employee_polices.policy_end_date, + employee_polices.days, + employee_polices.tpa_id, + employee_polices.uhid, + employee_polices.premium, + employee_polices.rata_premimum, + employee_polices.gst, + (employee_polices.rata_premimum + employee_polices.gst) AS total + ') + + ->join('employees', 'employees.id = employee_polices.employee_id') + ->where('employee_polices.client_policy_id', $client_policy_id) + ->where('employees.client_id', $client_id) + ->where("employee_polices.{$id} IS NULL OR employee_polices.{$id} = ''") + ->findAll(); + + // echo '
';
+ // print_r($employee_data); die;
+
+
+ if ($employee_data == null || empty($employee_data)) {
+
+ if ($insurer_or_tpa == 'tpa') {
+
+ $data = [
+ 'status' => 'failed-1',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ return 3;
+
+ } else if ($insurer_or_tpa == 'insurer') {
+
+ $data = [
+ 'status' => 'failed-2',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ return 5;
+ }
+ }
+
+ $excel_data_count = count($excel_data);
+ $emp_data_count = count($employee_data);
+
+ // dd($excel_data_count, $emp_data_count);
+ $difference = $emp_data_count - $excel_data_count;
+
+ $status = 'in-progress';
+ if ($excel_data_count < $emp_data_count) {
+
+ $status = 'in-progress-partially';
+ $partially_updated_data = 'Expected : ' . $emp_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
+ }
+
+
+ if ($emp_data_count < $excel_data_count) {
+
+ $data = [
+ 'status' => 'failed-3',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ return 6;
+ }
+
+
+ $errors = []; // Initialize an array to store errors
+ $missing_id = [];
+ $batch_list_id = [];
+
+ foreach ($employee_data as $key => $emp_value) {
+
+ $key = $key + 1;
+
+ if(!isset($excel_data[$key])){
+ break;
+ }
+
+ if ($insurer_or_tpa == 'tpa') {
+ if ($excel_data[$key][15] === null) {
+ $missing_id[$key][] = [
+ 'row' => $key,
+ 'column' => 15,
+ ];
+ }
+ } else if ($insurer_or_tpa == 'insurer') {
+ if ($excel_data[$key][16] === null) {
+ $missing_id[$key][] = [
+ 'row' => $key,
+ 'column' => 16,
+ ];
+ }
+ }
+
+
+ if ($emp_value['emp_name'] != $excel_data[$key][1]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 1,
+ 'db_data' => $emp_value['emp_name'],
+ 'excel_data' => $excel_data[$key][1]
+ ];
+ }
+
+ if ($emp_value['emp_code'] != $excel_data[$key][2]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 2,
+ 'db_data' => $emp_value['emp_code'],
+ 'excel_data' => $excel_data[$key][2]
+ ];
+ }
+
+ if ($emp_value['emp_dob'] != $excel_data[$key][5]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 5,
+ 'db_data' => $emp_value['emp_dob'],
+ 'excel_data' => $excel_data[$key][5]
+ ];
+ }
+
+ if ($emp_value['emp_gender'] != $excel_data[$key][6]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 6,
+ 'db_data' => $emp_value['emp_gender'],
+ 'excel_data' => $excel_data[$key][6]
+ ];
+ }
+
+ if ($emp_value['pre_existing_alignments'] != $excel_data[$key][7]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 7,
+ 'db_data' => $emp_value['pre_existing_alignments'],
+ 'excel_data' => $excel_data[$key][7]
+ ];
+ }
+
+ if ($emp_value['basic_cover_si'] != $excel_data[$key][8]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 8,
+ 'db_data' => $emp_value['basic_cover_si'],
+ 'excel_data' => $excel_data[$key][8]
+ ];
+ }
+
+ if ($emp_value['emp_relationship'] != $excel_data[$key][11]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 11,
+ 'db_data' => $emp_value['emp_relationship'],
+ 'excel_data' => $excel_data[$key][11]
+ ];
+ }
+
+ if ($emp_value['policy_end_date'] != $excel_data[$key][13]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 13,
+ 'db_data' => $emp_value['policy_end_date'],
+ 'excel_data' => $excel_data[$key][13]
+ ];
+ }
+
+ if ($emp_value['days'] != $excel_data[$key][14]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 14,
+ 'db_data' => $emp_value['days'],
+ 'excel_data' => $excel_data[$key][14]
+ ];
+ }
+
+ if ($emp_value['premium'] != $excel_data[$key][17]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 17,
+ 'db_data' => $emp_value['premium'],
+ 'excel_data' => $excel_data[$key][17]
+ ];
+ }
+
+ if ($emp_value['rata_premimum'] != $excel_data[$key][18]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 18,
+ 'db_data' => $emp_value['rata_premimum'],
+ 'excel_data' => $excel_data[$key][18]
+ ];
+ }
+
+ if ($emp_value['gst'] != $excel_data[$key][19]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 19,
+ 'db_data' => $emp_value['gst'],
+ 'excel_data' => $excel_data[$key][19]
+ ];
+ }
+
+ if ($insurer_or_tpa == 'tpa') {
+
+ if ($emp_value['uhid'] != $excel_data[$key][16]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 16,
+ 'db_data' => $emp_value['uhid'],
+ 'excel_data' => $excel_data[$key][16]
+ ];
+ }
+
+ } else if ($insurer_or_tpa == 'insurer') {
+
+ if ($emp_value['tpa_id'] != $excel_data[$key][15]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 15,
+ 'db_data' => $emp_value['tpa_id'],
+ 'excel_data' => $excel_data[$key][15]
+ ];
+ }
+ }
+
+
+ $batch_list_id[] = $emp_value['emp_policy_id'];
+ }
+
+
+ $error_count = count($errors);
+ $json_errors = json_encode($errors);
+
+ // echo $json_errors; die;
+
+ $missing_id_count = count($missing_id);
+ $json_missing_id = json_encode($missing_id);
+
+ // dd($error_count, $missing_id_count, $json_errors, $json_missing_id);
+
+ // dd($batch_list_id);
+
+ if ($missing_id_count > 0) {
+
+ $data = [
+ 'error_data' => $json_missing_id,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ if ($insurer_or_tpa == 'tpa') {
+
+ return 2;
+
+ } else if ($insurer_or_tpa == 'insurer') {
+
+ return 4;
+ }
+ }
+
+
+ if ($error_count > 0) {
+
+ $data = [
+ 'error_data' => $json_errors,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ return 0;
+
+ } else {
+
+ $data = [
+ 'count' => $emp_count,
+ 'status' => $status,
+ 'error_data' => $partially_updated_data ?? null,
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+
+ foreach ($batch_list_id as $key => $value) {
+
+ $data = [
+ 'emp_policy_id' => $value,
+ 'batch_code' => $batch_code,
+ ];
+
+ $insert = $this->batchListModel->insert($data);
+ }
+
+
+ $parameters['file_id'] = $file_id;
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importInceptionUpdateTPAandUHID','payload' => ['file_id' => $file_id]]);
+
+ }
+
+ }
+
+
+ public function importInceptionUpdateTPAandUHID($params)
+ {
+
+ $file_id = $params['file_id'];
+ $file = $this->batchFileModel->find($file_id);
+ if (!$file) {
+ $data = [
+ 'status' => 'failed-4',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ return 0; // Return error code if file not found
+ }
+
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $insurer_or_tpa = $file['insurer_or_tpa'];
+ $status = $file['status'];
+ $batch_code = $file['batch_code'];
+
+ $status_val = 'success';
+ if($status == 'in-progress-partially'){
+
+ $status_val = 'partially success';
+ }
+
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]); // Remove header row
+ array_pop($excel_data); // Remove footer row
+
+ $totals = 0;
+ $emp_count = count($excel_data);
+ $db = \Config\Database::connect();
+
+ foreach ($excel_data as $key => $value) {
+
+ $name = $value[1];
+ $emp_code = $value[2];
+ $tpa_id = $value[15];
+ $uhid = $value[16];
+ $amount = $value[20];
+
+ $totals += $amount;
+
+ $sql = "
+ UPDATE employee_polices
+ JOIN employees ON employees.id = employee_polices.employee_id
+ SET tpa_id = ?
+ WHERE employees.name = ?
+ AND employees.emp_code = ?
+ AND (employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = '')";
+
+ $params = [$tpa_id, $name, $emp_code];
+ $db->query($sql, $params);
+
+
+
+ $sql = "
+ UPDATE employee_polices
+ JOIN employees ON employees.id = employee_polices.employee_id
+ SET employee_polices.uhid = ?
+ WHERE employees.name = ?
+ AND employees.emp_code = ?
+ AND (employee_polices.uhid IS NULL OR employee_polices.uhid = '')";
+
+ $params = [$uhid, $name, $emp_code];
+ $db->query($sql, $params);
+ }
+
+ // Update batch file status and amount
+ $this->batchFileModel->update($file_id, [
+ 'count' => $emp_count,
+ 'status' => $status_val,
+ 'amount' => $totals,
+ ]);
+
+ return 1;
+ }
+
+
+
+
+
+
+
public function importExcelDataForCorrection($import_data)
{
@@ -1046,7 +1374,7 @@ class EmpDataServiceController extends BaseController
$missing_id = [];
$empty_emp_tpa_uh_ids = [];
- $totals = 0 ;
+ $totals = 0;
foreach ($data as $key => $value) {
try {
@@ -1545,15 +1873,15 @@ class EmpDataServiceController extends BaseController
{
if ($file->isValid() && !$file->hasMoved()) {
$file = $file;
-
+
try {
$reader = IOFactory::createReaderForFile($file->getPathname());
$spreadsheet = $reader->load($file->getPathname());
-
+
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
-
+
// Iterate through rows to read data
$data = [];
foreach ($sheet->getRowIterator() as $row) {
@@ -1563,9 +1891,8 @@ class EmpDataServiceController extends BaseController
}
$data[] = $rowData;
}
-
- return $data;
+ return $data;
} catch (SpreadsheetReaderException $e) {
error_log('PhpSpreadsheet reader exception: ' . $e->getMessage());
@@ -1575,7 +1902,7 @@ class EmpDataServiceController extends BaseController
return false;
}
}
-
+
public function insertBatchFileAndBatchListForImportExcel($data, $ids)
@@ -1605,7 +1932,7 @@ class EmpDataServiceController extends BaseController
{
try {
foreach ($ids as $key => $id) {
-
+
$get_emp_email_and_other_details = $this->employeePolicyModel
->select('employee_polices.client_policy_id, employees.emp_code, employees.email_corporate, employees.name, employees.id as employee_id, employees.emp_code employee_polices.rand_string, employee_polices.tpa_id')
->join('employees', 'employees.id = employee_polices.employee_id')
@@ -1614,9 +1941,9 @@ class EmpDataServiceController extends BaseController
->where('employee_polices.status', 'active')
->where('employee_polices.is_active', '1')
->where('employee_polices.id', $id)->first();
-
+
if ($get_emp_email_and_other_details != null && $get_emp_email_and_other_details != "") {
-
+
$employee_id = $get_emp_email_and_other_details['employee_id'];
$name = $get_emp_email_and_other_details['name'];
$emp_code = $get_emp_email_and_other_details['name'];
@@ -1625,18 +1952,18 @@ class EmpDataServiceController extends BaseController
$tpa_id = $get_emp_email_and_other_details['tpa_id'];
$link = generate_download_link($rand_string);
$subject = 'Download E-Card';
-
+
$html = '
- Dear ' .$name .',
- Your Policy( ' .$tpa_id .' ) has been successfully created. Please click the link below to download the insurance card:
-
+ Dear ' . $name . ',
+ Your Policy( ' . $tpa_id . ' ) has been successfully created. Please click the link below to download the insurance card:
+
Thank you,
';
-
+
if ($email != null && $email != "") {
-
+
$mail_data = [
'mail' => $email,
'subject' => $subject,
@@ -1644,29 +1971,25 @@ class EmpDataServiceController extends BaseController
];
// dd($mail_data);
-
+
$result = Mailhelper::send_email($mail_data);
$decoded_result = (array) json_decode($result);
$data = [
- 'status' => $decoded_result['status'],
- 'message'=>$decoded_result['message'] ?? 'Internal Server Error',
+ 'status' => $decoded_result['status'],
+ 'message' => $decoded_result['message'] ?? 'Internal Server Error',
'email' => $decoded_result['data']
];
-
+
// dd($data);
$this->myLogger->logme('error', 'status : {status}, message : {message}, email : {email}', $data);
-
- }else{
+ } else {
$this->myLogger->log('error', 'The employee (primaryKey : {id}, Name : {name}, Emp Code : {emp_code} ) has no corporate email.', ['id' => $employee_id, 'name' => $name, 'emp_code' => $emp_code]);
-
}
-
- }else{
+ } else {
$this->myLogger->log('error', 'The employee policy ID ( {id} ) has no active policy or the employee is not active.', ['id' => $id]);
-
}
}
return true; // Email(s) sent successfully
@@ -1677,4 +2000,48 @@ class EmpDataServiceController extends BaseController
}
}
+
+
+ public function readExcelFileToArray($path)
+ {
+
+ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
+ $sheet = $spreadsheet->getActiveSheet();
+
+ $highestRowAndColumn = $sheet->getHighestRowAndColumn();
+ $excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
+
+ return $excel_data;
+ }
+
+
+ public function removeOldExportInfoFromBatchFile($params){
+
+ $client_id = $params['client_id'];
+ $client_policy_id = $params['client_policy_id'];
+ $insurer_or_tpa = $params['insurer_or_tpa'];
+ $event_type = $params['event_type'];
+ $actions = $params['actions'];
+
+
+ $batch_data = $this->batchFileModel
+ ->where('client_id', $client_id)
+ ->where('client_policy_id', $client_policy_id)
+ ->where('insurer_or_tpa', $insurer_or_tpa)
+ ->where('event_type', $event_type)
+ ->where('actions', $actions)
+ ->first();
+
+ if(!empty($batch_data)){
+
+ $id = $batch_data['id'];
+ $batch_code = $batch_data['batch_code'];
+
+ $this->batchFileModel->where('id', $id)->delete();
+ $this->batchListModel->where('batch_code', $batch_code)->delete();
+
+ }
+
+
+ }
}
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index b1b33241..2409f694 100644
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -348,7 +348,7 @@ class EmployeeController extends AdminController
if($return == 0){
- session()->setFlashdata('error', "The insurer has an insufficient deposit amount.");
+ session()->setFlashdata('error', "Insufficient deposit amount.");
return redirect()->to(base_url('employee/upload'));
}
@@ -396,12 +396,35 @@ class EmployeeController extends AdminController
} else if ($actions == 'import') {
$batch_data['file'] = $this->request->getFile('import_file_data');
+
if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') {
- $return = $empDataServiceController->importExcelDataForInception($batch_data);
+
+ $file = $this->request->getFile('import_file_data');
+
+ $is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
+ $filename = $file->getName();
+ $this->myLogger->logme('error', 'Inception Import file name : {data}', ['data' => $filename]);
+
+
+ $random_number_count = 4;
+ $batch_data['batch_code'] = generate_random_string($random_number_count);
+ $batch_data['created_by'] = get_session_userid();
+ $batch_data['status'] = 'pending';
+ $batch_data['file_name'] = $filename;
+
+ $file_id = $this->batchFileModel->insert($batch_data);
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importInceptionFileValidation','payload' => ['file_id' => $file_id]]);
+
+ $return = 1;
+
+ // $return = $empDataServiceController->importExcelDataForInception($batch_data);
+
if ($return == 1) {
- session()->setFlashdata('success', 'Data updated successfully');
+ session()->setFlashdata('success', 'Data updated successfully. File is being validated.');
return redirect()->to(base_url('employee/upload'));
} else if ($return == 2) {
session()->setFlashdata('error', 'The TPA ID column is either partially or entirely empty.');
@@ -418,6 +441,9 @@ class EmployeeController extends AdminController
} else if ($return == 5) {
session()->setFlashdata('error', 'The list of employees provided has already been updated with the UHID, or this is not the correct file');
return redirect()->to(base_url('employee/upload'));
+ } else if ($return == 6) {
+ session()->setFlashdata('error', 'The Excel record count exceeds the DB record count.');
+ return redirect()->to(base_url('employee/upload'));
}
} else if ($event_type == 'correction') {
@@ -714,7 +740,8 @@ class EmployeeController extends AdminController
if (!file_exists($filePath)) {
$error_message = "File not found";
$this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
- return $error_message;
+ $data['message'] = 'Physical File Not Found';
+ return view('errors/404', $data);
}
// Load the Excel file
@@ -1037,4 +1064,81 @@ class EmployeeController extends AdminController
}
+
+ public function errorListExportImport($file_id)
+ {
+
+ $empDataServiceController = new EmpDataServiceController();
+
+ $file = $this->batchFileModel->where('id', $file_id)->first();
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $insurer_or_tpa = $file['insurer_or_tpa'];
+
+ $error_data = json_decode($file['error_data']);
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+
+ if (!file_exists($file_name_with_path)) {
+ $error_message = "File not found";
+ $this->myLogger->logme('error', ($error_message . ' for file id ' . $file_id));
+ $data['message'] = 'Physical File Not Found';
+ return view('errors/404', $data);
+ }
+
+ $excel_data = $empDataServiceController->readExcelFileToArray($file_name_with_path);
+ $excelErrorData['excel_header'] = $excel_data[0];
+ unset($excel_data[0]);
+ array_pop($excel_data);
+
+
+ $finalArray = [];
+ foreach ($error_data as $key => $values) {
+
+ foreach ($values as $key2 => $value) {
+
+ $row = $value->row;
+ $column = $value->column;
+
+ if(property_exists($value, 'db_data')){
+
+ $error = 'Expected value: ' . ($value->db_data == null || $value->db_data == "" ? 'NULL' : $value->db_data);
+
+ }else{
+
+ if ($insurer_or_tpa == 'tpa') {
+
+ $error = 'Expected value : TPA ID';
+
+ } else if ($insurer_or_tpa == 'insurer') {
+
+ $error = 'Expected value : UHID';
+ }
+
+ }
+ $data = ['value' => $excel_data[$row][$column], 'error' => $error,];
+ $excel_data[$row][$column] = $data;
+ }
+
+ array_push($finalArray, $excel_data[$key]);
+ }
+
+
+ foreach ($finalArray as $fkey => $value) {
+ foreach ($value as $vkey => $arrayData) {
+ if (!is_array($arrayData)) {
+ $data = ['value' => $arrayData];
+ $finalArray[$fkey][$vkey] = $data;
+ }
+ }
+ }
+
+ $excelErrorData['excel_data'] = $finalArray;
+ $excelErrorData['file_id'] = $file_id;
+
+ // dd($finalArray);
+
+ echo view('export_import_error_list', $excelErrorData);
+ }
+
}
diff --git a/app/Controllers/JobWorker.php b/app/Controllers/JobWorker.php
index 00b060ae..09c21213 100644
--- a/app/Controllers/JobWorker.php
+++ b/app/Controllers/JobWorker.php
@@ -14,7 +14,11 @@ class JobWorker extends AdminController
* Constructs the class
*/
- private static $event_class_mapping = ['add' => ['type' => 'HC','handler' => 'App\\Helpers\\HttpRequestHelper'], 'sub' => ['type' => 'CC','handler' => 'App\\Controllers\\Jobs\SubJob'],'fancy_date_time_format' => [ 'type' => 'HF','handler' => 'fancy_date_time_format'],'addNumber' => ['type' => 'HC','handler' => 'App\\Model\\HttpRequestHelper'],'excelFileFormatValidation' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'excelFileDataValidation' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesOnboardPreprocess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeeDisembark' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesSIEnhanceProcess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesCorrectionProcess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'send_email' => ['type' => 'HC','handler' => 'App\\Helpers\\MailHelper'],'bulk_mail' => ['type' => 'HC','handler' => 'App\\Helpers\\MailHelper']];
+ private static $event_class_mapping = [
+ 'add' => ['type' => 'HC', 'handler' => 'App\\Helpers\\HttpRequestHelper'], 'sub' => ['type' => 'CC', 'handler' => 'App\\Controllers\\Jobs\SubJob'], 'fancy_date_time_format' => ['type' => 'HF', 'handler' => 'fancy_date_time_format'], 'addNumber' => ['type' => 'HC', 'handler' => 'App\\Model\\HttpRequestHelper'], 'excelFileFormatValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'excelFileDataValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesOnboardPreprocess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeeDisembark' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesSIEnhanceProcess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesCorrectionProcess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'send_email' => ['type' => 'HC', 'handler' => 'App\\Helpers\\MailHelper'], 'bulk_mail' => ['type' => 'HC', 'handler' => 'App\\Helpers\\MailHelper'], 'insertBatchList' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importInceptionFileValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importInceptionUpdateTPAandUHID' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ ];
public function __construct()
{
// echo 'HiC';//die();
diff --git a/app/Views/batch_list.php b/app/Views/batch_list.php
index fd853354..c08961b8 100644
--- a/app/Views/batch_list.php
+++ b/app/Views/batch_list.php
@@ -1,7 +1,7 @@
@@ -27,29 +27,51 @@
Action
Count
Amount
+ status
- $file) {
+ $file) {
?>
-
-
-
- 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?>
-
-
-
-
-
-
-
-
-
+
+
+
+ 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ failed
+
+ failed
+
+ failed
+
+ failed
+
+
+
+
+
+
+
@@ -59,31 +81,31 @@
\ No newline at end of file
diff --git a/app/Views/export_import_error_list.php b/app/Views/export_import_error_list.php
new file mode 100644
index 00000000..af4601a9
--- /dev/null
+++ b/app/Views/export_import_error_list.php
@@ -0,0 +1,134 @@
+/assets/images/Nhance_Favi.svg">
+Excel Error Report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ ';
+ echo '' . $data['error'] . '';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+