CHANGE_NOTIFICATION_CONFLICT_EMP_DATASERVICE_CONTROLLER : AADHAVAN
This commit is contained in:
commit
96167760c0
@ -227,6 +227,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
|
||||
$routes->get("full-excel-error-file/(:any)", "EmployeeController::downloadFullExcelErrorFile/$1");
|
||||
$routes->get("id-card", "EmployeeController::viewECard/$1");
|
||||
$routes->get("preview-card/(:any)", "EmployeeController::previewTemplate/$1");
|
||||
$routes->get("export-import-error-list/(:any)", "EmployeeController::errorListExportImport/$1");
|
||||
});
|
||||
|
||||
$routes->cli('cli/processjob', 'JobWorker::processJob');
|
||||
|
||||
@ -22,6 +22,11 @@ class DashboardController extends AdminController
|
||||
echo view('layout/footer');
|
||||
}
|
||||
|
||||
public function dashboardNotifications()
|
||||
{
|
||||
//pull notofications to dashboard especially for file upload cases
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -24,8 +24,10 @@ use App\Models\ClientDepositModel;
|
||||
use App\Models\NotificationModel;
|
||||
|
||||
use App\Controllers\Jobs;
|
||||
use App\Controllers\JobWorker;
|
||||
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
// use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Exception as SpreadsheetReaderException;
|
||||
@ -97,6 +99,19 @@ class EmpDataServiceController extends BaseController
|
||||
}
|
||||
|
||||
|
||||
public function insertBatchList($params){
|
||||
|
||||
foreach ($params['batch_list_data'] as $value) {
|
||||
|
||||
$batch_list_data['batch_code'] = $params['batch_code'];
|
||||
$batch_list_data['emp_policy_id'] = $value['primaryKey'];
|
||||
$batch_list_data['created_by'] = get_session_userid();
|
||||
$this->batchListModel->insert($batch_list_data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates an Excel file for Inception_Addititon_DependentAddititon, Correction, SI_Enhancement and Deletion events based on given export data.
|
||||
*
|
||||
@ -111,23 +126,31 @@ class EmpDataServiceController extends BaseController
|
||||
|
||||
public function generateExcelForAdditionandInception($export_data)
|
||||
{
|
||||
|
||||
$return = $this->removeOldExportInfoFromBatchFile($export_data);
|
||||
|
||||
// Fetch employee data for export from the database
|
||||
$objects = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($export_data);
|
||||
|
||||
|
||||
$insurer_id = $this->clientPolicyModel->where('id', $export_data['client_policy_id'])->first();
|
||||
|
||||
$cash_balance = $this->clientDepositModel->where('client_id',$export_data['client_id'] )->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first();
|
||||
|
||||
|
||||
$cash_balance = $this->clientDepositModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first();
|
||||
|
||||
|
||||
$totals = 0;
|
||||
foreach ($objects as $key => $value) {
|
||||
|
||||
|
||||
$totals += $value->total;
|
||||
}
|
||||
|
||||
if((int) $cash_balance['balance'] < (int) $totals){
|
||||
if (!empty($cash_balance)) {
|
||||
|
||||
return 0;
|
||||
if ((int) $cash_balance['balance'] < (int) $totals) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
// return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -135,6 +158,7 @@ class EmpDataServiceController extends BaseController
|
||||
$count = count($objects);
|
||||
$export_data['count'] = $count;
|
||||
$export_data['amount'] = $totals;
|
||||
$export_data['status'] = 'success';
|
||||
|
||||
|
||||
$this->myLogger->logme('error', 'Inception export data count : {data}', ['data' => $count]);
|
||||
@ -181,11 +205,27 @@ class EmpDataServiceController extends BaseController
|
||||
|
||||
// If Excel generation is successful
|
||||
if ($success) {
|
||||
|
||||
|
||||
// Batch files and list entry
|
||||
$return = $this->batchFilesAndBatchListEntry($export_data, $objects);
|
||||
// $return = $this->batchFilesAndBatchListEntry($export_data, $objects);
|
||||
|
||||
$random_number_count = 4;
|
||||
$export_data['batch_code'] = generate_random_string($random_number_count);
|
||||
$export_data['created_by'] = get_session_userid();
|
||||
|
||||
$insert = $this->batchFileModel->insert($export_data);
|
||||
$batch_file_batch_code = $this->batchFileModel->where('id', $insert)->first();
|
||||
$batch_code = $batch_file_batch_code['batch_code'];
|
||||
|
||||
// $this->insertBatchList(['batch_code' => $batch_code, 'batch_list_data' => $objects ]);
|
||||
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'insertBatchList','payload' => ['batch_code' => $batch_code, 'batch_list_data' => $objects ]]);
|
||||
|
||||
|
||||
// If batch operation is successful
|
||||
if ($return) {
|
||||
if (true) {
|
||||
// Set headers for Excel file download
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header('Content-Disposition: attachment;filename="' . $export_data['file_name'] . '"');
|
||||
@ -199,7 +239,9 @@ class EmpDataServiceController extends BaseController
|
||||
fclose($tempFile);
|
||||
|
||||
return true; // Excel file successfully generated and exported
|
||||
|
||||
} else {
|
||||
|
||||
return false; // Batch operation failed
|
||||
}
|
||||
}
|
||||
@ -293,7 +335,7 @@ class EmpDataServiceController extends BaseController
|
||||
$ids = [];
|
||||
$objects = $this->employeePolicyModel->getSIEnhancementEmployeesDataForExportExcel($export_data);
|
||||
|
||||
|
||||
|
||||
$totals = 0;
|
||||
foreach ($objects as $obj) {
|
||||
$ids[] = $obj->endorsement_primarykey;
|
||||
@ -399,7 +441,7 @@ class EmpDataServiceController extends BaseController
|
||||
$count = count($objects);
|
||||
$export_data['count'] = $count;
|
||||
$export_data['amount'] = $rounded_totals;
|
||||
|
||||
|
||||
|
||||
$this->myLogger->logme('error', 'Deletion export data count : {data}', ['data' => $count]);
|
||||
|
||||
@ -494,187 +536,467 @@ class EmpDataServiceController extends BaseController
|
||||
public function importExcelDataForInception($import_data)
|
||||
{
|
||||
|
||||
|
||||
$client_id = $import_data['client_id'];
|
||||
$client_policy_id = $import_data['client_policy_id'];
|
||||
$file = $import_data['file'];
|
||||
|
||||
$get_client_policy_type = $this->clientPolicyModel->where('id', $client_policy_id)->first();
|
||||
|
||||
$data = $this->readExcelToArray($file);
|
||||
|
||||
if (!$data) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unset($data[0]);
|
||||
array_pop($data);
|
||||
$count = count($data);
|
||||
|
||||
$missing_id = [];
|
||||
$empty_emp_tpa_uh_ids = [];
|
||||
$totals = 0;
|
||||
foreach ($data as $key => $value) {
|
||||
|
||||
try {
|
||||
|
||||
|
||||
if ($import_data['insurer_or_tpa'] == 'tpa') {
|
||||
|
||||
if ($value[15] === null) {
|
||||
$missing_id[] = $key + 1;
|
||||
}
|
||||
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
|
||||
|
||||
if ($value[16] === null) {
|
||||
$missing_id[] = $key + 1;
|
||||
}
|
||||
}
|
||||
|
||||
$emp_code = $value[2];
|
||||
$name = $value[1];
|
||||
$totals += $value[20];
|
||||
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
// Execute the query
|
||||
$query = $db->table('employee_polices');
|
||||
$query->select('employee_polices.id');
|
||||
$query->join('employees', 'employees.id = employee_polices.employee_id');
|
||||
$query->where('employee_polices.client_policy_id', $client_policy_id);
|
||||
$query->where('employees.client_id', $client_id);
|
||||
$query->where('employees.name', $name);
|
||||
$query->where('employees.emp_code', $emp_code);
|
||||
if ($import_data['insurer_or_tpa'] == 'tpa') {
|
||||
|
||||
$query->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")');
|
||||
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
|
||||
|
||||
$query->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")');
|
||||
}
|
||||
$query->where('employee_polices.is_active', 1);
|
||||
$query->limit(1);
|
||||
|
||||
// Get the result
|
||||
$result = $query->get()->getRowArray();
|
||||
if (isset($result['id']) && $result['id'] !== null) {
|
||||
$empty_emp_tpa_uh_ids[] = $result['id'];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$missing_id_count = count($missing_id);
|
||||
$empty_id_count = count($empty_emp_tpa_uh_ids);
|
||||
|
||||
|
||||
if ($import_data['insurer_or_tpa'] == 'tpa') {
|
||||
|
||||
if ($empty_id_count == 0) {
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
if ($missing_id_count != 0) {
|
||||
|
||||
return 2;
|
||||
}
|
||||
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
|
||||
|
||||
if ($empty_id_count == 0) {
|
||||
|
||||
return 5;
|
||||
}
|
||||
|
||||
if ($missing_id_count != 0) {
|
||||
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
// if ($missing_id_count != $count) {
|
||||
|
||||
// return 2;
|
||||
// }
|
||||
|
||||
|
||||
// if ($empty_emp_tpa_uh_ids != $count) {
|
||||
|
||||
// return 3;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// dd($empty_emp_tpa_uh_ids);
|
||||
|
||||
$is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
|
||||
$filename = $file->getName();
|
||||
$this->myLogger->logme('error', 'Inception Import file name : {data}', ['data' => $filename]);
|
||||
|
||||
$import_data['count'] = $count;
|
||||
|
||||
$random_number_count = 4;
|
||||
$import_data['batch_code'] = generate_random_string($random_number_count);
|
||||
$import_data['created_by'] = get_session_userid();
|
||||
$import_data['status'] = 'pending';
|
||||
$import_data['file_name'] = $filename;
|
||||
$import_data['amount'] = $totals;
|
||||
|
||||
$insert = $this->batchFileModel->insert($import_data);
|
||||
|
||||
$file_id['file_id'] = $insert;
|
||||
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'importInceptionFileValidation','payload' => ['file_id' => $insert]]);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
$this->insertBatchFileAndBatchListForImportExcel($import_data, $empty_emp_tpa_uh_ids);
|
||||
public function importInceptionFileValidation($params)
|
||||
{
|
||||
|
||||
// dd($import_data, $empty_emp_tpa_uh_ids);
|
||||
$file_id = $params['file_id'];
|
||||
$file = $this->batchFileModel->where('id', $file_id)->first();
|
||||
$client_id = $file['client_id'];
|
||||
$client_policy_id = $file['client_policy_id'];
|
||||
$batch_code = $file['batch_code'];
|
||||
|
||||
|
||||
$tpa_id = [];
|
||||
$uhid = [];
|
||||
|
||||
foreach ($data as $key => $value) {
|
||||
$tpa_id[] = $value[15];
|
||||
$uhid[] = $value[16];
|
||||
$insurer_or_tpa = $file['insurer_or_tpa'];
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
$id = 'tpa_id';
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
$id = 'uhid';
|
||||
}
|
||||
|
||||
foreach ($empty_emp_tpa_uh_ids as $key => $id) {
|
||||
$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);
|
||||
|
||||
$dataToUpdateTPAID = ['tpa_id' => $tpa_id[$key]];
|
||||
$dataToUpdateUHID = ['uhid' => $uhid[$key]];
|
||||
|
||||
$this->employeePolicyModel->where('id', $id)
|
||||
->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")')
|
||||
->set($dataToUpdateTPAID)->update();
|
||||
$emp_count = count($excel_data);
|
||||
|
||||
$this->employeePolicyModel->where('id', $id)
|
||||
->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")')
|
||||
->set($dataToUpdateUHID)->update();
|
||||
}
|
||||
|
||||
$employee_data = $this->employeePolicyModel
|
||||
->select('
|
||||
|
||||
employee_polices.id as emp_policy_id,
|
||||
employees.name AS emp_name,
|
||||
employees.emp_code AS emp_code,
|
||||
"Has Define" as emp_type,
|
||||
employees.relationship_code AS emp_relationship_code,
|
||||
employees.dob AS emp_dob,
|
||||
employees.gender AS emp_gender,
|
||||
employee_polices.pre_existing_alignments,
|
||||
employee_polices.basic_cover_si,
|
||||
employee_polices.date_coverage,
|
||||
TIMESTAMPDIFF(YEAR, employees.dob, CURDATE()) AS emp_age,
|
||||
employees.relationship AS emp_relationship,
|
||||
employees.change_event AS change_event,
|
||||
employee_polices.policy_end_date,
|
||||
employee_polices.days,
|
||||
employee_polices.tpa_id,
|
||||
employee_polices.uhid,
|
||||
employee_polices.premium,
|
||||
employee_polices.rata_premimum,
|
||||
employee_polices.gst,
|
||||
(employee_polices.rata_premimum + employee_polices.gst) AS total
|
||||
')
|
||||
|
||||
if($import_data['insurer_or_tpa'] == 'tpa'){
|
||||
->join('employees', 'employees.id = employee_polices.employee_id')
|
||||
->where('employee_polices.client_policy_id', $client_policy_id)
|
||||
->where('employees.client_id', $client_id)
|
||||
->where("employee_polices.{$id} IS NULL OR employee_polices.{$id} = ''")
|
||||
->findAll();
|
||||
|
||||
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
|
||||
$depositeData = [
|
||||
'employeeIds' => $empty_emp_tpa_uh_ids,
|
||||
'client_id' => $client_id,
|
||||
'client_policy_id' => $client_policy_id,
|
||||
'count' => $count,
|
||||
'event' => $import_data['event_type'],
|
||||
'policy_name' => $policy_name['policy_name'],
|
||||
];
|
||||
// echo '<pre>';
|
||||
// print_r($employee_data); die;
|
||||
|
||||
|
||||
if ($employee_data == null || empty($employee_data)) {
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
$data = [
|
||||
'status' => 'failed-1',
|
||||
];
|
||||
|
||||
$this->cashDepositCalculationForInception($depositeData);
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
|
||||
return 3;
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
$data = [
|
||||
'status' => 'failed-2',
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
$excel_data_count = count($excel_data);
|
||||
$emp_data_count = count($employee_data);
|
||||
|
||||
// dd($excel_data_count, $emp_data_count);
|
||||
$difference = $emp_data_count - $excel_data_count;
|
||||
|
||||
$status = 'in-progress';
|
||||
if ($excel_data_count < $emp_data_count) {
|
||||
|
||||
$status = 'in-progress-partially';
|
||||
$partially_updated_data = 'Expected : ' . $emp_data_count . ', ' . 'Updated : ' . $excel_data_count . ', ' . 'difference : ' . $difference;
|
||||
}
|
||||
|
||||
|
||||
if($get_client_policy_type['policy_type_id'] != 1){
|
||||
if ($emp_data_count < $excel_data_count) {
|
||||
|
||||
$this->sendMailForDownloadingECard($empty_emp_tpa_uh_ids);
|
||||
$data = [
|
||||
'status' => 'failed-3',
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
return 6;
|
||||
}
|
||||
|
||||
|
||||
$errors = []; // Initialize an array to store errors
|
||||
$missing_id = [];
|
||||
$batch_list_id = [];
|
||||
|
||||
foreach ($employee_data as $key => $emp_value) {
|
||||
|
||||
$key = $key + 1;
|
||||
|
||||
if(!isset($excel_data[$key])){
|
||||
break;
|
||||
}
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
if ($excel_data[$key][15] === null) {
|
||||
$missing_id[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 15,
|
||||
];
|
||||
}
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
if ($excel_data[$key][16] === null) {
|
||||
$missing_id[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 16,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($emp_value['emp_name'] != $excel_data[$key][1]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 1,
|
||||
'db_data' => $emp_value['emp_name'],
|
||||
'excel_data' => $excel_data[$key][1]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['emp_code'] != $excel_data[$key][2]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 2,
|
||||
'db_data' => $emp_value['emp_code'],
|
||||
'excel_data' => $excel_data[$key][2]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['emp_dob'] != $excel_data[$key][5]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 5,
|
||||
'db_data' => $emp_value['emp_dob'],
|
||||
'excel_data' => $excel_data[$key][5]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['emp_gender'] != $excel_data[$key][6]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 6,
|
||||
'db_data' => $emp_value['emp_gender'],
|
||||
'excel_data' => $excel_data[$key][6]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['pre_existing_alignments'] != $excel_data[$key][7]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 7,
|
||||
'db_data' => $emp_value['pre_existing_alignments'],
|
||||
'excel_data' => $excel_data[$key][7]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['basic_cover_si'] != $excel_data[$key][8]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 8,
|
||||
'db_data' => $emp_value['basic_cover_si'],
|
||||
'excel_data' => $excel_data[$key][8]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['emp_relationship'] != $excel_data[$key][11]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 11,
|
||||
'db_data' => $emp_value['emp_relationship'],
|
||||
'excel_data' => $excel_data[$key][11]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['policy_end_date'] != $excel_data[$key][13]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 13,
|
||||
'db_data' => $emp_value['policy_end_date'],
|
||||
'excel_data' => $excel_data[$key][13]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['days'] != $excel_data[$key][14]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 14,
|
||||
'db_data' => $emp_value['days'],
|
||||
'excel_data' => $excel_data[$key][14]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['premium'] != $excel_data[$key][17]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 17,
|
||||
'db_data' => $emp_value['premium'],
|
||||
'excel_data' => $excel_data[$key][17]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['rata_premimum'] != $excel_data[$key][18]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 18,
|
||||
'db_data' => $emp_value['rata_premimum'],
|
||||
'excel_data' => $excel_data[$key][18]
|
||||
];
|
||||
}
|
||||
|
||||
if ($emp_value['gst'] != $excel_data[$key][19]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 19,
|
||||
'db_data' => $emp_value['gst'],
|
||||
'excel_data' => $excel_data[$key][19]
|
||||
];
|
||||
}
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
if ($emp_value['uhid'] != $excel_data[$key][16]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 16,
|
||||
'db_data' => $emp_value['uhid'],
|
||||
'excel_data' => $excel_data[$key][16]
|
||||
];
|
||||
}
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
if ($emp_value['tpa_id'] != $excel_data[$key][15]) {
|
||||
$errors[$key][] = [
|
||||
'row' => $key,
|
||||
'column' => 15,
|
||||
'db_data' => $emp_value['tpa_id'],
|
||||
'excel_data' => $excel_data[$key][15]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$batch_list_id[] = $emp_value['emp_policy_id'];
|
||||
}
|
||||
|
||||
|
||||
$error_count = count($errors);
|
||||
$json_errors = json_encode($errors);
|
||||
|
||||
// echo $json_errors; die;
|
||||
|
||||
$missing_id_count = count($missing_id);
|
||||
$json_missing_id = json_encode($missing_id);
|
||||
|
||||
// dd($error_count, $missing_id_count, $json_errors, $json_missing_id);
|
||||
|
||||
// dd($batch_list_id);
|
||||
|
||||
if ($missing_id_count > 0) {
|
||||
|
||||
$data = [
|
||||
'error_data' => $json_missing_id,
|
||||
'status' => 'failed',
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
return 2;
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($error_count > 0) {
|
||||
|
||||
$data = [
|
||||
'error_data' => $json_errors,
|
||||
'status' => 'failed',
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
return 0;
|
||||
|
||||
} else {
|
||||
|
||||
$data = [
|
||||
'count' => $emp_count,
|
||||
'status' => $status,
|
||||
'error_data' => $partially_updated_data ?? null,
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
|
||||
|
||||
foreach ($batch_list_id as $key => $value) {
|
||||
|
||||
$data = [
|
||||
'emp_policy_id' => $value,
|
||||
'batch_code' => $batch_code,
|
||||
];
|
||||
|
||||
$insert = $this->batchListModel->insert($data);
|
||||
}
|
||||
|
||||
|
||||
$parameters['file_id'] = $file_id;
|
||||
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'importInceptionUpdateTPAandUHID','payload' => ['file_id' => $file_id]]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function importInceptionUpdateTPAandUHID($params)
|
||||
{
|
||||
|
||||
$file_id = $params['file_id'];
|
||||
$file = $this->batchFileModel->find($file_id);
|
||||
if (!$file) {
|
||||
$data = [
|
||||
'status' => 'failed-4',
|
||||
];
|
||||
|
||||
$this->batchFileModel->where('id', $file_id)->set($data)->update();
|
||||
return 0; // Return error code if file not found
|
||||
}
|
||||
|
||||
$client_id = $file['client_id'];
|
||||
$client_policy_id = $file['client_policy_id'];
|
||||
$insurer_or_tpa = $file['insurer_or_tpa'];
|
||||
$status = $file['status'];
|
||||
$batch_code = $file['batch_code'];
|
||||
|
||||
$status_val = 'success';
|
||||
if($status == 'in-progress-partially'){
|
||||
|
||||
$status_val = 'partially success';
|
||||
}
|
||||
|
||||
|
||||
$file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
|
||||
$excel_data = $this->readExcelFileToArray($file_name_with_path);
|
||||
unset($excel_data[0]); // Remove header row
|
||||
array_pop($excel_data); // Remove footer row
|
||||
|
||||
$totals = 0;
|
||||
$emp_count = count($excel_data);
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
foreach ($excel_data as $key => $value) {
|
||||
|
||||
$name = $value[1];
|
||||
$emp_code = $value[2];
|
||||
$tpa_id = $value[15];
|
||||
$uhid = $value[16];
|
||||
$amount = $value[20];
|
||||
|
||||
$totals += $amount;
|
||||
|
||||
$sql = "
|
||||
UPDATE employee_polices
|
||||
JOIN employees ON employees.id = employee_polices.employee_id
|
||||
SET tpa_id = ?
|
||||
WHERE employees.name = ?
|
||||
AND employees.emp_code = ?
|
||||
AND (employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = '')";
|
||||
|
||||
$params = [$tpa_id, $name, $emp_code];
|
||||
$db->query($sql, $params);
|
||||
|
||||
|
||||
|
||||
$sql = "
|
||||
UPDATE employee_polices
|
||||
JOIN employees ON employees.id = employee_polices.employee_id
|
||||
SET employee_polices.uhid = ?
|
||||
WHERE employees.name = ?
|
||||
AND employees.emp_code = ?
|
||||
AND (employee_polices.uhid IS NULL OR employee_polices.uhid = '')";
|
||||
|
||||
$params = [$uhid, $name, $emp_code];
|
||||
$db->query($sql, $params);
|
||||
}
|
||||
|
||||
// Update batch file status and amount
|
||||
$this->batchFileModel->update($file_id, [
|
||||
'count' => $emp_count,
|
||||
'status' => $status_val,
|
||||
'amount' => $totals,
|
||||
]);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function importExcelDataForCorrection($import_data)
|
||||
{
|
||||
|
||||
@ -1056,7 +1378,7 @@ class EmpDataServiceController extends BaseController
|
||||
|
||||
$missing_id = [];
|
||||
$empty_emp_tpa_uh_ids = [];
|
||||
$totals = 0 ;
|
||||
$totals = 0;
|
||||
foreach ($data as $key => $value) {
|
||||
|
||||
try {
|
||||
@ -1555,15 +1877,15 @@ class EmpDataServiceController extends BaseController
|
||||
{
|
||||
if ($file->isValid() && !$file->hasMoved()) {
|
||||
$file = $file;
|
||||
|
||||
|
||||
try {
|
||||
|
||||
$reader = IOFactory::createReaderForFile($file->getPathname());
|
||||
$spreadsheet = $reader->load($file->getPathname());
|
||||
|
||||
|
||||
// Get the active sheet
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
|
||||
// Iterate through rows to read data
|
||||
$data = [];
|
||||
foreach ($sheet->getRowIterator() as $row) {
|
||||
@ -1573,9 +1895,8 @@ class EmpDataServiceController extends BaseController
|
||||
}
|
||||
$data[] = $rowData;
|
||||
}
|
||||
|
||||
return $data;
|
||||
|
||||
return $data;
|
||||
} catch (SpreadsheetReaderException $e) {
|
||||
|
||||
error_log('PhpSpreadsheet reader exception: ' . $e->getMessage());
|
||||
@ -1585,7 +1906,7 @@ class EmpDataServiceController extends BaseController
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function insertBatchFileAndBatchListForImportExcel($data, $ids)
|
||||
@ -1617,7 +1938,7 @@ class EmpDataServiceController extends BaseController
|
||||
$count = 0;
|
||||
|
||||
foreach ($ids as $key => $id) {
|
||||
|
||||
|
||||
$get_emp_email_and_other_details = $this->employeePolicyModel
|
||||
->select('employee_polices.client_policy_id, employees.emp_code, employees.email_corporate,employees.client_id as client_id, employees.name, employee_polices.rand_string, employee_polices.tpa_id')
|
||||
->join('employees', 'employees.id = employee_polices.employee_id')
|
||||
@ -1665,4 +1986,48 @@ class EmpDataServiceController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function readExcelFileToArray($path)
|
||||
{
|
||||
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
|
||||
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
|
||||
|
||||
return $excel_data;
|
||||
}
|
||||
|
||||
|
||||
public function removeOldExportInfoFromBatchFile($params){
|
||||
|
||||
$client_id = $params['client_id'];
|
||||
$client_policy_id = $params['client_policy_id'];
|
||||
$insurer_or_tpa = $params['insurer_or_tpa'];
|
||||
$event_type = $params['event_type'];
|
||||
$actions = $params['actions'];
|
||||
|
||||
|
||||
$batch_data = $this->batchFileModel
|
||||
->where('client_id', $client_id)
|
||||
->where('client_policy_id', $client_policy_id)
|
||||
->where('insurer_or_tpa', $insurer_or_tpa)
|
||||
->where('event_type', $event_type)
|
||||
->where('actions', $actions)
|
||||
->first();
|
||||
|
||||
if(!empty($batch_data)){
|
||||
|
||||
$id = $batch_data['id'];
|
||||
$batch_code = $batch_data['batch_code'];
|
||||
|
||||
$this->batchFileModel->where('id', $id)->delete();
|
||||
$this->batchListModel->where('batch_code', $batch_code)->delete();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -348,7 +348,7 @@ class EmployeeController extends AdminController
|
||||
|
||||
if($return == 0){
|
||||
|
||||
session()->setFlashdata('error', "The insurer has an insufficient deposit amount.");
|
||||
session()->setFlashdata('error', "Insufficient deposit amount.");
|
||||
return redirect()->to(base_url('employee/upload'));
|
||||
}
|
||||
|
||||
@ -396,12 +396,35 @@ class EmployeeController extends AdminController
|
||||
} else if ($actions == 'import') {
|
||||
|
||||
$batch_data['file'] = $this->request->getFile('import_file_data');
|
||||
|
||||
|
||||
if ($event_type == 'inception' || $event_type == 'addition' || $event_type == 'dependent_addition') {
|
||||
|
||||
$return = $empDataServiceController->importExcelDataForInception($batch_data);
|
||||
|
||||
$file = $this->request->getFile('import_file_data');
|
||||
|
||||
$is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
|
||||
$filename = $file->getName();
|
||||
$this->myLogger->logme('error', 'Inception Import file name : {data}', ['data' => $filename]);
|
||||
|
||||
|
||||
$random_number_count = 4;
|
||||
$batch_data['batch_code'] = generate_random_string($random_number_count);
|
||||
$batch_data['created_by'] = get_session_userid();
|
||||
$batch_data['status'] = 'pending';
|
||||
$batch_data['file_name'] = $filename;
|
||||
|
||||
$file_id = $this->batchFileModel->insert($batch_data);
|
||||
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'importInceptionFileValidation','payload' => ['file_id' => $file_id]]);
|
||||
|
||||
$return = 1;
|
||||
|
||||
// $return = $empDataServiceController->importExcelDataForInception($batch_data);
|
||||
|
||||
if ($return == 1) {
|
||||
session()->setFlashdata('success', 'Data updated successfully');
|
||||
session()->setFlashdata('success', 'Data updated successfully. File is being validated.');
|
||||
return redirect()->to(base_url('employee/upload'));
|
||||
} else if ($return == 2) {
|
||||
session()->setFlashdata('error', 'The TPA ID column is either partially or entirely empty.');
|
||||
@ -418,6 +441,9 @@ class EmployeeController extends AdminController
|
||||
} else if ($return == 5) {
|
||||
session()->setFlashdata('error', 'The list of employees provided has already been updated with the UHID, or this is not the correct file');
|
||||
return redirect()->to(base_url('employee/upload'));
|
||||
} else if ($return == 6) {
|
||||
session()->setFlashdata('error', 'The Excel record count exceeds the DB record count.');
|
||||
return redirect()->to(base_url('employee/upload'));
|
||||
}
|
||||
} else if ($event_type == 'correction') {
|
||||
|
||||
@ -714,7 +740,8 @@ class EmployeeController extends AdminController
|
||||
if (!file_exists($filePath)) {
|
||||
$error_message = "File not found";
|
||||
$this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
|
||||
return $error_message;
|
||||
$data['message'] = 'Physical File Not Found';
|
||||
return view('errors/404', $data);
|
||||
}
|
||||
|
||||
// Load the Excel file
|
||||
@ -1037,4 +1064,81 @@ class EmployeeController extends AdminController
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function errorListExportImport($file_id)
|
||||
{
|
||||
|
||||
$empDataServiceController = new EmpDataServiceController();
|
||||
|
||||
$file = $this->batchFileModel->where('id', $file_id)->first();
|
||||
$client_id = $file['client_id'];
|
||||
$client_policy_id = $file['client_policy_id'];
|
||||
$insurer_or_tpa = $file['insurer_or_tpa'];
|
||||
|
||||
$error_data = json_decode($file['error_data']);
|
||||
|
||||
$file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name'];
|
||||
|
||||
if (!file_exists($file_name_with_path)) {
|
||||
$error_message = "File not found";
|
||||
$this->myLogger->logme('error', ($error_message . ' for file id ' . $file_id));
|
||||
$data['message'] = 'Physical File Not Found';
|
||||
return view('errors/404', $data);
|
||||
}
|
||||
|
||||
$excel_data = $empDataServiceController->readExcelFileToArray($file_name_with_path);
|
||||
$excelErrorData['excel_header'] = $excel_data[0];
|
||||
unset($excel_data[0]);
|
||||
array_pop($excel_data);
|
||||
|
||||
|
||||
$finalArray = [];
|
||||
foreach ($error_data as $key => $values) {
|
||||
|
||||
foreach ($values as $key2 => $value) {
|
||||
|
||||
$row = $value->row;
|
||||
$column = $value->column;
|
||||
|
||||
if(property_exists($value, 'db_data')){
|
||||
|
||||
$error = 'Expected value: ' . ($value->db_data == null || $value->db_data == "" ? 'NULL' : $value->db_data);
|
||||
|
||||
}else{
|
||||
|
||||
if ($insurer_or_tpa == 'tpa') {
|
||||
|
||||
$error = 'Expected value : TPA ID';
|
||||
|
||||
} else if ($insurer_or_tpa == 'insurer') {
|
||||
|
||||
$error = 'Expected value : UHID';
|
||||
}
|
||||
|
||||
}
|
||||
$data = ['value' => $excel_data[$row][$column], 'error' => $error,];
|
||||
$excel_data[$row][$column] = $data;
|
||||
}
|
||||
|
||||
array_push($finalArray, $excel_data[$key]);
|
||||
}
|
||||
|
||||
|
||||
foreach ($finalArray as $fkey => $value) {
|
||||
foreach ($value as $vkey => $arrayData) {
|
||||
if (!is_array($arrayData)) {
|
||||
$data = ['value' => $arrayData];
|
||||
$finalArray[$fkey][$vkey] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$excelErrorData['excel_data'] = $finalArray;
|
||||
$excelErrorData['file_id'] = $file_id;
|
||||
|
||||
// dd($finalArray);
|
||||
|
||||
echo view('export_import_error_list', $excelErrorData);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ class EmployeeServiceController extends AdminController
|
||||
protected $policiesModel;
|
||||
protected $empEndorsementModel;
|
||||
protected $general_relationships = ['self' => ['name' => 'Self', 'gender' => 'M','age_min' => 18,'age_max' => null], 'spouse' => ['name' => 'Spouse', 'gender' => 'F','age_min' => 18,'age_max' => null], 'son' => ['name' => 'Son', 'gender' => 'M','age_min' => null,'age_max' => 25], 'daughter' => ['name' => 'Daughter', 'gender' => 'F','age_min' => null,'age_max' => 25], 'father' => ['name' => 'Father', 'gender' => 'M','age_min' => 18,'age_max' => null], 'mother' => ['name' => 'Mother', 'gender' => 'F','age_min' => 18,'age_max' => null], 'father-in-law' => ['name' => 'Father in Law', 'gender' => 'M','age_min' => 18,'age_max' => null], 'mother-in-law' => ['name' => 'Mother in Law', 'gender' => 'F','age_min' => 18,'age_max' => null]];
|
||||
protected $inception_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'dob'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'DOB','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_dob_diff','params'=>['row','relationship','default_age_ratio']],'gender'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Gender','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['M','F']],'relationship'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'RELATIONSHIP','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_relationship','params'=>['row','relationship','policy_terms']],'basic_cover_si'=>['col_idx'=>6,'col_cell_name'=>'G','col_name'=>'BASIC COVER SI','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_si','params' => ['row','policy_terms','slab_details']],'doc'=>['col_idx'=>7,'col_cell_name'=>'H','col_name'=>'Date of Coverage','is_mandatory'=>['A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'params'=>['row']],'doj'=>['col_idx'=>8,'col_cell_name'=>'I','col_name'=>'DOJ','is_mandatory'=>false,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_doj','params'=>['row']],'basic_pay'=>['col_idx'=>9,'col_cell_name'=>'J','col_name'=>'Basic Pay','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_basic_pay','params'=>['row','policy_terms','slab_details']],'band_grade'=>['col_idx'=>10,'col_cell_name'=>'K','col_name'=>'Band/Grade','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_employee_band','params'=>['row','policy_terms','slab_details']],'designation'=>['col_idx'=>11,'col_cell_name'=>'L','col_name'=>'Designation','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'phone'=>['col_idx'=>12,'col_cell_name'=>'M','col_name'=>'Phone','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'email'=>['col_idx'=>13,'col_cell_name'=>'N','col_name'=>'Email','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'pre_existing_ailments'=>['col_idx'=>14,'col_cell_name'=>'O','col_name'=>'PRE EXISTING AILMENTS','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['0','1']],'change_event'=>['col_idx'=>15,'col_cell_name'=>'P','col_name'=>'Change event','is_mandatory'=>['A','DA','D'],'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_exit'=>['col_idx'=>16,'col_cell_name'=>'Q','col_name'=>'Date of exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'reason_for_exit'=>['col_idx'=>17,'col_cell_name'=>'R','col_name'=>'Reason for exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
|
||||
protected $inception_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'dob'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'DOB','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_dob_diff','params'=>['row','relationship','default_age_ratio']],'gender'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Gender','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['M','F']],'relationship'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'RELATIONSHIP','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_relationship','params'=>['row','relationship','policy_terms']],'basic_cover_si'=>['col_idx'=>6,'col_cell_name'=>'G','col_name'=>'BASIC COVER SI','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_si','params' => ['row','policy_terms','slab_details']],'doc'=>['col_idx'=>7,'col_cell_name'=>'H','col_name'=>'Date of Coverage','is_mandatory'=>['A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'params'=>['row']],'doj'=>['col_idx'=>8,'col_cell_name'=>'I','col_name'=>'DOJ','is_mandatory'=>false,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_doj','params'=>['row']],'basic_pay'=>['col_idx'=>9,'col_cell_name'=>'J','col_name'=>'Basic Pay','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_basic_pay','params'=>['row','policy_terms','slab_details']],'band_grade'=>['col_idx'=>10,'col_cell_name'=>'K','col_name'=>'Band/Grade','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_employee_band','params'=>['row','policy_terms','slab_details']],'designation'=>['col_idx'=>11,'col_cell_name'=>'L','col_name'=>'Designation','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'phone'=>['col_idx'=>12,'col_cell_name'=>'M','col_name'=>'Phone','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_dup_mobileno','params' => ['row','existing_mobilenos']],'email'=>['col_idx'=>13,'col_cell_name'=>'N','col_name'=>'Email','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'pre_existing_ailments'=>['col_idx'=>14,'col_cell_name'=>'O','col_name'=>'PRE EXISTING AILMENTS','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['0','1']],'change_event'=>['col_idx'=>15,'col_cell_name'=>'P','col_name'=>'Change event','is_mandatory'=>['A','DA','D'],'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_exit'=>['col_idx'=>16,'col_cell_name'=>'Q','col_name'=>'Date of exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'reason_for_exit'=>['col_idx'=>17,'col_cell_name'=>'R','col_name'=>'Reason for exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
|
||||
|
||||
protected $deletion_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'change_event'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'Change event','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_exit'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Date of exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'reason_for_exit'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'Reason for exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
|
||||
|
||||
@ -154,6 +154,9 @@ class EmployeeServiceController extends AdminController
|
||||
//remove header
|
||||
unset($excel_data[0]);
|
||||
$relationship = $this->general_relationships;
|
||||
//get exisiting mobilr nos
|
||||
$existing_mobilenos = $this->employeePolicyModel->getExisitingMobileNos(client_policy_id: $file['policy_id']);
|
||||
// dd($existing_mobilenos);
|
||||
foreach ($excel_data as $row_key => $row)
|
||||
{
|
||||
|
||||
@ -273,7 +276,7 @@ class EmployeeServiceController extends AdminController
|
||||
{
|
||||
//proceed next data level validation in JOB queue
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'excelFileDataValidation','payload' => ['file_id' => $file_id]]);
|
||||
$r = Jobs::addJob(['job_name' => 'excelFileDataValidation','payload' => ['file_id' => $file_id]]);
|
||||
// $jobWorker = new JobWorker();
|
||||
// JobWorker::processJob($r);
|
||||
}
|
||||
@ -471,7 +474,7 @@ class EmployeeServiceController extends AdminController
|
||||
{
|
||||
//proceed next data level validation in JOB queue
|
||||
$job_details = new Jobs();
|
||||
$r = Jobs::addJob(['job_name' => 'employeesOnboardPreprocess','payload' => ['file_id' => $file_id]]);
|
||||
$r = Jobs::addJob(['job_name' => 'employeesOnboardPreprocess','payload' => ['file_id' => $file_id]]);
|
||||
// $jobWorker = new JobWorker();
|
||||
// JobWorker::processJob($r);
|
||||
}
|
||||
@ -607,7 +610,7 @@ class EmployeeServiceController extends AdminController
|
||||
|
||||
|
||||
// die();
|
||||
return ($employee_data_group_by_family);
|
||||
return (($employee_data_group_by_family));
|
||||
|
||||
}
|
||||
|
||||
@ -855,9 +858,10 @@ class EmployeeServiceController extends AdminController
|
||||
$temp = $value['temp'];
|
||||
unset($value['policy_details']);
|
||||
unset($value['temp']);
|
||||
|
||||
// Kint::dump($value);
|
||||
// Kint::dump($policy_data);
|
||||
//start implemet of si enhancement of grid type 10,11
|
||||
if(count($employee) && (($file['action'] == 'dependent_addition' && in_array($value['temp']['source'],[10,11]) && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 1 || $slab_details['slab_rates'][0]['premium_type'] == null))))
|
||||
if(count($employee) && (($file['action'] == 'dependent_addition' && in_array($value['temp']['source'],[10,11]) && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null))))
|
||||
{
|
||||
$res = $this->employeesSIEnhanceProcessWhileOnbboard(employee:$employee[0],policy_data: $policy_data,file:$file);// where employee holds existing emp data and policy_data holds new si enhancement
|
||||
if(!$res)
|
||||
@ -928,8 +932,8 @@ class EmployeeServiceController extends AdminController
|
||||
$employee = $this->employeeModel->where('emp_code', $employee['emp_code'])->where('name',$employee['name'])->where('client_id',$employee['client_id'])->where('is_active',1)->first();
|
||||
|
||||
$employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first();
|
||||
|
||||
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($employee_policy['policy_id'],$employee['client_id']);
|
||||
// dd($employee_policy);
|
||||
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($employee_policy['client_policy_id'],$employee['client_id']);
|
||||
|
||||
//check si has changed in normal case OR check premium only changed, still treat as SI enhancement in grid type 10
|
||||
if($employee_policy['basic_cover_si'] != $policy_data['basic_cover_si'] || ($slab_details['grid_master']['ui_type'] == 10 && $policy_data['premimum'] != null && $policy_data['premimum'] != "" && $employee_policy['premimum'] != $policy_data['premimum']))
|
||||
|
||||
@ -14,7 +14,11 @@ class JobWorker extends AdminController
|
||||
* Constructs the class
|
||||
*/
|
||||
|
||||
private static $event_class_mapping = ['add' => ['type' => 'HC','handler' => 'App\\Helpers\\HttpRequestHelper'], 'sub' => ['type' => 'CC','handler' => 'App\\Controllers\\Jobs\SubJob'],'fancy_date_time_format' => [ 'type' => 'HF','handler' => 'fancy_date_time_format'],'addNumber' => ['type' => 'HC','handler' => 'App\\Model\\HttpRequestHelper'],'excelFileFormatValidation' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'excelFileDataValidation' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesOnboardPreprocess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeeDisembark' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesSIEnhanceProcess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'employeesCorrectionProcess' => ['type' => 'CC','handler' => 'App\\Controllers\\EmployeeServiceController'],'send_email' => ['type' => 'HC','handler' => 'App\\Helpers\\MailHelper'],'bulk_mail' => ['type' => 'HC','handler' => 'App\\Helpers\\MailHelper']];
|
||||
private static $event_class_mapping = [
|
||||
'add' => ['type' => 'HC', 'handler' => 'App\\Helpers\\HttpRequestHelper'], 'sub' => ['type' => 'CC', 'handler' => 'App\\Controllers\\Jobs\SubJob'], 'fancy_date_time_format' => ['type' => 'HF', 'handler' => 'fancy_date_time_format'], 'addNumber' => ['type' => 'HC', 'handler' => 'App\\Model\\HttpRequestHelper'], 'excelFileFormatValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'excelFileDataValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesOnboardPreprocess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeeDisembark' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesSIEnhanceProcess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'employeesCorrectionProcess' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmployeeServiceController'], 'send_email' => ['type' => 'HC', 'handler' => 'App\\Helpers\\MailHelper'], 'bulk_mail' => ['type' => 'HC', 'handler' => 'App\\Helpers\\MailHelper'], 'insertBatchList' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
|
||||
'importInceptionFileValidation' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
|
||||
'importInceptionUpdateTPAandUHID' => ['type' => 'CC', 'handler' => 'App\\Controllers\\EmpDataServiceController'],
|
||||
];
|
||||
public function __construct()
|
||||
{
|
||||
// echo 'HiC';//die();
|
||||
|
||||
26
app/Controllers/PendingActionsController.php
Normal file
26
app/Controllers/PendingActionsController.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use CodeIgniter\HTTP\IncomingRequest;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class PendingActionsController extends AdminController
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function getPendingActions()
|
||||
{
|
||||
//get pending actions like inception, corrections,deletions,SI enhanccnement to users
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -990,7 +990,7 @@ if (!function_exists('premium_calculation_manager'))
|
||||
$familiy_si_covered = ($familiy_si_covered >= $slab_value['max_si'] ? $slab_value['max_si'] : $familiy_si_covered);
|
||||
|
||||
$emp_data['policy_details']['basic_cover_si'] = $familiy_si_covered;
|
||||
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
|
||||
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
|
||||
$emp_data['policy_details']['premium'] = get_premium_for_si(slab_details: $slab_details,si_amount: $familiy_si_covered,band: $employee_received_band);
|
||||
@ -1015,7 +1015,7 @@ if (!function_exists('premium_calculation_manager'))
|
||||
{
|
||||
|
||||
$emp_data['policy_details']['basic_cover_si'] = $employee_received_si;
|
||||
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
|
||||
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
|
||||
$emp_data['policy_details']['premium'] = $slab_value['premium'];
|
||||
@ -1040,7 +1040,7 @@ if (!function_exists('premium_calculation_manager'))
|
||||
{
|
||||
|
||||
$emp_data['policy_details']['basic_cover_si'] = $employee_received_si;
|
||||
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
|
||||
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
|
||||
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
|
||||
$emp_data['policy_details']['premium'] = $slab_value['premium'];
|
||||
@ -1281,4 +1281,20 @@ if(!function_exists('remap_default_age_ratio_into_relationship'))
|
||||
|
||||
return $general_relationships;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!function_exists('check_dup_mobileno'))
|
||||
{
|
||||
function check_dup_mobileno(array $row,array $existing_mobilenos)
|
||||
{
|
||||
foreach($existing_mobilenos as $k => $value)
|
||||
{
|
||||
if ($row['12'] == $value['mobile']) {
|
||||
return array('status' => false,'error' => "Duplicate Mobile No");
|
||||
// break;
|
||||
}
|
||||
}
|
||||
return array('status' => true);
|
||||
}
|
||||
}
|
||||
@ -771,5 +771,22 @@ class EmployeePolicyModel extends Model
|
||||
}
|
||||
|
||||
|
||||
public function getExisitingMobileNos(string $client_policy_id)
|
||||
{
|
||||
$result = $this->select(['employee_polices.id','emp.id as emp_id','emp.relationship','emp.emp_code','emp.name','emp.email_corporate','emp.mobile as mobile'])
|
||||
->join('employees emp', 'employee_polices.employee_id = emp.id')
|
||||
->join('client_policy cp', 'employee_polices.client_policy_id = cp.id')
|
||||
->where('employee_polices.client_policy_id',$client_policy_id)
|
||||
->whereIn('employee_polices.status', ['Active'])
|
||||
->whereIn('emp.emp_status', ['Active'])
|
||||
->where('emp.is_active', 1)
|
||||
->where('emp.relationship', 'Self')
|
||||
->where('emp.mobile is not null')
|
||||
->where('employee_polices.is_active', 1)
|
||||
->findAll();
|
||||
|
||||
return ($result);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,7 +1,7 @@
|
||||
<style>
|
||||
.table-responsive {
|
||||
overflow-x: auto;
|
||||
}
|
||||
.table-responsive {
|
||||
overflow-x: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="col-12">
|
||||
@ -27,29 +27,51 @@
|
||||
<th class="font-weight-medium">Action</th>
|
||||
<th class="font-weight-medium">Count</th>
|
||||
<th class="font-weight-medium">Amount</th>
|
||||
<th class="font-weight-medium">status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody class="font-12">
|
||||
<?php
|
||||
if(isset($batch_list))
|
||||
{
|
||||
foreach ($batch_list as $key => $file) {
|
||||
<?php
|
||||
if (isset($batch_list)) {
|
||||
foreach ($batch_list as $key => $file) {
|
||||
?>
|
||||
|
||||
<tr>
|
||||
<td><b><?php echo ($key + 1)?></b></td>
|
||||
<td><?php echo $file['batch_code']?></td>
|
||||
<td data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>" ><?php echo strlen($file['file_name']) > 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?></td>
|
||||
<td><?php echo $file['client_short_name']?></td>
|
||||
<td><?php echo $file['policy_name']?></td>
|
||||
<td><?php echo $file['event_type']?></td>
|
||||
<td><?php echo $file['insurer_or_tpa']?></td>
|
||||
<td><?php echo $file['actions']?></td>
|
||||
<td><?php echo $file['count']?></td>
|
||||
<td><?php echo $file['amount']?></td>
|
||||
</tr>
|
||||
<?php }}?>
|
||||
<tr>
|
||||
<td><b><?php echo ($key + 1) ?></b></td>
|
||||
<td><?php echo $file['batch_code'] ?></td>
|
||||
<td data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>"><?php echo strlen($file['file_name']) > 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?></td>
|
||||
<td><?php echo $file['client_short_name'] ?></td>
|
||||
<td><?php echo $file['policy_name'] ?></td>
|
||||
<td><?php echo $file['event_type'] ?></td>
|
||||
<td><?php echo $file['insurer_or_tpa'] ?></td>
|
||||
<td><?php echo $file['actions'] ?></td>
|
||||
<td><?php echo $file['count'] ?></td>
|
||||
<td><?php echo intval($file['amount']) ?></td>
|
||||
<td>
|
||||
<?php if ($file['status'] == 'failed') { ?>
|
||||
<?php echo $file['status']; ?> <a href="<?= base_url('/util/export-import-error-list/') . $file['id'] ?>" class="fe-alert-circle" style="color: #000;" aria-hidden="true" target="_blank" data-toggle="tooltip" data-placement="top" title="Click to show the error"></a>
|
||||
<?php } else if ($file['status'] == 'partially success') { ?>
|
||||
<?php echo $file['status']; ?>
|
||||
<?php if ($file['error_data'] != 0) { ?>
|
||||
<a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip" data-placement="top" title="<?= $file['error_data'] ?>"></a>
|
||||
<?php } ?>
|
||||
<?php } else if ($file['status'] == 'failed-1') { ?>
|
||||
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip" data-placement="top" title="The list of employees provided has already been updated with the TPA ID."></a>
|
||||
<?php } else if ($file['status'] == 'failed-2') { ?>
|
||||
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip" data-placement="top" title="The list of employees provided has already been updated with the UHID."></a>
|
||||
<?php } else if ($file['status'] == 'failed-3') { ?>
|
||||
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip" data-placement="top" title="The Excel record count exceeds the DB record count."></a>
|
||||
<?php } else if ($file['status'] == 'failed-4') { ?>
|
||||
failed <a class="fe-alert-circle" style="color: #000;" data-toggle="tooltip" data-placement="top" title="Physical File Not Found."></a>
|
||||
<?php } else { ?>
|
||||
<?php echo $file['status']; ?>
|
||||
<?php } ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
@ -59,31 +81,31 @@
|
||||
</div><!-- end col -->
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#datatable-buttons').DataTable({
|
||||
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||
buttons: [{
|
||||
extend: 'csv',
|
||||
text: 'CSV',
|
||||
title: 'Batch List',
|
||||
className: 'my_class',
|
||||
}],
|
||||
initComplete: function(settings, json) {
|
||||
$('.my_class').css({
|
||||
position: "relative",
|
||||
left: "50px"
|
||||
});
|
||||
},
|
||||
language: {
|
||||
search: "_INPUT_",
|
||||
searchPlaceholder: "Search..."
|
||||
},
|
||||
paging: true
|
||||
});
|
||||
|
||||
|
||||
$('#datatable-buttons').DataTable({
|
||||
dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||
buttons: [{
|
||||
extend: 'csv',
|
||||
text: 'CSV',
|
||||
title: 'Batch List',
|
||||
className: 'my_class',
|
||||
}],
|
||||
initComplete: function(settings, json) {
|
||||
$('.my_class').css({
|
||||
position: "relative",
|
||||
left: "50px"
|
||||
});
|
||||
},
|
||||
language: {
|
||||
search: "_INPUT_",
|
||||
searchPlaceholder: "Search..."
|
||||
},
|
||||
paging: true
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
134
app/Views/export_import_error_list.php
Normal file
134
app/Views/export_import_error_list.php
Normal file
@ -0,0 +1,134 @@
|
||||
<link rel="shortcut icon" href="<?= base_url()."public"; ?>/assets/images/Nhance_Favi.svg">
|
||||
<title>Excel Error Report</title>
|
||||
<!-- Include DataTables CSS -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css">
|
||||
<!-- Include DataTables Buttons CSS -->
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/2.3.0/css/buttons.dataTables.min.css">
|
||||
<!-- Include Font Awesome CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
|
||||
|
||||
<style>
|
||||
/* Table styles */
|
||||
.table {
|
||||
width: 100%;
|
||||
border: 2px solid #ddd;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.table th, .table td {
|
||||
padding: 8px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.table th {
|
||||
background-color: #f2f2f2;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.table tr:nth-child(even) {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.error-tooltip {
|
||||
display: none;
|
||||
/* Hide error message by default */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.error-icon {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.error-icon:hover+.error-tooltip {
|
||||
display: block;
|
||||
/* Show error message when hovering over the icon */
|
||||
}
|
||||
|
||||
/* .error-cell {
|
||||
border: 2px solid red !important;
|
||||
} */
|
||||
|
||||
/* .container{
|
||||
position: relative;
|
||||
bottom: 150px;
|
||||
} */
|
||||
|
||||
table.dataTable tbody td {
|
||||
padding: 4px 4px !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<!-- <button><a href="">download full file</a></button> -->
|
||||
<div class="container">
|
||||
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0" id="tickets-table">
|
||||
<thead class="bg-light">
|
||||
<tr>
|
||||
<?php foreach ($excel_header as $header): ?>
|
||||
<th><?php echo $header; ?></th>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php for ($i = 0; $i < count($excel_data); $i++): ?>
|
||||
<tr>
|
||||
<?php foreach ($excel_data[$i] as $data): ?>
|
||||
<td <?php if (isset($data['error'])) echo 'class="error-cell"'; ?>>
|
||||
<?php
|
||||
if (isset($data['value'])) {
|
||||
echo $data['value'];
|
||||
}
|
||||
if (isset($data['error'])) {
|
||||
echo '<span class="error-icon"> <i class="fas fa-exclamation-circle" style="color: red;"></i></span>';
|
||||
echo '<span class="error-tooltip">' . $data['error'] . '</span>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endfor; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Include jQuery -->
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<!-- Include DataTables JavaScript -->
|
||||
<script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js"></script>
|
||||
<!-- Include DataTables Buttons JavaScript -->
|
||||
<script src="https://cdn.datatables.net/buttons/2.3.0/js/dataTables.buttons.min.js"></script>
|
||||
<!-- Include DataTables JSZip library -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
|
||||
<!-- Include DataTables Buttons HTML5 export extension -->
|
||||
<script src="https://cdn.datatables.net/buttons/2.3.0/js/buttons.html5.min.js"></script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#tickets-table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
{
|
||||
extend: 'excel',
|
||||
text: 'Excel', // Set the title for the Excel button
|
||||
title: 'ExcelErrorData', // Set your custom title here
|
||||
},
|
||||
// {
|
||||
// text: 'Excel Error', // Set the text for the custom button
|
||||
// action: function (e, dt, node, config) {
|
||||
// window.location.href = '<?= base_url("util/full-excel-error-file/") . $file_id ?>';
|
||||
// }
|
||||
// }
|
||||
],
|
||||
paging: false, // Disable pagination
|
||||
lengthMenu: [[-1], ["All"]] // Display all rows
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@ -136,14 +136,14 @@
|
||||
<tr>
|
||||
<td style="width: 11%;"><span style="margin-right: 20px;">Self:</span></td>
|
||||
<td style="width: 11%;"><input type="checkbox" style="margin-right: 70px;" name="family_floaters[]" value="self" id="self" checked> </td>
|
||||
<td style="width: 28%;" ><div class="self-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($self_min_age) ? $self_min_age : '18'; ?>" style="width: 18%;" type="number" name="self_min_age" id="self_min_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="self-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($self_max_age) ? $self_max_age : '60'; ?>" style="width: 18%;" type="number" name="self_max_age" id="self_max_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="self-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($self_min_age) ? $self_min_age : '18'; ?>" style="width: 25%;;" type="number" name="self_min_age" id="self_min_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
<td style="width: 28%;" ><div class="self-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($self_max_age) ? $self_max_age : '60'; ?>" style="width: 25%;;" type="number" name="self_max_age" id="self_max_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
</tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr>
|
||||
<tr>
|
||||
<td style="width: 11%;"><span style="margin-right: 20px;">Spouse:</span></td>
|
||||
<td style="width: 11%;"><input type="checkbox" style="margin-right: 70px;"name="family_floaters[]" value="spouse" id="spouse"></td>
|
||||
<td style="width: 28%;" ><div class="spouse-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($spouse_min_age) ? $spouse_min_age : '18'; ?>" style="width: 18%;" type="number" name="spouse_min_age" id="spouse_min_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="spouse-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($spouse_max_age) ? $spouse_max_age : '60'; ?>" style="width: 18%;" type="number" name="spouse_max_age" id="spouse_max_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="spouse-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($spouse_min_age) ? $spouse_min_age : '18'; ?>" style="width: 25%;;" type="number" name="spouse_min_age" id="spouse_min_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
<td style="width: 28%;" ><div class="spouse-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($spouse_max_age) ? $spouse_max_age : '60'; ?>" style="width: 25%;;" type="number" name="spouse_max_age" id="spouse_max_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
</tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr>
|
||||
<tr>
|
||||
<td style="width: 11%;"><span for="children">Children:</span></td>
|
||||
@ -155,8 +155,8 @@
|
||||
<option value="4">4</option>
|
||||
</select>
|
||||
</td>
|
||||
<td style="width: 28%;" ><div class="child-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($child_min_age) ? $child_min_age : '0'; ?>" style="width: 18%;" type="number" name="child_min_age" id="child_min_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="child-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($child_max_age) ? $child_max_age : '25'; ?>" style="width: 18%;" type="number" name="child_max_age" id="child_max_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="child-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($child_min_age) ? $child_min_age : '0'; ?>" style="width: 25%;;" type="number" name="child_min_age" id="child_min_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
<td style="width: 28%;" ><div class="child-age"><span style="margin-right: 20px;">Max Age:</span><input class="underline-input max_age" value="<?php echo isset($child_max_age) ? $child_max_age : '25'; ?>" style="width: 25%;;" type="number" name="child_max_age" id="child_max_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
</tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -184,9 +184,9 @@
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width: 22%;" ><div class="other-member-age"><span style="margin-right: 20px;">Elders Count:</span><input class="underline-input" id="member_count" style="width: 18%;" type="number" name="member_count" disabled id="member_count"></div></td>
|
||||
<td style="width: 28%;" ><div class="other-member-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($other_member_min_age) ? $other_member_min_age : '18'; ?>" style="width: 18%;" type="number" class="underline-input min_age" name="other_member_min_age" id="other_member_min_age"></div></td>
|
||||
<td style="width: 28%;" ><div class="other-member-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input max_age" value="<?php echo isset($other_member_max_age) ? $other_member_max_age : '60'; ?>" style="width: 18%;" type="number" class="underline-input max_age" name="other_member_max_age" id="other_member_max_age"></div></td>
|
||||
<td style="width: 22%;" ><div class="other-member-age"><span style="margin-right: 20px;">Elders Count:</span><input class="underline-input" id="member_count" style="width: 25%;;" type="number" name="member_count" disabled id="member_count"></div></td>
|
||||
<td style="width: 28%;" ><div class="other-member-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input min_age" value="<?php echo isset($other_member_min_age) ? $other_member_min_age : '18'; ?>" style="width: 25%;;" type="number" class="underline-input min_age" name="other_member_min_age" id="other_member_min_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
<td style="width: 28%;" ><div class="other-member-age"><span style="margin-right: 20px;">Min Age:</span><input class="underline-input max_age" value="<?php echo isset($other_member_max_age) ? $other_member_max_age : '60'; ?>" style="width: 25%;;" type="number" class="underline-input max_age" name="other_member_max_age" id="other_member_max_age" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)"></div></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
@ -132,13 +132,13 @@
|
||||
<td style="width: 20%;">
|
||||
<div class="self-age">
|
||||
<span style="margin-right: 20px;">Min Age:</span>
|
||||
<input class="underline-input min_age" value="<?php echo isset($self_min_age) ? $self_min_age : '18'; ?>" style="width: 35%;" type="number" name="self_min_age" id="self_min_age_gpa">
|
||||
<input class="underline-input min_age" value="<?php echo isset($self_min_age) ? $self_min_age : '18'; ?>" style="width: 44%;" type="number" name="self_min_age" id="self_min_age_gpa" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)">
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 20%;">
|
||||
<div class="self-age">
|
||||
<span style="margin-right: 20px;">Max Age:</span>
|
||||
<input class="underline-input max_age" value="<?php echo isset($self_max_age) ? $self_max_age : '60'; ?>" style="width: 35%;" type="number" name="self_max_age" id="self_max_age_gpa">
|
||||
<input class="underline-input max_age" value="<?php echo isset($self_max_age) ? $self_max_age : '60'; ?>" style="width: 44%;" type="number" name="self_max_age" id="self_max_age_gpa" oninput="this.value = this.value.replace(/\D/g, '').substring(0, 2)">
|
||||
</div>
|
||||
</td>
|
||||
<td ></td>
|
||||
|
||||
43
tests/unit/CheckDefaultAgeRatioTest.php
Normal file
43
tests/unit/CheckDefaultAgeRatioTest.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Tests;
|
||||
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use Config\App;
|
||||
use Config\Services;
|
||||
use Tests\Support\Libraries\ConfigReader;
|
||||
|
||||
// use App\Helpers\excel_util_helper;
|
||||
use Kint\Kint;
|
||||
|
||||
class CheckDefaultAgeRatioTest extends CIUnitTestCase
|
||||
{
|
||||
public function testRelationshipDefaultAgeRatio()
|
||||
{
|
||||
helper('excel_util_helper');
|
||||
|
||||
$general_relationships = [
|
||||
'self' => ['name' => 'Self', 'gender' => 'M', 'age_min' => 18, 'age_max' => null],
|
||||
'spouse' => ['name' => 'Spouse', 'gender' => 'F', 'age_min' => 18, 'age_max' => null],
|
||||
'son' => ['name' => 'Son', 'gender' => 'M', 'age_min' => null, 'age_max' => 25],
|
||||
'daughter' => ['name' => 'Daughter', 'gender' => 'F', 'age_min' => null, 'age_max' => 25],
|
||||
'father' => ['name' => 'Father', 'gender' => 'M', 'age_min' => 18, 'age_max' => null],
|
||||
'mother' => ['name' => 'Mother', 'gender' => 'F', 'age_min' => 18, 'age_max' => null],
|
||||
'father-in-law' => ['name' => 'Father in Law', 'gender' => 'M', 'age_min' => 18, 'age_max' => null],
|
||||
'mother-in-law' => ['name' => 'Mother in Law', 'gender' => 'F', 'age_min' => 18, 'age_max' => null]
|
||||
];
|
||||
|
||||
$default_age_ratio = [
|
||||
"self" => ["min" => 0, "max" => 55],
|
||||
"spouse" => ["min" => 0, "max" => 18],
|
||||
"child" => ["min" => 0, "max" => 18],
|
||||
"elders" => ["min" => 18, "max" => 53]
|
||||
];
|
||||
|
||||
$employee_data = [1, 'EMPID001','John Doe', '01-Apr-1970', 'male', 'father-in-law','current_action' => 'I'];
|
||||
$res = check_dob_diff($employee_data,$general_relationships,$default_age_ratio);
|
||||
Kint::dump($res);
|
||||
$this->assertTrue(!$res['status']);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user