diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 033300aa..52b3dbca 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -586,11 +586,11 @@ class ClientController extends AdminController $this->myLogger->logme('error','Client policy CREATE function called'); - $policy_id = $this->request->getPost('policy_id'); + $policy_type_id = $this->request->getPost('policy_type_id'); $client_branch_id = $this->request->getPost('client_branch_id'); $policyCount = $this->clientPolicyModel - ->where('policy_id', $policy_id) + ->where('policy_type_id', $policy_type_id) ->where('client_branch_id', $client_branch_id) ->countAllResults(); @@ -816,7 +816,6 @@ class ClientController extends AdminController $jsonDataForRelation = json_encode($relation_data); - // if($policy_grid_id == 10 || $policy_grid_id == 11){ // $premium_type = 1; // }else{ diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 9ea04893..6325255f 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -111,7 +111,7 @@ class EmpDataServiceController extends BaseController $batch_list_data['batch_code'] = $params['batch_code']; $batch_list_data['emp_policy_id'] = $value['primaryKey']; - $batch_list_data['created_by'] = get_session_userid(); + $batch_list_data['created_by'] = $params['user_id']; $this->batchListModel->insert($batch_list_data); } @@ -133,30 +133,29 @@ 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(); - $totals = 0; - foreach ($objects as $key => $value) { + // Calculate the total amount from the objects + $totals = array_reduce($objects, function ($carry, $item) { + return $carry + $item->total; + }, 0); + + $totals = round($totals, 2); + + $this->removeOldExportInfoFromBatchFile($export_data); - $totals += $value->total; - } if (!empty($cash_balance)) { if ((int) $cash_balance['balance'] < (int) $totals) { + $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.'); return 0; } - } else { - // return 0; } @@ -171,6 +170,8 @@ class EmpDataServiceController extends BaseController // If no data is found for export, return false if ($count == 0) { + + $this->myLogger->logme('error', 'No Record found. TPA ID or UHID are Alread Updated. Correction export data count : {data}', ['data' => $count]); return false; } @@ -212,30 +213,35 @@ class EmpDataServiceController extends BaseController // If Excel generation is successful if ($success) { - - // Batch files and list entry - // $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 ]]); + $job_details = new Jobs(); + $r = Jobs::addJob(['job_name' => 'insertBatchList', 'payload' => ['batch_code' => $batch_code, 'user_id' => get_session_userid(), 'batch_list_data' => $objects]]); // If batch operation is successful if (true) { + + // Clear the output buffer to avoid any unwanted output + if (ob_get_level()) { + ob_end_clean(); + } + // Set headers for Excel file download header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - header('Content-Disposition: attachment;filename="' . $export_data['file_name'] . '"'); - header('Cache-Control: max-age=0'); + header('Content-Disposition: attachment; filename="' . $export_data['file_name'] . '"'); + header('Content-Transfer-Encoding: binary'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Expires: 0'); // Output file contents rewind($tempFile); @@ -247,7 +253,7 @@ class EmpDataServiceController extends BaseController return true; // Excel file successfully generated and exported } else { - + return false; // Batch operation failed } } @@ -266,17 +272,18 @@ class EmpDataServiceController extends BaseController $ids[] = $obj->id; } - // echo '
';
- // print_r($objects); die;
-
$count = count($objects);
$export_data['count'] = $count;
$this->myLogger->logme('error', 'Correction export data count : {data}', ['data' => $count]);
if ($count == 0) {
- return false;
+ $this->myLogger->logme('error', 'No Record found. Endorsement ID Alread Updated. Correction export data count : {data}', ['data' => $count]);
+ return false;
}
+ $this->removeOldExportInfoFromBatchFile($export_data);
+
+
$this->myLogger->logme('error', 'Correction export file name : {data}', ['data' => $export_data['file_name']]);
$correction_data = transform_objects_to_array_for_correction($objects);
@@ -302,7 +309,11 @@ class EmpDataServiceController extends BaseController
$value = generate_excel($headers, $correction_data, $tempFile);
if ($value) {
+
+
+
$return = $this->batchFilesAndBatchListEntry($export_data, $objects);
+
if ($return) {
foreach ($ids as $key => $id) {
@@ -312,7 +323,6 @@ class EmpDataServiceController extends BaseController
}
}
-
// Set the appropriate headers for Excel file download
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $export_data['file_name'] . '"');
@@ -329,7 +339,6 @@ class EmpDataServiceController extends BaseController
return true;
} else {
-
return false;
}
}
@@ -347,6 +356,7 @@ class EmpDataServiceController extends BaseController
$ids[] = $obj->endorsement_primarykey;
$totals += $obj->total;
}
+
$rounded_totals = round($totals, 2);
// echo '';
// print_r($ids); die;
@@ -354,13 +364,17 @@ class EmpDataServiceController extends BaseController
$count = count($objects);
$export_data['count'] = $count;
$export_data['amount'] = $rounded_totals;
+ $export_data['status'] = 'success';
$this->myLogger->logme('error', 'SI_Enhancement export data count : {data}', ['data' => $count]);
if ($count == 0) {
+
+ $this->myLogger->logme('error', 'No Record found. Endorsement ID Alread Updated. SI_Enhancement export data count : {data}', ['data' => $count]);
return false;
}
+ $this->removeOldExportInfoFromBatchFile($export_data);
$this->myLogger->logme('error', 'SI_Enhancement export file name : {data}', ['data' => $export_data['file_name']]);
$si_data = transform_objects_to_array_for_si_enhancement($objects);
@@ -440,21 +454,21 @@ class EmpDataServiceController extends BaseController
$totals += $obj->total;
}
$rounded_totals = round($totals, 2);
- // echo '';
- // print_r($ids);
- // print_r($objects); die;
$count = count($objects);
$export_data['count'] = $count;
$export_data['amount'] = $rounded_totals;
-
+ $export_data['status'] = 'success';
$this->myLogger->logme('error', 'Deletion export data count : {data}', ['data' => $count]);
if ($count == 0) {
+
+ $this->myLogger->logme('error', 'No Record found. Endorsement ID Alread Updated. Deletion export data count : {data}', ['data' => $count]);
return false;
}
+ $this->removeOldExportInfoFromBatchFile($export_data);
$this->myLogger->logme('error', 'Deletion export file name : {data}', ['data' => $export_data['file_name']]);
$si_data = transform_objects_to_array_for_deletion($objects);
@@ -539,48 +553,24 @@ class EmpDataServiceController extends BaseController
* - 0 if the provided data is incomplete or incorrect.
*/
- public function importExcelDataForInception($import_data)
- {
-
- $file = $import_data['file'];
-
- $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;
- $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;
-
- $insert = $this->batchFileModel->insert($import_data);
-
- $file_id['file_id'] = $insert;
-
- $job_details = new Jobs();
- $r = Jobs::addJob(['job_name' => 'importInceptionFileValidation','payload' => ['file_id' => $insert]]);
-
- return 1;
- }
+ //Endorsement Inception
public function importInceptionFileValidation($params)
{
- $this->myLogger->logme('info', 'importInceptionFileValidation called');
+ $this->myLogger->logme('info', 'Inception File Validation -- Function called');
$file_id = $params['file_id'];
- $this->myLogger->logme('error', 'importInceptionFileValidation batch file table primary id : {data}', ['data' => $file_id]);
+ $this->myLogger->logme('error', 'Inception File Validation -- Batch File Table Primary ID : {data}', ['data' => $file_id]);
$file = $this->batchFileModel->where('id', $file_id)->first();
$client_id = $file['client_id'];
$client_policy_id = $file['client_policy_id'];
$client_branch_id = $file['client_branch_id'];
$batch_code = $file['batch_code'];
-
+ $user_id = $file['created_by'];
$insurer_or_tpa = $file['insurer_or_tpa'];
if ($insurer_or_tpa == 'tpa') {
@@ -629,10 +619,12 @@ class EmpDataServiceController extends BaseController
->where('employees.client_id', $client_id)
->where('employees.client_branch_id', $client_branch_id)
->where("employee_polices.{$id} IS NULL OR employee_polices.{$id} = ''")
+ ->where('employee_polices.is_active', 1)
+ ->where('employee_polices.status', 'active')
+ ->where('employees.is_active', 1)
+ ->where('employees.emp_status', 'active')
->findAll();
- // echo '';
- // print_r($employee_data); die;
if ($employee_data == null || empty($employee_data)) {
@@ -644,12 +636,12 @@ class EmpDataServiceController extends BaseController
];
$this->batchFileModel->where('id', $file_id)->set($data)->update();
- $this->myLogger->logme('error', 'importInceptionFileValidation TPAID already updated');
+ $this->myLogger->logme('error', 'Inception File Validation -- TPAID already updated');
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'The list of employees provided has already been updated with the TPA ID, or this is not the correct file';
+ return ['status' => 'error', 'message' => 'The list of employees provided has already been updated with the TPA ID, or this is not the correct file'];
} else if ($insurer_or_tpa == 'insurer') {
@@ -658,23 +650,23 @@ class EmpDataServiceController extends BaseController
];
$this->batchFileModel->where('id', $file_id)->set($data)->update();
- $this->myLogger->logme('error', 'importInceptionFileValidation UHID already updated');
+ $this->myLogger->logme('error', 'Inception File Validation -- UHID already updated');
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'The list of employees provided has already been updated with the UHID, or this is not the correct file';
+ return ['status' => 'error', 'message' =>'The list of employees provided has already been updated with the UHID, or this is not the correct file'];
}
- $this->myLogger->logme('error', 'importInceptionFileValidation UHID or TPAID already updated or the uploadedfile is not correct');
+ $this->myLogger->logme('error', 'Inception File Validation -- UHID or TPAID already updated or the uploadedfile is not correct');
}
$excel_data_count = count($excel_data);
$emp_data_count = count($employee_data);
- $this->myLogger->logme('error', 'importInceptionFileValidation excel file count : {data}', ['data' => $excel_data_count]);
- $this->myLogger->logme('error', 'importInceptionFileValidation database count : {data}', ['data' => $emp_data_count]);
+ $this->myLogger->logme('error', 'Inception File Validation -- Excel File count : {data}', ['data' => $excel_data_count]);
+ $this->myLogger->logme('error', 'Inception File Validation -- Database count : {data}', ['data' => $emp_data_count]);
// dd($excel_data_count, $emp_data_count);
@@ -685,7 +677,7 @@ class EmpDataServiceController extends BaseController
$status = 'in-progress-partially';
$partially_updated_data = 'Expected : ' . $emp_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
- $this->myLogger->logme('error', 'importInceptionFileValidation excel file count partially : {data}', ['data' => $partially_updated_data]);
+ $this->myLogger->logme('error', 'Inception File Validation -- excel file count partially : {data}', ['data' => $partially_updated_data]);
}
@@ -697,12 +689,12 @@ class EmpDataServiceController extends BaseController
];
$this->batchFileModel->where('id', $file_id)->set($data)->update();
- $this->myLogger->logme('error', 'importInceptionFileValidation excel file count ( {excel} ) exceeds db count ( {db} )', ['db' => $emp_data_count, 'excel' => $excel_data_count]);
+ $this->myLogger->logme('error', 'Inception File Validation -- Excel File Count ( {excel} ) exceeds db count ( {db} )', ['db' => $emp_data_count, 'excel' => $excel_data_count]);
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . 'db count : ' . $emp_data_count;
+ return ['status' => 'error', 'message' =>'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . 'db count : ' . $emp_data_count];
}
@@ -874,15 +866,11 @@ class EmpDataServiceController extends BaseController
$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 = [
@@ -897,14 +885,14 @@ class EmpDataServiceController extends BaseController
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'The TPA ID column is either partially or entirely empty.';
+ return ['status' => 'error', 'message' =>'The TPA ID column is either partially or entirely empty.'];
} else if ($insurer_or_tpa == 'insurer') {
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'The UHID column is either partially or entirely empty.';
+ return ['status' => 'error', 'message' =>'The UHID column is either partially or entirely empty.'];
}
}
@@ -916,8 +904,11 @@ class EmpDataServiceController extends BaseController
'status' => 'failed',
];
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
$this->batchFileModel->where('id', $file_id)->set($data)->update();
- return 0;
+ return ['status' => 'error', 'message' => 'Inception File Validation Failed Excel and Database Data are Mismatching'];
} else {
@@ -935,6 +926,7 @@ class EmpDataServiceController extends BaseController
$data = [
'emp_policy_id' => $value,
'batch_code' => $batch_code,
+ 'created_by' => $user_id
];
$insert = $this->batchListModel->insert($data);
@@ -946,9 +938,10 @@ class EmpDataServiceController extends BaseController
$job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'importInceptionUpdateTPAandUHID','payload' => ['file_id' => $file_id]]);
-
// $this->importInceptionUpdateTPAandUHID(['file_id' => $file_id]);
+ return ['status' => 'error', 'message' => 'Inception File Validation Successfully Completed'];
+
}
}
@@ -957,7 +950,7 @@ class EmpDataServiceController extends BaseController
public function importInceptionUpdateTPAandUHID($params)
{
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID called');
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- Function called');
$file_id = $params['file_id'];
$file = $this->batchFileModel->find($file_id);
@@ -968,12 +961,12 @@ class EmpDataServiceController extends BaseController
];
$this->batchFileModel->where('id', $file_id)->set($data)->update();
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID the Physical file not found - file id : {data}', ['data' => $file_id]);
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- The Physical file not found -- File id : {data}', ['data' => $file_id]);
$file_data = $this->getDataByFileId($file_id, 'failure');
$this->setPullNotification($file_data);
- return 'importInceptionUpdateTPAandUHID the Physical file not found'; // Return error code if file not found
+ return ['status' => 'error', 'message' => 'Inception Update TPA and UHID -- The Physical file not found']; // Return error code if file not found
}
$client_id = $file['client_id'];
@@ -986,11 +979,11 @@ class EmpDataServiceController extends BaseController
$get_policy_type = $this->clientPolicyModel
- ->select('policy_type.policy_type, policies.policy_type_id as policy_type_id')
- ->join('policies', 'policies.id = client_policy.policy_id')
- ->join('policy_type', 'policy_type.id = policies.policy_type_id')
- ->where('client_policy.id', $client_policy_id)
- ->first();
+ ->select('policy_type.policy_type, policies.policy_type_id as policy_type_id')
+ ->join('policies', 'policies.id = client_policy.policy_id')
+ ->join('policy_type', 'policy_type.id = policies.policy_type_id')
+ ->where('client_policy.id', $client_policy_id)
+ ->first();
$status_val = 'success';
@@ -999,7 +992,7 @@ class EmpDataServiceController extends BaseController
$status_val = 'partially success';
}
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID file name : {data}', ['data'=> $file['file_name']]);
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- file name : {data}', ['data' => $file['file_name']]);
$file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
@@ -1025,10 +1018,8 @@ class EmpDataServiceController extends BaseController
$uhid[] = $value[16];
$amount = $value[20];
- $totals += $amount;
+ $totals = $totals + $amount;
-
- // Execute the query
$query = $db->table('employee_polices');
$query->select('employee_polices.id');
$query->join('employees', 'employees.id = employee_polices.employee_id');
@@ -1045,45 +1036,19 @@ class EmpDataServiceController extends BaseController
$query->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")');
}
$query->where('employee_polices.is_active', 1);
+ $query->where('employee_polices.status', 'active');
+ $query->where('employees.is_active', 1);
+ $query->where('employees.emp_status', 'active');
$query->limit(1);
- // Get the result
$result = $query->get()->getRowArray();
if (isset($result['id']) && $result['id'] !== null) {
- $emp_policy_ids[] = $result['id'];
- $emp_details[] = array('id' => $result['id'],'tpa_id' => $value[15], 'uhid' => $value[16]);
+ $emp_policy_ids[] = $result['id']; //for cash deposite
+ $emp_details[] = array('id' => $result['id'], 'tpa_id' => $value[15], 'uhid' => $value[16]);
}
-
-
-
- // $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.client_policy_id = ?
- // AND (employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = '')";
-
- // $params = [$tpa_id, $name, $emp_code, $client_policy_id];
- // $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.client_policy_id = ?
- // AND (employee_polices.uhid IS NULL OR employee_polices.uhid = '')";
-
- // $params = [$uhid, $name, $emp_code, $client_policy_id];
- // $db->query($sql, $params);
}
- $return = $this->employeePolicyModel->bulkUpdate($emp_details);
+ $return = $this->employeePolicyModel->bulkUpdate($emp_details);
// Update batch file status and amount
$this->batchFileModel->update($file_id, [
@@ -1093,14 +1058,14 @@ class EmpDataServiceController extends BaseController
]);
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID employee count : {data}', ['data'=> $emp_count]);
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID batch file status : {data}', ['data'=> $status_val]);
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID total amount for cash deposite : {data}', ['data'=> $totals]);
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- employee count : {data}', ['data' => $emp_count]);
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- batch file status : {data}', ['data' => $status_val]);
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- total amount for cash deposite : {data}', ['data' => $totals]);
if ($file['insurer_or_tpa'] == 'tpa') {
- $this->myLogger->logme('error', 'importInceptionUpdateTPAandUHID set cashDepositCalculationForInception and sendMailForDownloadingECard in JOB QUEUE');
+ $this->myLogger->logme('error', 'Inception Update TPA and UHID -- set cashDepositCalculationForInception and sendMailForDownloadingECard in JOB QUEUE');
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
$depositeData = [
@@ -1116,8 +1081,8 @@ class EmpDataServiceController extends BaseController
- $job_details = new Jobs();
- $r = Jobs::addJob(['job_name' => 'cashDepositCalculationForInception','payload' => [
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'cashDepositCalculationForInception', 'payload' => [
'employeeIds' => $emp_policy_ids,
'client_id' => $client_id,
'client_policy_id' => $client_policy_id,
@@ -1127,12 +1092,11 @@ class EmpDataServiceController extends BaseController
'policy_name' => $policy_name['policy_name'],
'user_id' => $user_id,
]]);
-
- if($get_policy_type['policy_type_id'] != 1){
- $job_details = new Jobs();
- $r = Jobs::addJob(['job_name' => 'sendMailForDownloadingECard','payload' => $emp_policy_ids]);
+ if ($get_policy_type['policy_type_id'] != 1) {
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'sendMailForDownloadingECard', 'payload' => $emp_policy_ids]);
}
// $this->cashDepositCalculationForInception($depositeData);
@@ -1144,602 +1108,1474 @@ class EmpDataServiceController extends BaseController
$this->setPullNotification($file_data);
- return 'Import Inception Updated '. $status_val . '- Updated Count : ' . $emp_count;
+ return 'Import Inception Updated ' . $status_val . '- Updated Count : ' . $emp_count;
}
+ //Endorsement Correction
-
- public function importExcelDataForCorrection($import_data)
+ public function importCorrectionValidation($params)
{
- $client_id = $import_data['client_id'];
- $client_policy_id = $import_data['client_policy_id'];
- $client_branch_id = $import_data['client_branch_id'];
- $file = $import_data['file'];
+ $this->myLogger->logme('error', 'Correction File Validation -- Function called');
- $data = $this->readExcelToArray($file);
- unset($data[0]);
- $count = count($data);
+ $file_id = $params['file_id'];
+ $file = $this->batchFileModel->where('id', $file_id)->first();
- $missing_id = [];
- $empty_emp_tpa_uh_ids = [];
- foreach ($data as $key => $value) {
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $client_branch_id = $file['client_branch_id'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
- try {
-
- if ($value[10] === null) {
- $missing_id[] = $key + 1;
- }
-
- $emp_code = $value[0];
- $uhid = $value[1];
- $endorsement_id = $value[10] != null ? $value[10] : '';
-
- $db = \Config\Database::connect();
-
- // Execute the query
- $query = $db->table('emp_endorsement')
- ->select('emp_endorsement.id')
- ->join('employees', 'employees.id = emp_endorsement.pk')
- ->join('employee_polices', 'employee_polices.employee_id = employees.id')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employee_polices.uhid', $uhid)
- ->where('employees.emp_code', $emp_code)
- ->where('(emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = "")')
- ->groupBy('emp_endorsement.group_key')
- ->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) {
- // Handle the exception here
- return 0;
- }
- }
-
- $missing_id_count = count($missing_id);
- $empty_id_count = count($empty_emp_tpa_uh_ids);
-
- // if($missing_id_count != $count){
-
- // return 2;
- // }
-
- if ($missing_id_count != 0) {
-
- return 2;
- }
-
-
- if ($empty_id_count == 0) {
-
- return 3;
- }
-
- // dd($count, $missing_id, $missing_id_count, $empty_id_count, $data, $empty_emp_tpa_uh_ids);
-
-
- $is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
- $filename = $file->getName();
-
- $this->myLogger->logme('error', 'Correction Import file name : {data}', ['data' => $filename]);
- $random_number_count = 4;
- $batch_code = generate_random_string($random_number_count);
- $this->myLogger->logme('error', 'Correction Import BATCH CODE : {data}', ['data' => $batch_code]);
-
-
- $import_data['batch_code'] = $batch_code;
- $import_data['created_by'] = get_session_userid();
- $import_data['file_name'] = $filename;
- $insert = $this->batchFileModel->insert($import_data);
- $batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first();
-
- $batch_code_for_batch_list['batch_code'] = $batch_file_batch_code['batch_code'];
- $batch_code_for_batch_list['created_by'] = get_session_userid();
-
- $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $batch_file_batch_code['file_name'];
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
if (!file_exists($file_name_with_path)) {
- return 2;
+
+ $this->myLogger->logme('error', 'Correction File Validation -- The Physical file not found');
+ $this->myLogger->logme('error', 'Correction File Validation -- File Name : {data}', ['data' => $file['file_name']]);
+ $this->myLogger->logme('error', 'Correction File Validation -- File Path : {data}', ['data' => $file_name_with_path]);
+
+ return 'The Physical file not found';
}
- $data = read_excel_file_to_array($file_name_with_path);
- unset($data[0]);
- $count = count($data);
- $this->batchFileModel->where('id', $insert)->set('count', $count)->update();
- foreach ($data as $key => $value) {
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]);
- if (!empty($value) && isset($value[10])) {
- $emp_code = $value[0];
- $uhid = $value[1];
- $endorsement_id = $value[10] != null ? $value[10] : '';
+ $endorsement_data = $this->empEndorsementModel
+ ->select("
+ emp_endorsement.id,
+ emp_endorsement.pk,
+ emp_endorsement.emp_code,
+ emp_endorsement.endorsement_id,
+ emp_endorsement.old_value,
+ emp_endorsement.new_value,
+ emp_endorsement.field_name,
+ emp_endorsement.remarks,
+ emp_endorsement.actions,
+ employees.id AS primaryKey,
+ employees.name AS emp_name,
+ employees.dob AS emp_dob,
+ employees.gender AS emp_gender,
+ employees.client_id AS emp_client_id,
+ 'Has Define' AS emp_type,
+ employee_polices.uhid,
+ employees.relationship_code
+ ")
+ ->join("employees", "employees.id = emp_endorsement.pk", "left")
+ ->join("employee_polices", "employees.id = employee_polices.employee_id", "left")
+ ->where("employees.client_id", $client_id)
+ ->where("employee_polices.client_policy_id", $client_policy_id)
+ ->where("employees.client_branch_id", $client_branch_id)
+ ->where("employees.is_active", 1)
+ ->where("employees.emp_status", "active")
+ ->where("emp_endorsement.actions", "c")
+ ->where("(emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = '')")
+ ->findAll();
- $val = $this->employeePolicyModel
- ->select('employees.id')
- ->join('employees', 'employees.id = employee_polices.employee_id')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employee_polices.uhid', $uhid)
- ->where('employees.emp_code', $emp_code)
- ->where('employees.is_active', 1)
- ->first();
- $batch_code_for_batch_list['emp_policy_id'] = $val['id'];
- $this->batchListModel->insert($batch_code_for_batch_list);
- // $this->employeePolicyModel->updateCorrectionData($emp_code, $uhid, $endorsement_id);
+ // dd($endorsement_data, $excel_data);
- $queryData = $this->empEndorsementModel->select('emp_endorsement.*, employees.id as emp_id')
- ->join('employees', 'employees.id = emp_endorsement.pk')
- ->join('employee_polices', 'employee_polices.employee_id = employees.id')
- ->where('employees.emp_code', $emp_code)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employee_polices.uhid', $uhid)
- ->get()
- ->getResultArray();
- // dd($queryData);
+ if ($endorsement_data == null || empty($endorsement_data)) {
- foreach ($queryData as $endorsementData) {
+ $data = [
+ 'status' => 'failed-1',
+ ];
- $emp_endoresment_id = $endorsementData['id'];
- $emp_id = $endorsementData['emp_id'];
- $field_name = $endorsementData['field_name'];
- $new_value = $endorsementData['new_value'];
- $endoresment_udate_data = [
- 'endorsement_id' => $endorsement_id,
- 'status' => 'complete',
- ];
- $this->empEndorsementModel->where('id', $emp_endoresment_id)->set($endoresment_udate_data)->update();
- $this->employeeModel->where('id', $emp_id)->set($field_name, $new_value)->update();
- }
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'correctionFileValidation ENDORSEMENT ID already updated');
- // $query = $this->employeePolicyModel->getLastQuery();
- // echo $query . "
";
- } else {
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
- return 0;
- }
+ return 'The list of employees provided has already been updated with the ENDORSEMENT ID, or this is not the correct file';
+
+ $this->myLogger->logme('error', 'correctionFileValidation ENDORSEMENT ID already updated or the uploadedfile is not correct');
+ }
+
+ $excel_data_count = count($excel_data);
+ $endorsement_data_count = count($endorsement_data);
+
+ $this->myLogger->logme('error', 'correctionFileValidation excel file count : {data}', ['data' => $excel_data_count]);
+ $this->myLogger->logme('error', 'correctionFileValidation database count : {data}', ['data' => $endorsement_data_count]);
+
+
+ $difference = $endorsement_data_count - $excel_data_count;
+
+ $status = 'in-progress';
+ if ($excel_data_count < $endorsement_data_count) {
+
+ $status = 'in-progress-partially';
+ $partially_updated_data = 'Expected : ' . $endorsement_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
+ $this->myLogger->logme('error', 'correctionFileValidation excel file count partially : {data}', ['data' => $partially_updated_data]);
}
- return 1;
- }
-
-
- public function importExcelDataForSIEnhancement($import_data)
- {
-
- $client_id = $import_data['client_id'];
- $client_policy_id = $import_data['client_policy_id'];
- $client_branch_id = $import_data['client_branch_id'];
- $file = $import_data['file'];
-
- $data = $this->readExcelToArray($file);
- unset($data[0]);
- $count = count($data);
+
+ if ($endorsement_data_count < $excel_data_count) {
+
+ $data = [
+ 'status' => 'failed-3',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'correctionFileValidation excel file count ( {excel} ) exceeds db count ( {db} )', ['db' => $endorsement_data_count, 'excel' => $excel_data_count]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . 'db count : ' . $endorsement_data_count;
+ }
+ $errors = []; // Initialize an array to store errors
$missing_id = [];
- $empty_emp_tpa_uh_ids = [];
- $totals = 0;
- foreach ($data as $key => $value) {
+ $batch_list_id = [];
- try {
- if ($value[19] === null) {
- $missing_id[] = $key + 1;
- }
+ foreach ($endorsement_data as $key => $endorsement_value) {
- $totals += $value[18];
+ $key = $key + 1;
- $emp_name = $value[1];
- $emp_code = $value[2];
- $endorsement_id = $value[19] != null ? $value[19] : '';
-
- $db = \Config\Database::connect();
-
- // Execute the query
- $query = $db->table('emp_endorsement')
- ->select('emp_endorsement.id')
- ->join('employee_polices', 'employee_polices.id = emp_endorsement.pk')
- ->join('employees', 'employees.emp_code = emp_endorsement.emp_code')
- ->where('employees.emp_code', $emp_code)
- ->where('employees.name', $emp_name)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('emp_endorsement.actions', 'si')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('(emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = "")')
- ->groupBy('emp_endorsement.group_key');
-
- // Get the result
- $result = $query->get()->getRowArray();
- if (isset($result['id']) && $result['id'] !== null) {
- $empty_emp_tpa_uh_ids[] = $result['id'];
- }
- } catch (\Exception $e) {
- // Handle the exception here
- return 0;
+ if (!isset($excel_data[$key])) {
+ break;
}
+
+
+ if ($excel_data[$key][10] === null) {
+ $missing_id[$key][] = [
+ 'row' => $key,
+ 'column' => 10,
+ ];
+ }
+
+
+ if ($endorsement_value['emp_name'] != $excel_data[$key][2]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 2,
+ 'db_data' => $endorsement_value['emp_name'],
+ 'excel_data' => $excel_data[$key][2]
+ ];
+ }
+
+ if ($endorsement_value['emp_code'] != $excel_data[$key][0]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 0,
+ 'db_data' => $endorsement_value['emp_code'],
+ 'excel_data' => $excel_data[$key][0]
+ ];
+ }
+
+ if ($endorsement_value['emp_dob'] != $excel_data[$key][5]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 5,
+ 'db_data' => $endorsement_value['emp_dob'],
+ 'excel_data' => $excel_data[$key][5]
+ ];
+ }
+
+ if ($endorsement_value['emp_gender'] != $excel_data[$key][6]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 6,
+ 'db_data' => $endorsement_value['emp_gender'],
+ 'excel_data' => $excel_data[$key][6]
+ ];
+ }
+
+ if ($endorsement_value['old_value'] != $excel_data[$key][7]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 7,
+ 'db_data' => $endorsement_value['old_value'],
+ 'excel_data' => $excel_data[$key][7]
+ ];
+ }
+
+ if ($endorsement_value['new_value'] != $excel_data[$key][8]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 8,
+ 'db_data' => $endorsement_value['new_value'],
+ 'excel_data' => $excel_data[$key][8]
+ ];
+ }
+
+
+
+ if ($endorsement_value['uhid'] != $excel_data[$key][1]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 1,
+ 'db_data' => $endorsement_value['uhid'],
+ 'excel_data' => $excel_data[$key][1]
+ ];
+ }
+
+ $batch_list_id[] = $endorsement_value['primaryKey'];
}
- $rounded_totals = round($totals, 2);
+
+
+ $error_count = count($errors);
+ $json_errors = json_encode($errors);
+
$missing_id_count = count($missing_id);
- $empty_id_count = count($empty_emp_tpa_uh_ids);
+ $json_missing_id = json_encode($missing_id);
- // if($missing_id_count != $count){
+ // dd($error_count, $missing_id_count, $json_errors, $json_missing_id, $batch_list_id);
- // return 2;
- // }
- if ($missing_id_count != 0) {
+ if ($missing_id_count > 0) {
- return 2;
+ $data = [
+
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_missing_id,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The ENDORSEMENT ID column is either partially or entirely empty.';
+
}
- // if($empty_emp_tpa_uh_ids != $count){
- // return 3;
- // }
+ if ($error_count > 0) {
- if ($empty_id_count == 0) {
+ $data = [
- return 3;
- }
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_errors,
+ 'status' => 'failed',
+ ];
- // dd($count, $missing_id, $missing_id_count, $empty_id_count, $data, $empty_emp_tpa_uh_ids);
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ return 'Correction Validation Failed';
- $is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
- $filename = $file->getName();
+ } else {
- $this->myLogger->logme('error', 'SI_Enhancement Import file name : {data}', ['data' => $filename]);
- $random_number_count = 4;
- $batch_code = generate_random_string($random_number_count);
- $this->myLogger->logme('error', 'SI_Enhancement Import BATCH CODE : {data}', ['data' => $batch_code]);
+ $data = [
+ 'count' => $endorsement_data_count,
+ 'status' => $status,
+ 'error_data' => $partially_updated_data ?? null,
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
- $import_data['batch_code'] = $batch_code;
- $import_data['created_by'] = get_session_userid();
- $import_data['file_name'] = $filename;
- $import_data['amount'] = $rounded_totals;
- $insert = $this->batchFileModel->insert($import_data);
- $batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first();
+ foreach ($batch_list_id as $key => $value) {
- $batch_code_for_batch_list['batch_code'] = $batch_file_batch_code['batch_code'];
- $batch_code_for_batch_list['created_by'] = get_session_userid();
-
- $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $batch_file_batch_code['file_name'];
-
- if (!file_exists($file_name_with_path)) {
- return 2;
- }
-
- $data = read_excel_file_to_array($file_name_with_path);
- unset($data[0]);
- $count = count($data);
- $this->batchFileModel->where('id', $insert)->set('count', $count)->update();
- $employeeIds = [];
- foreach ($data as $key => $value) {
-
- if (!empty($value) && isset($value[19])) {
-
- $emp_name = $value[1];
- $emp_code = $value[2];
- // echo $emp_name .'-'. $emp_code; die;
- $endorsement_id = $value[19] != null ? $value[19] : '';
-
- $updateData = [
- 'emp_code' => $emp_code,
- 'client_id' => $client_id,
- 'client_policy_id' => $client_policy_id,
- 'emp_name' => $emp_name,
- 'endorsement_id' => $endorsement_id,
+ $data = [
+ 'emp_policy_id' => $value,
+ 'batch_code' => $batch_code,
+ 'created_by' => $user_id,
];
- $this->employeePolicyModel->updateEndoresmentIdForSIEnhancement($updateData);
-
- $queryData = $this->employeePolicyModel
- ->select('employee_polices.*')
- ->join('employees', 'employee_polices.employee_id = employees.id')
- ->where('employees.emp_code', $emp_code)
- ->where('employees.name', $emp_name)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employee_polices.is_active', 1)
- ->first();
-
- $queryData['is_active'] = 0;
- $this->employeePolicyModel->save($queryData);
-
- unset($queryData['id']);
- unset($queryData['created_by']);
- unset($queryData['created_at']);
- unset($queryData['updated_by']);
- unset($queryData['updated_at']);
- unset($queryData['is_active']);
-
- $queryData['basic_cover_si'] = $value[8];
- $queryData['premium'] = $value[14];
- $queryData['si_enhancement_date'] = $value[10];
- $queryData['rata_premimum'] = $value[16];
- $queryData['gst'] = $value[17];
- $queryData['created_by'] = get_session_userid();
-
- //new insert
- $this->employeePolicyModel->save($queryData);
-
- $val = $this->employeePolicyModel
- ->select('employee_polices.id')
- ->join('employees', 'employees.id = employee_polices.employee_id')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employees.name', $emp_name)
- ->where('employees.emp_code', $emp_code)
- ->where('employee_polices.is_active', 1)
- ->first();
-
- if ($val !== null) {
- $id = $val['id'];
- $batch_code_for_batch_list['emp_policy_id'] = $id;
- $this->batchListModel->insert($batch_code_for_batch_list);
- array_push($employeeIds, $id);
- }
- } else {
-
- return 0;
+ $insert = $this->batchListModel->insert($data);
}
+
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importCorrectionUpdateEndorsementID','payload' => ['file_id' => $file_id]]);
+
+ // $this->importCorrectionUpdateEndorsementID(['file_id' => $file_id]);
+
+ return 'Correction Validation Success';
}
-
- $policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
- $depositeData = [
- 'employeeIds' => $employeeIds,
- 'client_id' => $client_id,
- 'client_policy_id' => $client_policy_id,
- 'client_branch_id' => $client_branch_id,
- 'count' => $count,
- 'event' => $import_data['event_type'],
- 'policy_name' => $policy_name['policy_name'],
- ];
-
- // dd($depositeData);
- $this->cashDepositCalculationForSIEnhancement($depositeData);
-
- return 1;
}
- public function importExcelDataForDeletion($import_data)
+ public function importCorrectionUpdateEndorsementID($params){
+
+ $this->myLogger->logme('error', 'importCorrectionUpdateEndorsementID called');
+
+ $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();
+ $this->myLogger->logme('error', 'importCorrectionUpdateEndorsementID the Physical file not found - file id : {data}', ['data' => $file_id]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'importCorrectionUpdateEndorsementID the Physical file not found'; // Return error code if file not found
+ }
+
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $client_branch_id = $file['client_branch_id'];
+ $insurer_or_tpa = $file['insurer_or_tpa'];
+ $status = $file['status'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
+
+
+ $status_val = 'success';
+ if ($status == 'in-progress-partially') {
+
+ $status_val = 'partially success';
+ }
+
+ $this->myLogger->logme('error', 'importCorrectionUpdateEndorsementID file name : {data}', ['data'=> $file['file_name']]);
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]);
+
+ $emp_ids = [];
+ $emp_details = [];
+ $endorsement_id = [];
+ $endorsement_details = [];
+
+ $emp_count = count($excel_data);
+ $db = \Config\Database::connect();
+
+
+ foreach ($excel_data as $key => $value) {
+
+ $emp_code = $value[0];
+ $old_value = $value[7];
+ $endorsement_id[] = $value[10];
+ $uhid = $value[1];
+
+
+ $result = $this->empEndorsementModel
+ ->select('emp_endorsement.*, employees.id as emp_id')
+ ->join('employees', 'employees.id = emp_endorsement.pk')
+ ->join('employee_polices', 'employee_polices.employee_id = employees.id')
+ ->where('employees.emp_code', $emp_code)
+ ->where('employees.client_id', $client_id)
+ ->where('employees.client_branch_id', $client_branch_id)
+ ->where('employee_polices.client_policy_id', $client_policy_id)
+ ->where('employee_polices.uhid', $uhid)
+ ->where('emp_endorsement.old_value', $old_value)
+
+ ->where('employee_polices.is_active', 1)
+ ->where('employee_polices.status', 'active')
+ ->where('employees.is_active', 1)
+ ->where('employees.emp_status', 'active')
+ ->first();
+
+ if (isset($result['id']) && $result['id'] !== null) {
+
+ // return $result;
+ $emp_details[] = array('id' => $result['emp_id'], 'group_key' => $result['group_key'], $result['field_name'] => $value[8]);
+ $endorsement_details[] = array('group_key' => $result['group_key'], 'id' => $result['id'], 'endorsement_id' => $value[10], 'status' => 'complete');
+ }
+
+ }
+
+ // return [$emp_details, $endorsement_details];
+
+ $this->empEndorsementModel->updateBatch($endorsement_details, 'group_key');
+ $this->employeeModel->updateBatch($emp_details);
+
+ // Update batch file status and amount
+ $this->batchFileModel->update($file_id, [
+ 'count' => $emp_count,
+ 'status' => $status_val,
+ ]);
+
+
+ $this->myLogger->logme('error', 'importCorrectionUpdateEndorsementID employee count : {data}', ['data'=> $emp_count]);
+ $this->myLogger->logme('error', 'importCorrectionUpdateEndorsementID batch file status : {data}', ['data'=> $status_val]);
+
+
+ $file_data = $this->getDataByFileId($file_id, 'success');
+ $this->setPullNotification($file_data);
+
+
+ return 'Import Correction Updated '. $status_val . '- Updated Count : ' . $emp_count;
+
+ }
+
+
+
+
+ //Endorsement SIEnhancement
+
+ public function importSIEnhancementValidation($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'];
+ $client_branch_id = $file['client_branch_id'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
+
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+
+ if (!file_exists($file_name_with_path)) {
+ return 'The Physical file not found';
+ }
+
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]);
+
+
+ $db = \Config\Database::connect();
+
+ // Raw SQL query
+ $sql = "
+ SELECT
+ a.id as endorsement_primarykey,
+ a.group_key,
+ employee_polices.id AS primaryKey,
+ employees.id AS emp_primary,
+ employees.name AS emp_name,
+ employees.emp_code AS emp_code,
+ employees.dob AS emp_dob,
+ employees.gender AS emp_gender,
+ employees.relationship_code AS emp_relationship_code,
+ 'Has Define' AS emp_type,
+ employee_polices.uhid AS risk_id,
+ employee_polices.pre_existing_alignments,
+ employee_polices.policy_end_date,
+ employee_polices.basic_cover_si as old_basic_cover_si,
+ employee_polices.rata_premimum as old_si_premium,
+ sidata.new_basic_cover_si,
+ sidata.new_si_premium,
+ sidata.date_of_coverage,
+ DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1 AS no_of_days,
+ sidata.new_si_premium - employee_polices.rata_premimum AS difference_premium,
+ ROUND((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365, 2) AS pro_rata_premimum,
+ ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS gst,
+ ((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) + ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS total
+ FROM
+ emp_endorsement a
+ LEFT JOIN
+ employees ON employees.emp_code = a.emp_code
+ LEFT JOIN
+ employee_polices ON employees.id = employee_polices.employee_id
+ LEFT JOIN (
+ SELECT
+ aa.emp_code,
+ aa.new_value as new_basic_cover_si,
+ bb.new_value as new_si_premium,
+ cc.new_value as date_of_coverage
+ FROM (
+ SELECT
+ a1.emp_code,
+ a1.field_name,
+ a1.new_value
+ FROM
+ emp_endorsement as a1
+ WHERE
+ a1.field_name = 'basic_cover_si'
+ ) aa
+ LEFT JOIN (
+ SELECT
+ b1.emp_code,
+ b1.field_name,
+ b1.new_value
+ FROM
+ emp_endorsement as b1
+ WHERE
+ b1.field_name = 'premium'
+ ) bb ON aa.emp_code = bb.emp_code
+ LEFT JOIN (
+ SELECT
+ c1.emp_code,
+ c1.field_name,
+ c1.new_value
+ FROM
+ emp_endorsement as c1
+ WHERE
+ c1.field_name = 'si_enhancement_date'
+ ) cc ON aa.emp_code = cc.emp_code
+ ) as sidata ON a.emp_code = sidata.emp_code
+ WHERE
+ employee_polices.client_policy_id = '$client_policy_id'
+ AND employees.client_branch_id = '$client_branch_id'
+ AND employee_polices.is_active = '1'
+ AND (a.endorsement_id IS NULL OR a.endorsement_id = '')
+ AND a.actions = 'si'
+ GROUP BY group_key
+ ";
+
+ // Execute the query
+ $query = $db->query($sql);
+
+ // Fetch the results
+ $endorsement_data = $query->getResultArray();
+
+
+
+ // dd($endorsement_data, $excel_data);
+
+
+ if ($endorsement_data == null || empty($endorsement_data)) {
+
+ $data = [
+ 'status' => 'failed-1',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'SI Enhancement_File Validation -- ENDORSEMENT ID already updated or the uploadedfile is not correct');
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The list of employees provided has already been updated with the ENDORSEMENT ID, or this is not the correct file';
+ }
+
+ $excel_data_count = count($excel_data);
+ $endorsement_data_count = count($endorsement_data);
+
+ $this->myLogger->logme('error', 'SI Enhancement_File Validation -- Excel file count : {data}', ['data' => $excel_data_count]);
+ $this->myLogger->logme('error', 'SI Enhancement File Validation -- Database count : {data}', ['data' => $endorsement_data_count]);
+
+
+ $difference = $endorsement_data_count - $excel_data_count;
+
+ $status = 'in-progress';
+ if ($excel_data_count < $endorsement_data_count) {
+
+ $status = 'in-progress-partially';
+ $partially_updated_data = 'Expected : ' . $endorsement_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
+ $this->myLogger->logme('error', 'SI Enhancement File Validation -- excel file count partially : {data}', ['data' => $partially_updated_data]);
+ }
+
+
+
+ if ($endorsement_data_count < $excel_data_count) {
+
+ $data = [
+ 'status' => 'failed-3',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'SI_Enhancement_FileValidation excel file count ( {excel} ) exceeds db count ( {db} )', ['db' => $endorsement_data_count, 'excel' => $excel_data_count]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . 'db count : ' . $endorsement_data_count;
+ }
+
+
+ $errors = []; // Initialize an array to store errors
+ $missing_id = [];
+ $batch_list_id = [];
+
+ foreach ($endorsement_data as $key => $endorsement_value) {
+
+ $key = $key + 1;
+
+ if (!isset($excel_data[$key])) {
+ break;
+ }
+
+
+ if ($excel_data[$key][19] === null) {
+ $missing_id[$key][] = [
+ 'row' => $key,
+ 'column' => 19,
+ ];
+ }
+
+
+ if ($endorsement_value['emp_name'] != $excel_data[$key][1]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 1,
+ 'db_data' => $endorsement_value['emp_name'],
+ 'excel_data' => $excel_data[$key][1]
+ ];
+ }
+
+ if ($endorsement_value['emp_code'] != $excel_data[$key][2]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 2,
+ 'db_data' => $endorsement_value['emp_code'],
+ 'excel_data' => $excel_data[$key][2]
+ ];
+ }
+
+ if ($endorsement_value['emp_relationship_code'] != $excel_data[$key][4]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 4,
+ 'db_data' => $endorsement_value['emp_relationship_code'],
+ 'excel_data' => $excel_data[$key][4]
+ ];
+ }
+
+ if ($endorsement_value['emp_dob'] != $excel_data[$key][5]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 5,
+ 'db_data' => $endorsement_value['emp_dob'],
+ 'excel_data' => $excel_data[$key][5]
+ ];
+ }
+
+ if ($endorsement_value['emp_gender'] != $excel_data[$key][6]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 6,
+ 'db_data' => $endorsement_value['emp_gender'],
+ 'excel_data' => $excel_data[$key][6]
+ ];
+ }
+
+
+ if ($endorsement_value['pre_existing_alignments'] != $excel_data[$key][7]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 7,
+ 'db_data' => $endorsement_value['pre_existing_alignments'],
+ 'excel_data' => $excel_data[$key][7]
+ ];
+ }
+
+ if ($endorsement_value['new_basic_cover_si'] != $excel_data[$key][8]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 8,
+ 'db_data' => $endorsement_value['new_basic_cover_si'],
+ 'excel_data' => $excel_data[$key][8]
+ ];
+ }
+
+ if ($endorsement_value['old_basic_cover_si'] != $excel_data[$key][9]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 9,
+ 'db_data' => $endorsement_value['old_basic_cover_si'],
+ 'excel_data' => $excel_data[$key][9]
+ ];
+ }
+
+
+
+ if ($endorsement_value['date_of_coverage'] != $excel_data[$key][10]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 10,
+ 'db_data' => $endorsement_value['date_of_coverage'],
+ 'excel_data' => $excel_data[$key][10]
+ ];
+ }
+
+ if ($endorsement_value['policy_end_date'] != $excel_data[$key][11]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 11,
+ 'db_data' => $endorsement_value['policy_end_date'],
+ 'excel_data' => $excel_data[$key][11]
+ ];
+ }
+
+ if ($endorsement_value['no_of_days'] != $excel_data[$key][12]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 12,
+ 'db_data' => $endorsement_value['no_of_days'],
+ 'excel_data' => $excel_data[$key][12]
+ ];
+ }
+
+ if ($endorsement_value['old_si_premium'] != $excel_data[$key][13]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 13,
+ 'db_data' => $endorsement_value['old_si_premium'],
+ 'excel_data' => $excel_data[$key][13]
+ ];
+ }
+
+ if ($endorsement_value['new_si_premium'] != $excel_data[$key][14]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 14,
+ 'db_data' => $endorsement_value['new_si_premium'],
+ 'excel_data' => $excel_data[$key][14]
+ ];
+ }
+
+ if ($endorsement_value['difference_premium'] != $excel_data[$key][15]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 15,
+ 'db_data' => $endorsement_value['difference_premium'],
+ 'excel_data' => $excel_data[$key][15]
+ ];
+ }
+
+ if ($endorsement_value['pro_rata_premimum'] != $excel_data[$key][16]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 16,
+ 'db_data' => $endorsement_value['pro_rata_premimum'],
+ 'excel_data' => $excel_data[$key][16]
+ ];
+ }
+
+ if ($endorsement_value['gst'] != $excel_data[$key][17]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 17,
+ 'db_data' => $endorsement_value['gst'],
+ 'excel_data' => $excel_data[$key][17]
+ ];
+ }
+
+ $batch_list_id[] = $endorsement_value['primaryKey'];
+ }
+
+
+ $error_count = count($errors);
+ $json_errors = json_encode($errors);
+
+
+ $missing_id_count = count($missing_id);
+ $json_missing_id = json_encode($missing_id);
+
+ // dd($error_count, $missing_id_count, $json_errors, $json_missing_id, $batch_list_id);
+
+
+ if ($missing_id_count > 0) {
+
+ $data = [
+
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_missing_id,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The ENDORSEMENT ID column is either partially or entirely empty.';
+ }
+
+
+ if ($error_count > 0) {
+
+ $data = [
+
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_errors,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ return 'SI ENHANCEMENT File Validation Failed';
+ } else {
+
+ $data = [
+ 'count' => $endorsement_data_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,
+ 'created_by' => $user_id,
+ ];
+
+ $insert = $this->batchListModel->insert($data);
+ }
+
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importSIEnhancementUpdateEndorsementID', 'payload' => ['file_id' => $file_id]]);
+
+ // $this->importSIEnhancementUpdateEndorsementID(['file_id' => $file_id]);
+ return 'SI Enhancement_File Validation -- Success';
+ }
+ }
+
+
+ public function importSIEnhancementUpdateEndorsementID($params)
{
- $client_id = $import_data['client_id'];
- $client_policy_id = $import_data['client_policy_id'];
- $client_branch_id = $import_data['client_branch_id'];
- $file = $import_data['file'];
+ $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID -- Function called');
+
+ $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();
+ $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID -- The Physical file not found -- File id : {data}', ['data' => $file_id]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'SI Enhancement Update Endorsement ID -- The Physical file not found'; // Return error code if file not found
+ }
+
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $client_branch_id = $file['client_branch_id'];
+ $status = $file['status'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
- $data = $this->readExcelToArray($file);
- unset($data[0]);
- array_pop($data);
- $count = count($data);
+ $status_val = 'success';
+ if ($status == 'in-progress-partially') {
+ $status_val = 'partially success';
+ }
- $missing_id = [];
- $empty_emp_tpa_uh_ids = [];
+ $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID -- file name : {data}', ['data' => $file['file_name']]);
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]);
+
+ $emp_count = count($excel_data); //excel file count
+
+ $emp_policy_ids = [];
+ $employeeIds = [];
+ $emp_details = [];
+ $endorsement_id = [];
+ $endorsement_details = [];
$totals = 0;
- foreach ($data as $key => $value) {
- try {
+ foreach ($excel_data as $key => $value) {
- if ($value[15] === null) {
- $missing_id[] = $key + 1;
- }
+ $emp_name = $value[1];
+ $emp_code = $value[2];
+ $endorsement_id[] = $value[19];
+ $totals += $value[18];
- $totals += $value[13];
- $emp_name = $value[2]; //employee name
- $emp_code = $value[1]; //employee code
- $date_of_exit = $value[7]; // date of releving
- $endorsement_id = $value[15] != null ? $value[15] : ''; //endorsement id
+ $result = $this->empEndorsementModel
- $db = \Config\Database::connect();
+ ->select('emp_endorsement.*, employees.id as emp_id, employee_polices.id as emp_policy_id')
+ ->join('employee_polices', 'employee_polices.id = emp_endorsement.pk')
+ ->join('employees', 'employees.emp_code = emp_endorsement.emp_code')
+ ->where('employees.emp_code', $emp_code)
+ ->where('employees.name', $emp_name)
+ ->where('employees.client_id', $client_id)
+ ->where('employees.client_branch_id', $client_branch_id)
+ ->where('emp_endorsement.actions', 'si')
+ ->where('employee_polices.client_policy_id', $client_policy_id)
+ ->where('employee_polices.is_active', 1)
+ ->where('employee_polices.status', 'active')
+ ->where('employees.is_active', 1)
+ ->where('employees.emp_status', 'active')
+ ->where('(emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = "")')
+ ->groupBy('emp_endorsement.group_key')
+ ->first();
- // Execute the query
- $query = $db->table('emp_endorsement')
- ->select('emp_endorsement.id')
- ->join('employee_polices', 'employee_polices.id = emp_endorsement.pk')
- ->join('employees', 'employees.emp_code = emp_endorsement.emp_code')
- ->where('employees.emp_code', $emp_code)
- ->where('employees.name', $emp_name)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('emp_endorsement.actions', 'd')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('(emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = "")')
- ->groupBy('emp_endorsement.group_key');
-
- $result = $query->get()->getRowArray();
- if (isset($result['id']) && $result['id'] !== null) {
- $empty_emp_tpa_uh_ids[] = $result['id'];
- }
- } catch (\Exception $e) {
- // Handle the exception here
- return 0;
+ if (isset($result['id']) && $result['id'] !== null) {
+ $emp_policy_ids[] = array('id' => $result['emp_policy_id'], 'is_active' => 0);
+ $employeeIds[] = $result['emp_policy_id'];
+ $endorsement_details[] = array('id' => $result['id'], 'group_key' => $result['group_key'], 'endorsement_id' => $value[19], 'status' => 'complete');
}
+
+ $empData = $this->employeePolicyModel
+ ->select('employee_polices.*')
+ ->join('employees', 'employee_polices.employee_id = employees.id')
+ ->where('employees.emp_code', $emp_code)
+ ->where('employees.name', $emp_name)
+ ->where('employees.client_id', $client_id)
+ ->where('employees.client_branch_id', $client_branch_id)
+ ->where('employee_polices.client_policy_id', $client_policy_id)
+ ->where('employee_polices.is_active', 1)
+ ->where('employee_polices.status', 'active')
+ ->where('employees.is_active', 1)
+ ->where('employees.emp_status', 'active')
+ ->first();
+
+ unset($empData['id'], $empData['created_by'], $empData['created_at'], $empData['updated_by'], $empData['updated_at'], $empData['is_active']);
+
+ $empData['basic_cover_si'] = $value[8];
+ $empData['premium'] = $value[14];
+ $empData['si_enhancement_date'] = $value[10];
+ $empData['rata_premimum'] = $value[16];
+ $empData['gst'] = $value[17];
+ $empData['created_by'] = $user_id;
+
+ $emp_details[] = $empData;
}
$rounded_totals = round($totals, 2);
- $missing_id_count = count($missing_id);
- $empty_id_count = count($empty_emp_tpa_uh_ids);
- // if($missing_id_count != $count){
+ // dd($emp_policy_ids, $emp_details, $endorsement_details);
- // return 2;
+ $this->employeePolicyModel->updateBatch($emp_policy_ids, 'id');
+
+ $db = \Config\Database::connect();
+ $db->transStart();
+
+ $this->employeePolicyModel->insertBatch($emp_details);
+
+ $insertedIds = [];
+ $startId = $db->insertID(); // Get the first inserted ID
+
+ for ($i = 0; $i < count($emp_details); $i++) {
+ $insertedIds[] = $startId + $i;
+ }
+
+ $db->transComplete();
+
+ // if ($db->transStatus() === FALSE) {
+ // // Handle the error, rollback, etc.
+ // } else {
+ // // Transaction successful
+ // print_r($insertedIds); // This will print the array of inserted IDs
// }
+
+ $this->employeePolicyModel->bulkUpdateForEndorsement($endorsement_details);
- if ($missing_id_count != 0) {
-
- return 2;
- }
-
- // if($empty_emp_tpa_uh_ids != $count){
-
- // return 3;
- // }
-
- if ($empty_id_count == 0) {
-
- return 3;
- }
-
- // dd($count, $missing_id_count, $empty_id_count, $data, $empty_emp_tpa_uh_ids);
-
- $is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
- $filename = $file->getName();
-
- $this->myLogger->logme('error', 'Deletion Import file name : {data}', ['data' => $filename]);
- $random_number_count = 4;
- $batch_code = generate_random_string($random_number_count);
- $this->myLogger->logme('error', 'Deletion Import BATCH CODE : {data}', ['data' => $batch_code]);
+ // Update batch file status and amount
+ $this->batchFileModel->update($file_id, [
+ 'count' => $emp_count,
+ 'status' => $status_val,
+ 'amount' => $rounded_totals,
+ ]);
- $import_data['batch_code'] = $batch_code;
- $import_data['created_by'] = get_session_userid();
- $import_data['file_name'] = $filename;
- $import_data['amount'] = $rounded_totals;
- $insert = $this->batchFileModel->insert($import_data);
- $batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first();
-
- $batch_code_for_batch_list['batch_code'] = $batch_file_batch_code['batch_code'];
- $batch_code_for_batch_list['created_by'] = get_session_userid();
-
- $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $batch_file_batch_code['file_name'];
-
- if (!file_exists($file_name_with_path)) {
- return 2;
- }
-
- $data = read_excel_file_to_array($file_name_with_path);
- unset($data[0]);
- array_pop($data);
-
- $count = count($data);
- $this->batchFileModel->where('id', $insert)->set('count', $count)->update();
-
- $employeeIds = [];
- foreach ($data as $key => $value) {
-
- if (!empty($value) && isset($value[15])) {
-
- $emp_name = $value[2]; //employee name
- $emp_code = $value[1]; //employee code
- $date_of_exit = $value[7]; // date of releving
-
- // echo $emp_name .'-'. $emp_code .'-'. $date_of_exit; die;
- $endorsement_id = $value[15] != null ? $value[15] : ''; //endorsement id
-
- $val = $this->employeePolicyModel
- ->select('employee_polices.id')
- ->join('employees', 'employees.id = employee_polices.employee_id')
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employees.name', $emp_name)
- ->where('employees.emp_code', $emp_code)
- ->where('employee_polices.is_active', 1)
- ->first();
+ $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID -- Employee count : {data}', ['data' => $emp_count]);
+ $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID -- Batch File status : {data}', ['data' => $status_val]);
- if ($val !== null) {
+ $file_data = $this->getDataByFileId($file_id, 'success');
+ $this->setPullNotification($file_data);
- $id = $val['id'];
- $batch_code_for_batch_list['emp_policy_id'] = $id;
- $this->batchListModel->insert($batch_code_for_batch_list);
- array_push($employeeIds, $id);
- }
-
- // $updateData = [
- // 'emp_code' =>$emp_code,
- // 'client_id' =>$client_id,
- // 'client_policy_id' =>$client_policy_id,
- // 'emp_name' =>$emp_name,
- // 'endorsement_id' =>$endorsement_id,
- // ];
-
- // $this->employeePolicyModel->updateEndoresmentIdForDeletion($updateData);
-
- $deletionDataForEmployee = $this->empEndorsementModel
- ->select('emp_endorsement.new_value, emp_endorsement.id as ee_id, employees.id')
- ->join('employees', 'emp_endorsement.emp_code = employees.emp_code')
- ->join('employee_polices', 'employee_polices.employee_id = employees.id')
- ->where('emp_endorsement.emp_code', $emp_code)
- ->where('employees.client_id', $client_id)
- ->where('employees.client_branch_id', $client_branch_id)
- ->where('employee_polices.client_policy_id', $client_policy_id)
- ->where('emp_endorsement.name', $emp_name)
- ->where('emp_endorsement.field_name', 'emp_status')
- ->first();
-
- $deletionDataForEmployee['updated_by'] = get_session_userid();
- $this->employeeModel->save($deletionDataForEmployee);
-
- $e_Data = [
- 'endorsement_id' => $endorsement_id,
- 'status' => 'complete',
- ];
- $group_key = $this->empEndorsementModel->select('group_key')->where('id', $deletionDataForEmployee['ee_id'])->first();
- $this->empEndorsementModel->where('group_key', $group_key)->set($e_Data)->update();
-
- $fetchData = [
- 'emp_code' => $emp_code,
- 'client_policy_id' => $client_policy_id,
- 'emp_name' => $emp_name,
- ];
-
- $deletionDataForEmployeePolicy = $this->employeePolicyModel->fetchEmpEndorsementData($fetchData);
- $deletionDataForEmployeePolicy['updated_by'] = get_session_userid();
- $this->employeePolicyModel->save($deletionDataForEmployeePolicy);
-
- // $query = $this->employeePolicyModel->getLastQuery();
- // echo $query . "
";
-
- } else {
-
- return 0;
- }
- }
+ //call the cash deposite function
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
- $depositeData = [
- 'employeeIds' => $employeeIds,
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'cashDepositCalculationForSIEnhancement','payload' => [
+ 'employeeIds' => $insertedIds,
'client_id' => $client_id,
- 'client_branch_id' => $client_branch_id,
'client_policy_id' => $client_policy_id,
- 'count' => $count,
- 'event' => $import_data['event_type'],
+ 'client_branch_id' => $client_branch_id,
+ 'count' => $emp_count,
+ 'event' => $file['event_type'],
'policy_name' => $policy_name['policy_name'],
- ];
+ 'user_id' => $user_id,
+ ]]);
- $this->cashDepositCalculationForDeletion($depositeData);
- return 1;
+ return 'SI Enhancement Update Endorsement ID -- ' . $status_val . '-- Updated Count : ' . $emp_count;
}
+ //Endorsement Deletion
+
+ public function importDeletionValidation($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'];
+ $client_branch_id = $file['client_branch_id'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
+
+
+ $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
+
+ if (!file_exists($file_name_with_path)) {
+ return 'The Physical file not found';
+ }
+
+ $excel_data = $this->readExcelFileToArray($file_name_with_path);
+ unset($excel_data[0]);
+ array_pop($excel_data);
+
+
+ $db = \Config\Database::connect();
+
+ $sql = "
+ SELECT DISTINCT
+ a.id as endorsement_primarykey,
+ a.group_key,
+ employee_polices.id as primaryKey,
+ employees.name AS emp_name,
+ employees.emp_code AS emp_code,
+ employees.dob AS emp_dob,
+ employees.gender AS emp_gender,
+ employees.relationship AS emp_relationship,
+ 'Has Define' as emp_type,
+
+ employee_polices.basic_cover_si,
+ employee_polices.uhid as risk_id,
+ employee_polices.policy_end_date,
+ employee_polices.rata_premimum as premium,
+
+
+ deletiondata.empstatus,
+ deletiondata.changeevent,
+ deletiondata.dateofexit,
+ deletiondata.reasonforexit,
+ deletiondata.status,
+
+ DATEDIFF(employee_polices.policy_end_date, deletiondata.dateofexit) AS no_of_days,
+ ROUND((employee_polices.rata_premimum * DATEDIFF(employee_polices.policy_end_date, deletiondata.dateofexit)) / 365, 2) AS pro_rata_premium,
+ ROUND(((employee_polices.rata_premimum * DATEDIFF(employee_polices.policy_end_date, deletiondata.dateofexit)) / 365) * 0.18, 2) AS gst,
+ ROUND(((employee_polices.rata_premimum * DATEDIFF(employee_polices.policy_end_date, deletiondata.dateofexit)) / 365) + (((employee_polices.rata_premimum * DATEDIFF(employee_polices.policy_end_date, deletiondata.dateofexit)) / 365) * 0.18), 2) AS total
+ FROM
+ emp_endorsement a
+ LEFT JOIN
+ employees ON a.emp_code = employees.emp_code and a.pk = employees.id
+ LEFT JOIN
+ employee_polices ON employees.id = employee_polices.employee_id
+
+ LEFT JOIN(
+
+ select aa.emp_code, aa.new_value as 'empstatus', bb.new_value as 'changeevent', cc.new_value as 'dateofexit', dd.new_value as 'reasonforexit', ee.new_value as 'status' from
+
+ ( SELECT a1.emp_code, a1.field_name, a1.new_value from emp_endorsement as a1 where a1.field_name = 'emp_status') aa
+ left join
+ ( SELECT b1.emp_code, b1.field_name, b1.new_value from emp_endorsement as b1 where b1.field_name = 'change_event') bb on aa.emp_code = bb.emp_code
+ left join
+ ( SELECT c1.emp_code, c1.field_name, c1.new_value from emp_endorsement as c1 where c1.field_name = 'date_of_exit') cc on aa.emp_code = cc.emp_code
+ left join
+ ( SELECT d1.emp_code, d1.field_name, d1.new_value from emp_endorsement as d1 where d1.field_name = 'reason_for_exit') dd on aa.emp_code = dd.emp_code
+ left JOIN
+ ( SELECT e1.emp_code, e1.field_name, e1.new_value from emp_endorsement as e1 where e1.field_name = 'status') ee on aa.emp_code = ee.emp_code
+
+ ) as deletiondata on a.emp_code = deletiondata.emp_code
+
+ WHERE employee_polices.client_policy_id = '$client_policy_id'
+ AND employees.client_branch_id = '$client_branch_id'
+ AND a.actions = 'd'
+ AND employee_polices.is_active = 1
+ AND employee_polices.status = 'active'
+ AND employees.is_active = 1
+ AND employees.emp_status = 'active'
+ AND (a.endorsement_id IS NULL OR a.endorsement_id = '')
+ group by group_key
+ ";
+
+ $query = $db->query($sql);
+ $endorsement_data = $query->getResultArray();
+
+
+ if ($endorsement_data == null || empty($endorsement_data)) {
+
+ $data = [
+ 'status' => 'failed-1',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'Deletion File Validation ENDORSEMENT ID already updated');
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The list of employees provided has already been updated with the ENDORSEMENT ID, or this is not the correct file';
+ $this->myLogger->logme('error', 'Deletion File Validation ENDORSEMENT ID already updated or the uploadedfile is not correct');
+ }
+
+ $excel_data_count = count($excel_data);
+ $endorsement_data_count = count($endorsement_data);
+
+ $this->myLogger->logme('error', 'Deletion File Validation excel file count : {data}', ['data' => $excel_data_count]);
+ $this->myLogger->logme('error', 'Deletion File Validation database count : {data}', ['data' => $endorsement_data_count]);
+
+
+ $difference = $endorsement_data_count - $excel_data_count;
+
+ $status = 'in-progress';
+ if ($excel_data_count < $endorsement_data_count) {
+
+ $status = 'in-progress-partially';
+ $partially_updated_data = 'Expected : ' . $endorsement_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
+ $this->myLogger->logme('error', 'Deletion File Validation excel file count partially : {data}', ['data' => $partially_updated_data]);
+ }
+
+
+
+ if ($endorsement_data_count < $excel_data_count) {
+
+ $data = [
+ 'status' => 'failed-3',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $this->myLogger->logme('error', 'Deletion File Validation excel file count ( {excel} ) exceeds db count ( {db} )', ['db' => $endorsement_data_count, 'excel' => $excel_data_count]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The Excel record count exceeds the DB record count. excel file count : ' . $excel_data_count . ' db count : ' . $endorsement_data_count;
+ }
+
+
+ $errors = []; // Initialize an array to store errors
+ $missing_id = [];
+ $batch_list_id = [];
+
+ foreach ($endorsement_data as $key => $endorsement_value) {
+
+ $key = $key + 1;
+
+ if (!isset($excel_data[$key])) {
+ break;
+ }
+
+
+ if ($excel_data[$key][15] === null) {
+ $missing_id[$key][] = [
+ 'row' => $key,
+ 'column' => 15,
+ ];
+ }
+
+
+ if ($endorsement_value['emp_name'] != $excel_data[$key][2]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 2,
+ 'db_data' => $endorsement_value['emp_name'],
+ 'excel_data' => $excel_data[$key][2]
+ ];
+ }
+
+ if ($endorsement_value['emp_code'] != $excel_data[$key][1]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 1,
+ 'db_data' => $endorsement_value['emp_code'],
+ 'excel_data' => $excel_data[$key][1]
+ ];
+ }
+
+ if ($endorsement_value['emp_dob'] != $excel_data[$key][3]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 3,
+ 'db_data' => $endorsement_value['emp_dob'],
+ 'excel_data' => $excel_data[$key][3]
+ ];
+ }
+
+ if ($endorsement_value['emp_gender'] != $excel_data[$key][4]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 4,
+ 'db_data' => $endorsement_value['emp_gender'],
+ 'excel_data' => $excel_data[$key][4]
+ ];
+ }
+
+
+ if ($endorsement_value['emp_relationship'] != $excel_data[$key][5]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 5,
+ 'db_data' => $endorsement_value['emp_relationship'],
+ 'excel_data' => $excel_data[$key][5]
+ ];
+ }
+
+ if ($endorsement_value['basic_cover_si'] != $excel_data[$key][6]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 6,
+ 'db_data' => $endorsement_value['basic_cover_si'],
+ 'excel_data' => $excel_data[$key][6]
+ ];
+ }
+
+ if ($endorsement_value['dateofexit'] != $excel_data[$key][7]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 7,
+ 'db_data' => $endorsement_value['dateofexit'],
+ 'excel_data' => $excel_data[$key][7]
+ ];
+ }
+
+ if ($endorsement_value['policy_end_date'] != $excel_data[$key][8]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 8,
+ 'db_data' => $endorsement_value['policy_end_date'],
+ 'excel_data' => $excel_data[$key][8]
+ ];
+ }
+
+ if ($endorsement_value['no_of_days'] != $excel_data[$key][9]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 9,
+ 'db_data' => $endorsement_value['no_of_days'],
+ 'excel_data' => $excel_data[$key][9]
+ ];
+ }
+
+
+
+ if ($endorsement_value['premium'] != $excel_data[$key][10]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 10,
+ 'db_data' => $endorsement_value['premium'],
+ 'excel_data' => $excel_data[$key][10]
+ ];
+ }
+
+ if ($endorsement_value['pro_rata_premium'] != $excel_data[$key][11]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 11,
+ 'db_data' => $endorsement_value['pro_rata_premium'],
+ 'excel_data' => $excel_data[$key][11]
+ ];
+ }
+
+ if ($endorsement_value['gst'] != $excel_data[$key][12]) {
+ $errors[$key][] = [
+ 'row' => $key,
+ 'column' => 12,
+ 'db_data' => $endorsement_value['gst'],
+ 'excel_data' => $excel_data[$key][12]
+ ];
+ }
+
+ $batch_list_id[] = array('emp_policy_id' =>$endorsement_value['primaryKey'], 'batch_code' => $batch_code, 'created_by' => $user_id);
+ }
+
+
+ $error_count = count($errors);
+ $json_errors = json_encode($errors);
+
+
+ $missing_id_count = count($missing_id);
+ $json_missing_id = json_encode($missing_id);
+
+ // dd($error_count, $missing_id_count, $json_errors, $json_missing_id, $batch_list_id);
+
+ if ($missing_id_count > 0) {
+
+ $data = [
+
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_missing_id,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'The ENDORSEMENT ID column is either partially or entirely empty.';
+ }
+
+
+ if ($error_count > 0) {
+
+ $data = [
+ 'count' => $endorsement_data_count,
+ 'error_data' => $json_errors,
+ 'status' => 'failed',
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'Deletion File Validation Failed';
+
+ } else {
+
+ $data = [
+ 'count' => $endorsement_data_count,
+ 'status' => $status,
+ 'error_data' => $partially_updated_data ?? null,
+ ];
+
+ $this->batchFileModel->where('id', $file_id)->set($data)->update();
+ $insert = $this->batchListModel->insertBatch($batch_list_id);
+
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importDeletionUpdateEndorsementID', 'payload' => ['file_id' => $file_id]]);
+
+ // $this->importDeletionUpdateEndorsementID(['file_id' => $file_id]);
+
+ return 'Deletion File Validation ENDORSEMENT ID validated the file Successfully';
+ }
+
+ }
+
+
+ public function importDeletionUpdateEndorsementID($params)
+ {
+
+ $this->myLogger->logme('error', 'Deletion Update Endorsement ID -- Function called');
+
+ $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();
+ $this->myLogger->logme('error', 'Deletion Update Endorsement ID -- The Physical file not found -- File id : {data}', ['data' => $file_id]);
+
+ $file_data = $this->getDataByFileId($file_id, 'failure');
+ $this->setPullNotification($file_data);
+
+ return 'Deletion Update Endorsement ID -- The Physical file not found'; // Return error code if file not found
+ }
+
+ $client_id = $file['client_id'];
+ $client_policy_id = $file['client_policy_id'];
+ $client_branch_id = $file['client_branch_id'];
+ $status = $file['status'];
+ $batch_code = $file['batch_code'];
+ $user_id = $file['created_by'];
+
+
+ $status_val = 'success';
+ if ($status == 'in-progress-partially') {
+
+ $status_val = 'partially success';
+ }
+
+ $this->myLogger->logme('error', 'Deletion Update Endorsement ID -- file name : {data}', ['data' => $file['file_name']]);
+
+ $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); //excel file count
+
+ $employees_table_data = [];
+ $emp_endorsement_table_data = [];
+ $employee_policy_table_data = [];
+ $employee_policy_table_primaryKey = [];
+
+ $totals = 0;
+
+
+ foreach ($excel_data as $key => $value) {
+
+ $emp_name = $value[2]; //employee name
+ $emp_code = $value[1]; //employee code
+ $totals = $totals + $value[13];
+
+
+ $fetch_data = [
+ 'client_policy_id' => $client_policy_id,
+ 'client_branch_id' => $client_branch_id,
+ 'emp_name' => $emp_name,
+ 'emp_code' => $emp_code
+ ];
+ $result = $this->employeePolicyModel->fetchEmpEndorsementData($fetch_data);
+
+ // dd($result['emp_endorsement_primarykey']);
+
+ if (isset($result['emp_endorsement_primarykey']) && $result['emp_endorsement_primarykey'] !== null) {
+
+ $employee_policy_table_primaryKey[] = $result['emp_policy_primarykey']; //for cash deposite
+ $employee_policy_table_data[] = array('id' => $result['emp_policy_primarykey'], 'date_of_exit' => $result['date_of_exit'], 'reason_for_exit' => $result['reason_for_exit'], 'status' => $result['status'], 'is_active' => 0);
+ $employees_table_data[] = array('id' => $result['employees_primarykey'], 'emp_status' => $result['status'], 'is_active' => 0);
+ $emp_endorsement_table_data[] = array('id' => $result['emp_endorsement_primarykey'], 'group_key' => $result['group_key'], 'endorsement_id' => $value[15], 'status' => 'complete');
+ }
+
+ }
+
+ $rounded_totals = round($totals, 2);
+
+ // dd($employees_table_data, $emp_endorsement_table_data, $employee_policy_table_data, $employee_policy_table_primaryKey, $totals, $emp_count);
+
+
+ // Check if $employees_table_data is null or empty
+ if (empty($employees_table_data)) {
+ return ['error' => true, 'message' => 'Employees table data is empty or null.'];
+ }
+
+ // Check if $employee_policy_table_data is null or empty
+ if (empty($employee_policy_table_data)) {
+ return ['error' => true, 'message' => 'Employee policy table data is empty or null.'];
+ }
+
+ // Check if $emp_endorsement_table_data is null or empty
+ if (empty($emp_endorsement_table_data)) {
+ return ['error' => true, 'message' => 'Employee endorsement table data is empty or null.'];
+ }
+
+ $this->employeeModel->updateBatch($employees_table_data, 'id');
+ $this->employeePolicyModel->updateBatch($employee_policy_table_data, 'id');
+ $this->employeePolicyModel->bulkUpdateForEndorsement($emp_endorsement_table_data);
+
+ // Update batch file status and amount
+ $this->batchFileModel->update($file_id, [
+ 'count' => $emp_count,
+ 'status' => $status_val,
+ 'amount' => $rounded_totals,
+ ]);
+
+
+ $this->myLogger->logme('error', 'Deletion Update Endorsement ID -- Employee count : {data}', ['data' => $emp_count]);
+ $this->myLogger->logme('error', 'Deletion Update Endorsement ID -- Batch File status : {data}', ['data' => $status_val]);
+
+
+ $file_data = $this->getDataByFileId($file_id, 'success');
+ $this->setPullNotification($file_data);
+
+ //call the cash deposite function
+
+ $policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'cashDepositCalculationForDeletion', 'payload' => [
+ 'employeeIds' => $employee_policy_table_primaryKey,
+ 'client_id' => $client_id,
+ 'client_policy_id' => $client_policy_id,
+ 'client_branch_id' => $client_branch_id,
+ 'count' => $emp_count,
+ 'event' => $file['event_type'],
+ 'policy_name' => $policy_name['policy_name'],
+ 'user_id' => $user_id,
+ ]]);
+
+ return 'Deletion Update Endorsement ID -- ' . $status_val . '-- Updated Count : ' . $emp_count;
+ }
+
+
/**
* The below functions are Calculates and records cash deposits for employee policies at inception.
*
@@ -1795,16 +2631,17 @@ class EmpDataServiceController extends BaseController
public function cashDepositCalculationForSIEnhancement($arrayData)
- {
+ {
+ // return $arrayData;
+
if (!empty($arrayData)) {
$amount = $this->employeePolicyModel->query("
- SELECT
- SUM(ROUND((employee_polices.premium * DATEDIFF(employee_polices.policy_end_date, employee_polices.si_enhancement_date)) / 365, 2) +
- ROUND(((employee_polices.premium * DATEDIFF(employee_polices.policy_end_date, employee_polices.si_enhancement_date)) / 365) * 0.18, 2)) AS total_sum
+ SELECT SUM(rata_premimum + gst) AS total_sum
FROM employee_polices
WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ")
- ")->getRow();
+ ")->getRow();
+
$insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
$description = 'The following amount of ' . $amount->total_sum . ' has been credited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
@@ -1816,11 +2653,12 @@ class EmpDataServiceController extends BaseController
'insurer_id' => $insurer_id['insurer_id'],
'description' => $description,
'transaction_type' => 'Debit',
- 'updated_by' => get_session_userid(),
+ 'updated_by' => $arrayData['user_id'],
'is_active' => 1,
];
- $response = DepositHelper::saveDeposit($data, get_session_userid());
- return true;
+ $response = DepositHelper::saveDeposit($data, $arrayData['user_id']);
+ $msg = "SI Enhancement Cash Deposite Updated Successfully -- " . $description;
+ return [$msg, $response];
// print_r($response);
// $query = $this->employeePolicyModel->getLastQuery();
// echo $query . "
";
@@ -1839,11 +2677,9 @@ class EmpDataServiceController extends BaseController
// echo '';
// print_r($arrayData); die;
$amount = $this->employeePolicyModel->query("
- SELECT
- SUM(ROUND((employee_polices.premium * DATEDIFF(employee_polices.policy_end_date, employee_polices.date_of_exit)) / 365, 2) +
- ROUND(((employee_polices.premium * DATEDIFF(employee_polices.policy_end_date, employee_polices.date_of_exit)) / 365) * 0.18, 2)) AS total_sum
- FROM employee_polices
- WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ")
+ SELECT SUM(rata_premimum + gst) AS total_sum
+ FROM employee_polices
+ WHERE id IN (" . implode(',', $arrayData['employeeIds']) . ")
")->getRow();
$insurer_id = $this->clientPolicyModel->where('id', $arrayData['client_policy_id'])->first();
@@ -1857,10 +2693,13 @@ class EmpDataServiceController extends BaseController
'insurer_id' => $insurer_id['insurer_id'],
'description' => $description,
'transaction_type' => 'Credit',
- 'updated_by' => get_session_userid(),
+ 'updated_by' => $arrayData['user_id'],
'is_active' => 1,
];
- $response = DepositHelper::saveDeposit($data, get_session_userid());
+ $response = DepositHelper::saveDeposit($data, $arrayData['user_id']);
+ $msg = "Deletion Cash Deposite Updated Successfully -- " . $description;
+ return [$msg, $response];
+
return true;
// print_r($response);
// $query = $this->employeePolicyModel->getLastQuery();
@@ -2210,15 +3049,26 @@ 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;
+
+ // Filter out empty or null rows
+ $filtered_data = array_filter($excel_data, function($row) {
+ // Check if all cells in the row are empty or null
+ foreach ($row as $cell) {
+ if (!is_null($cell) && $cell !== '') {
+ return true;
+ }
+ }
+ return false;
+ });
+
+ return $filtered_data;
}
+
public function removeOldExportInfoFromBatchFile($params){
@@ -2242,7 +3092,6 @@ class EmpDataServiceController extends BaseController
$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 3e73f9a8..feba609b 100644
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -358,7 +358,7 @@ class EmployeeController extends AdminController
public function importExport()
{
- $this->myLogger->logme('error', 'importExport function called');
+ $this->myLogger->logme('error', 'Import Export -- Function called');
$empDataServiceController = new EmpDataServiceController();
$client_id = $this->request->getPost('client_id');
@@ -370,10 +370,10 @@ class EmployeeController extends AdminController
$client_data = $this->clientModel->where('id', $client_id)->first();
$policy_name_and_branch_name = $this->clientPolicyModel->select('policies.name, client_branch.branch_code')
- ->join('client_branch', 'client_branch.id = client_policy.client_branch_id')
- ->join('policies', 'policies.id = client_policy.policy_id')
- ->where('client_policy.id', $client_policy_id)
- ->first();
+ ->join('client_branch', 'client_branch.id = client_policy.client_branch_id')
+ ->join('policies', 'policies.id = client_policy.policy_id')
+ ->where('client_policy.id', $client_policy_id)
+ ->first();
$file_name = generate_filename($client_data['short_name'], $event_type, $actions, $insurer_or_tpa, $policy_name_and_branch_name['name'], $policy_name_and_branch_name['branch_code']);
$batch_data = [
@@ -386,20 +386,19 @@ class EmployeeController extends AdminController
'file_name' => $file_name,
];
- // $event_type = 'si_enhancement';
if ($actions == 'export') {
if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') {
$return = $empDataServiceController->generateExcelForAdditionandInception($batch_data);
-
- if($return == 0){
+
+ if ($return == 0) {
session()->setFlashdata('error', "Insufficient deposit amount.");
return redirect()->to(base_url('employee/upload'));
- }
-
+ }
+
if (!$return) {
if ($insurer_or_tpa == 'tpa') {
@@ -409,7 +408,6 @@ class EmployeeController extends AdminController
session()->setFlashdata('error', "No data was found for this action. The UHID has already been updated.");
return redirect()->to(base_url('employee/upload'));
}
-
} else {
$this->myLogger->logme('error', 'Successfully exported Excel file in {data}.', ['data' => $event_type]);
}
@@ -425,6 +423,13 @@ class EmployeeController extends AdminController
} else if ($event_type == 'si_enhancement') {
$return = $empDataServiceController->generateExcelForSIEnhancement($batch_data);
+
+ if ($return == 0) {
+
+ session()->setFlashdata('error', "Insufficient deposit amount.");
+ return redirect()->to(base_url('employee/upload'));
+ }
+
if (!$return) {
session()->setFlashdata('error', 'No data found about this action');
return redirect()->to(base_url('employee/upload'));
@@ -444,29 +449,25 @@ class EmployeeController extends AdminController
} else if ($actions == 'import') {
$batch_data['file'] = $this->request->getFile('import_file_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;
if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') {
-
- $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]]);
-
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importInceptionFileValidation', 'payload' => ['file_id' => $file_id]]);
+
$return = 1;
// $return = $empDataServiceController->importInceptionFileValidation(['file_id' => $file_id]);
@@ -474,71 +475,64 @@ class EmployeeController extends AdminController
if ($return == 1) {
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.');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 0) {
- session()->setFlashdata('error', 'Please upload the correct file.');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 3) {
- session()->setFlashdata('error', 'The list of employees provided has already been updated with the TPA ID, or this is not the correct file');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 4) {
- session()->setFlashdata('error', 'The UHID column is either partially or entirely empty.');
- return redirect()->to(base_url('employee/upload'));
- } 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.');
+ } else {
+ session()->setFlashdata($return['status'], $return['message']);
return redirect()->to(base_url('employee/upload'));
}
} else if ($event_type == 'correction') {
- $return = $empDataServiceController->importExcelDataForCorrection($batch_data);
+ $file_id = $this->batchFileModel->insert($batch_data);
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importCorrectionValidation', 'payload' => ['file_id' => $file_id]]);
+
+ $return = 1;
+
+ // $return = $empDataServiceController->importCorrectionValidation(['file_id' => $file_id]);
+
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 Endorsement ID columns are empty.');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 0) {
- session()->setFlashdata('error', 'Please upload the correct file');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 3) {
- session()->setFlashdata('error', 'File already uploaded');
+ } else {
+ session()->setFlashdata('error', $return);
return redirect()->to(base_url('employee/upload'));
}
} else if ($event_type == 'si_enhancement') {
- $return = $empDataServiceController->importExcelDataForSIEnhancement($batch_data);
+
+ $file_id = $this->batchFileModel->insert($batch_data);
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importSIEnhancementValidation', 'payload' => ['file_id' => $file_id]]);
+
+ $return = 1;
+
+ // $return = $empDataServiceController->importSIEnhancementValidation(['file_id' => $file_id]);
+
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 Endorsement ID columns are empty.');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 0) {
- session()->setFlashdata('error', 'Please upload the correct file');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 3) {
- session()->setFlashdata('error', 'File already uploaded');
+ } else {
+ session()->setFlashdata('error', $return);
return redirect()->to(base_url('employee/upload'));
}
} else if ($event_type == 'deletion') {
- $return = $empDataServiceController->importExcelDataForDeletion($batch_data);
+ $file_id = $this->batchFileModel->insert($batch_data);
+
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'importDeletionValidation', 'payload' => ['file_id' => $file_id]]);
+
+ $return = 1;
+
+ // $return = $empDataServiceController->importDeletionValidation(['file_id' => $file_id]);
+
+
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 Endorsement ID columns are empty.');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 0) {
- session()->setFlashdata('error', 'Please upload the correct file');
- return redirect()->to(base_url('employee/upload'));
- } else if ($return == 3) {
- session()->setFlashdata('error', 'File already uploaded');
+ } else {
+ session()->setFlashdata('error', $return);
return redirect()->to(base_url('employee/upload'));
}
}
@@ -707,6 +701,9 @@ class EmployeeController extends AdminController
public function viewUploadedEmployeeList()
{
+
+ $empDataServiceController = new EmpDataServiceController();
+
$file_id = $this->request->getGet('file_id');
// $emp_data['employees'] = $this->employeePolicyModel->getViewEmpSuccessList($file_id);
// $html = view('view_file_upload_emp_list', $emp_data);
@@ -718,20 +715,21 @@ class EmployeeController extends AdminController
->join('clients c', 'files.client_id = c.id and files.client_id = cp.client_id', 'left')
->where('files.id', $file_id)->first();
+ // dd($file_name);
+
try {
$filePath = WRITEPATH . '/uploads/excel/' . $file_name['file_name'];
if (file_exists($filePath)) {
- $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath);
- $sheet = $spreadsheet->getActiveSheet();
-
- $highestRowAndColumn = $sheet->getHighestRowAndColumn();
- $excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
- // dd($excel_data);
+
+ $excel_data = $empDataServiceController->readExcelFileToArray($filePath);
$emp_data['thead'] = $excel_data[0];
unset($excel_data[0]);
$emp_data['tbody'] = $excel_data;
+ $emp_data['count'] = count($excel_data);
+
+ // dd($emp_data);
$html = view('view_file_upload_emp_list', $emp_data);
} else {
@@ -1210,6 +1208,7 @@ class EmployeeController extends AdminController
$client_id = $file['client_id'];
$client_policy_id = $file['client_policy_id'];
$insurer_or_tpa = $file['insurer_or_tpa'];
+ $event_type = $file['event_type'];
$error_data = json_decode($file['error_data']);
@@ -1225,8 +1224,10 @@ class EmployeeController extends AdminController
$excel_data = $empDataServiceController->readExcelFileToArray($file_name_with_path);
$excelErrorData['excel_header'] = $excel_data[0];
unset($excel_data[0]);
- array_pop($excel_data);
+ if($event_type == 'inception' || $event_type == 'deletion'){
+ array_pop($excel_data);
+ }
$finalArray = [];
foreach ($error_data as $key => $values) {
@@ -1242,15 +1243,22 @@ class EmployeeController extends AdminController
}else{
- if ($insurer_or_tpa == 'tpa') {
+ if($event_type == 'inception'){
- $error = 'Expected value : TPA ID';
+ if ($insurer_or_tpa == 'tpa') {
- } else if ($insurer_or_tpa == 'insurer') {
-
- $error = 'Expected value : UHID';
+ $error = 'Expected value : TPA ID';
+
+ } else if ($insurer_or_tpa == 'insurer') {
+
+ $error = 'Expected value : UHID';
+ }
+
+ }else{
+ $error = 'Expected value : ENDORSEMENT ID';
}
+
}
$data = ['value' => $excel_data[$row][$column], 'error' => $error,];
$excel_data[$row][$column] = $data;
diff --git a/app/Controllers/JobWorker.php b/app/Controllers/JobWorker.php
index 793ddb76..38fd648a 100644
--- a/app/Controllers/JobWorker.php
+++ b/app/Controllers/JobWorker.php
@@ -16,10 +16,22 @@ class JobWorker extends AdminController
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'],
'cashDepositCalculationForInception' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
'sendMailForDownloadingECard' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+
+ 'importCorrectionValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importCorrectionUpdateEndorsementID' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+
+ 'cashDepositCalculationForSIEnhancement' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importSIEnhancementValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importSIEnhancementUpdateEndorsementID' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+
+ 'cashDepositCalculationForDeletion' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importDeletionValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
+ 'importDeletionUpdateEndorsementID' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
];
public function __construct()
{
diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php
index 2e7bcf23..4f9652d9 100644
--- a/app/Models/EmployeePolicyModel.php
+++ b/app/Models/EmployeePolicyModel.php
@@ -143,7 +143,7 @@ class EmployeePolicyModel extends Model
employees.relationship AS emp_relationship,
employees.relationship_code AS emp_relationship_code,
TIMESTAMPDIFF(YEAR, employees.dob, CURDATE()) AS emp_age,
- 'Has Define' as emp_type,
+ employees.emp_type as emp_type,
employee_polices.id as primaryKey,
employee_polices.tpa_id,
@@ -175,8 +175,13 @@ class EmployeePolicyModel extends Model
) as batch_data ON employee_polices.id = batch_data.emp_policy_id
WHERE employee_polices.client_policy_id = '{$client_policy_id}'
AND (employee_polices.{$id} IS NULL OR employee_polices.{$id} = '')
+ AND employees.client_branch_id = '{$client_branch_id}'
AND employee_polices.is_active = 1
- AND employees.client_branch_id = '{$client_branch_id}'";
+ AND employee_polices.status = 'active'
+ AND employees.is_active = 1
+ AND employees.emp_status = 'active'
+
+ ";
// Get the result set
$query = $this->db->query($sql);
@@ -209,7 +214,7 @@ class EmployeePolicyModel extends Model
employees.dob AS emp_dob,
employees.gender AS emp_gender,
employees.client_id AS emp_client_id,
- 'Has Define' AS emp_type,
+ employees.emp_type as emp_type,
employee_polices.uhid,
employees.relationship_code,
batch_data.emp_policy_id,
@@ -235,12 +240,16 @@ class EmployeePolicyModel extends Model
AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
) AS batch_data ON emp_endorsement.pk = batch_data.emp_policy_id
- WHERE batch_data.bf IS NULL
- AND batch_data.bl IS NULL
- AND employees.client_id = '{$client_id}'
+ WHERE employees.client_id = '{$client_id}'
AND employee_polices.client_policy_id = '{$client_policy_id}'
AND employees.client_branch_id = '{$client_branch_id}'
AND emp_endorsement.actions = 'c'
+ AND employee_polices.is_active = 1
+ AND employee_polices.status = 'active'
+ AND employees.is_active = 1
+ AND employees.emp_status = 'active'
+ AND (employee_polices.tpa_id IS NOT NULL AND employee_polices.tpa_id != '')
+ AND (employee_polices.uhid IS NOT NULL AND employee_polices.uhid != '')
AND (emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = '')";
// Execute the raw query
@@ -265,13 +274,14 @@ class EmployeePolicyModel extends Model
$query = $this->db->query("
SELECT
a.id as endorsement_primarykey,
+ a.group_key,
employee_polices.id AS primaryKey,
employees.name AS emp_name,
employees.emp_code AS emp_code,
employees.dob AS emp_dob,
employees.gender AS emp_gender,
employees.relationship_code AS emp_relationship_code,
- 'Has Define' AS emp_type,
+ employees.emp_type as emp_type,
employee_polices.uhid AS risk_id,
employee_polices.pre_existing_alignments,
employee_polices.policy_end_date,
@@ -283,10 +293,15 @@ class EmployeePolicyModel extends Model
sidata.new_basic_cover_si,
sidata.new_si_premium,
sidata.date_of_coverage,
+
DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1 AS no_of_days,
+
sidata.new_si_premium - employee_polices.rata_premimum AS difference_premium,
+
ROUND((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365, 2) AS pro_rata_premimum,
+
ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS gst,
+
((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) + ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS total
FROM
@@ -346,14 +361,16 @@ class EmployeePolicyModel extends Model
AND batch_files.actions = 'export'
AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
) AS batch_data ON employee_polices.id = batch_data.emp_policy_id
- WHERE
- batch_data.bf IS NULL
- AND batch_data.bl IS NULL
- AND employee_polices.client_policy_id = '{$client_policy_id}'
- AND employees.client_branch_id = '{$client_policy_id}'
- AND employee_polices.is_active = '1'
+
+ WHERE employee_polices.client_policy_id = '{$client_policy_id}'
+ AND employees.client_branch_id = '{$client_branch_id}'
AND (a.endorsement_id IS NULL OR a.endorsement_id = '')
- AND a.field_name = 'si_enhancement_date'
+ AND a.actions = 'si'
+ AND employee_polices.is_active = 1
+ AND employee_polices.status = 'active'
+ AND employees.is_active = 1
+ AND employees.emp_status = 'active'
+ group by group_key
");
// Get the result set
@@ -374,13 +391,14 @@ class EmployeePolicyModel extends Model
$query = $this->db->query("
SELECT DISTINCT
a.id as endorsement_primarykey,
+ a.group_key,
employee_polices.id as primaryKey,
employees.name AS emp_name,
employees.emp_code AS emp_code,
employees.dob AS emp_dob,
employees.gender AS emp_gender,
employees.relationship AS emp_relationship,
- 'Has Define' as emp_type,
+ employees.emp_type as emp_type,
employee_polices.basic_cover_si,
employee_polices.uhid as risk_id,
@@ -404,7 +422,7 @@ class EmployeePolicyModel extends Model
FROM
emp_endorsement a
LEFT JOIN
- employees ON a.emp_code = employees.emp_code
+ employees ON a.emp_code = employees.emp_code and a.pk = employees.id
LEFT JOIN
employee_polices ON employees.id = employee_polices.employee_id
@@ -439,16 +457,20 @@ class EmployeePolicyModel extends Model
AND batch_files.actions = 'export'
AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
) AS batch_data ON employee_polices.id = batch_data.emp_policy_id
- WHERE
- batch_data.bf IS NULL
- AND batch_data.bl IS NULL
- AND employee_polices.client_policy_id = {$client_policy_id}
+
+ WHERE employee_polices.client_policy_id = {$client_policy_id}
AND employees.client_branch_id = {$client_branch_id}
+ AND (a.endorsement_id IS NULL OR a.endorsement_id = '')
+ AND a.actions = 'd'
AND employee_polices.is_active = 1
- AND (a.endorsement_id IS NULL OR a.endorsement_id = '') AND a.field_name = 'status'
+ AND employee_polices.status = 'active'
+ AND employees.is_active = 1
+ AND employees.emp_status = 'active'
+ group by group_key
");
$result = $query->getResult();
+
return $result;
}
@@ -547,34 +569,62 @@ class EmployeePolicyModel extends Model
public function fetchEmpEndorsementData($fetch_data)
{
+ // dd($fetch_data);
+
$client_policy_id = $fetch_data['client_policy_id'];
+ $client_branch_id = $fetch_data['client_branch_id'];
$emp_name = $fetch_data['emp_name'];
$emp_code = $fetch_data['emp_code'];
// Your raw SQL query
$sql = "
- SELECT
- ep.id,
- MAX(CASE WHEN ee.field_name = 'date_of_exit' THEN ee.new_value END) AS date_of_exit,
- MAX(CASE WHEN ee.field_name = 'reason_for_exit' THEN ee.new_value END) AS reason_for_exit,
- MAX(CASE WHEN ee.field_name = 'status' THEN ee.new_value END) AS status
- FROM
- emp_endorsement AS ee
- JOIN
- employee_polices AS ep ON ep.id = ee.pk
- WHERE
- ee.emp_code = '$emp_code'
- AND ep.client_policy_id = $client_policy_id
- AND ee.name = '$emp_name'
- AND ee.field_name IN ('date_of_exit', 'reason_for_exit', 'status')
- GROUP BY
- ee.emp_code, ee.name, ep.id";
+ SELECT
+ ee.id as emp_endorsement_primarykey,
+ ep.id as emp_policy_primarykey,
+ e.id as employees_primarykey,
+ ee.group_key,
+ MAX(
+ CASE
+ WHEN ee.field_name = 'date_of_exit' THEN ee.new_value
+ END
+ ) AS date_of_exit,
+ MAX(
+ CASE
+ WHEN ee.field_name = 'reason_for_exit' THEN ee.new_value
+ END
+ ) AS reason_for_exit,
+ MAX(
+ CASE
+ WHEN ee.field_name = 'status' THEN ee.new_value
+ END
+ ) AS status
+ FROM
+ emp_endorsement AS ee
+ JOIN employee_polices AS ep ON ep.id = ee.pk
+ JOIN employees AS e ON e.emp_code = ee.emp_code
+ WHERE
+ ee.emp_code = '$emp_code'
+ AND ep.client_policy_id = '$client_policy_id'
+ AND e.client_branch_id = '$client_branch_id'
+ AND ee.name = '$emp_name'
+ AND ee.field_name IN ('date_of_exit', 'reason_for_exit', 'status')
+ AND ep.is_active = 1
+ AND ep.status = 'active'
+ AND e.is_active = 1
+ AND e.emp_status = 'active'
+ GROUP BY
+ ee.group_key
+ ";
+
+ // dd($sql);
// Execute the raw SQL query
$query = $this->db->query($sql);
// Fetch and return results
- return $row = $query->getRowArray();
+ $row = $query->getRowArray();
+
+ return $row;
}
@@ -659,7 +709,7 @@ class EmployeePolicyModel extends Model
$query2->join('insurers', 'insurers.id = policies.insurer_id');
$query2->whereIn('e.actions', ['si', 'd']);
$query2->where('ep.client_policy_id', $policy_id);
- $query2->where('employees.client_id', $policy_id);
+ $query2->where('employees.client_id', $client_id);
$query1->where('employees.client_branch_id', $branch_id);
if($status != 0 && !empty($status)){
@@ -931,7 +981,132 @@ class EmployeePolicyModel extends Model
throw $e;
}
}
+
+
+ public function bulkUpdateForEndorsement($endorsement_details)
+ {
+
+ // Extract IDs, endorsement_ids, and statuses
+ $ids = array_column($endorsement_details, 'group_key');
+ $endorsement_ids = array_column($endorsement_details, 'endorsement_id');
+ $statuses = array_column($endorsement_details, 'status');
+
+ // Escape values for SQL
+ $escapedIds = array_map([$this->db, 'escape'], $ids);
+ $escapedEndorsementIds = array_map([$this->db, 'escape'], $endorsement_ids);
+ $escapedStatuses = array_map([$this->db, 'escape'], $statuses);
+
+ // Construct the CASE statements
+ $caseEndorsementId = array_map(function ($id, $endorsement_id) {
+ return "WHEN group_key = $id THEN $endorsement_id";
+ }, $escapedIds, $escapedEndorsementIds);
+
+ $caseStatus = array_map(function ($id, $status) {
+ return "WHEN status = $id THEN $status";
+ }, $escapedIds, $escapedStatuses);
+
+ // Convert cases to a string
+ $caseEndorsementIdString = implode(' ', $caseEndorsementId);
+ $caseStatusString = implode(' ', $caseStatus);
+
+ // Convert ids to a string
+ $idsString = implode(', ', $escapedIds);
+
+ // Construct the SQL query
+ $sql = "
+ UPDATE emp_endorsement
+ SET
+ endorsement_id = CASE {$caseEndorsementIdString} END,
+ status = CASE {$caseStatusString} END
+ WHERE group_key IN ({$idsString})
+ ";
+
+ // Begin a transaction
+ $this->db->transBegin();
+
+ try {
+ // Execute the query
+ $this->db->query($sql);
+
+ // Commit the transaction
+ if ($this->db->transStatus() === FALSE) {
+ // If something went wrong, rollback
+ $this->db->transRollback();
+ throw new \Exception('Bulk update failed.');
+ } else {
+ // Otherwise, commit
+ $this->db->transCommit();
+ }
+
+ return $this->db->getLastQuery();
+ } catch (\Exception $e) {
+ // Rollback the transaction on error
+ $this->db->transRollback();
+ throw $e;
+ }
+ }
+ public function bulkUpdateForCorrection($emp_details){
+
+ foreach ($emp_details as $employee) {
+ $id = $this->db->escape($employee['id']);
+ $ids[] = $id;
+
+ foreach ($employee as $field => $value) {
+ if ($field === 'id') continue;
+ $escapedValue = $this->db->escape($value);
+
+ if (!isset($caseStatements[$field])) {
+ $caseStatements[$field] = [];
+ }
+
+ $caseStatements[$field][] = "WHEN id = $id THEN $escapedValue";
+ }
+ }
+
+ // Construct the CASE strings
+ $caseStrings = [];
+ foreach ($caseStatements as $field => $cases) {
+ $caseStrings[] = "$field = CASE " . implode(' ', $cases) . " END";
+ }
+
+ // Convert ids to a string
+ $idsString = implode(', ', $ids);
+
+ // Construct the SQL query
+ $sql = "
+ UPDATE employees
+ SET " . implode(', ', $caseStrings) . "
+ WHERE id IN ($idsString)
+ ";
+
+ // Begin a transaction
+ $this->db->transBegin();
+
+ try {
+ // Execute the query
+ $this->db->query($sql);
+
+ // Commit the transaction
+ if ($this->db->transStatus() === FALSE) {
+ // If something went wrong, rollback
+ $this->db->transRollback();
+ throw new \Exception('Bulk update failed.');
+ } else {
+ // Otherwise, commit
+ $this->db->transCommit();
+ }
+
+ return $this->db->getLastQuery();
+
+ } catch (\Exception $e) {
+ // Rollback the transaction on error
+ $this->db->transRollback();
+ throw $e;
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php
index ab4e17f4..18d6ee36 100644
--- a/app/Views/client_policy.php
+++ b/app/Views/client_policy.php
@@ -14,7 +14,7 @@
Policy
TPA
Date
- Enrollment Status
+ Enrollment
Status
Status
Action
@@ -252,7 +252,7 @@
${item.insurer_short} - ${item.insurer_branch_name}
${item.policy_name} (${item.policy_type_name})
${tpaValue}
- ${(item.policy_start_date)} / ${(item.policy_end_date)}
+ ${(item.policy_start_date)} /
${(item.policy_end_date)}
${(enrollmentStatus)}
${checkDateStatus(item.policy_end_date, 1)}
@@ -474,7 +474,7 @@
${item.insurer_short} - ${item.insurer_branch_name}
${item.policy_name} (${item.policy_type_name})
${tpaValue}
- ${rearrangeDateFormat(item.policy_start_date)} - ${rearrangeDateFormat(item.policy_end_date)}
+ ${rearrangeDateFormat(item.policy_start_date)} /
${rearrangeDateFormat(item.policy_end_date)}
${(enrollmentStatus)}
${checkDateStatus(item.policy_end_date, 1)}
diff --git a/app/Views/employee_upload.php b/app/Views/employee_upload.php
index 052b1bab..82d763cb 100644
--- a/app/Views/employee_upload.php
+++ b/app/Views/employee_upload.php
@@ -20,8 +20,8 @@ option:disabled {
-