From 68d217c6f9e59fa283e6d38237a2110c3d17e4f4 Mon Sep 17 00:00:00 2001 From: velz Date: Thu, 25 Apr 2024 14:23:45 +0530 Subject: [PATCH] FEAT_TRUNCATE_FILE_DATA --- app/Config/Routes.php | 1 + app/Controllers/EmployeeController.php | 68 +++++++++++++++- app/Controllers/EmployeeServiceController.php | 18 ++--- app/Helpers/excel_util_helper.php | 2 +- app/Models/EmpEndorsementModel.php | 3 +- app/Models/EmployeeModel.php | 26 ++++++ app/Views/file_list.php | 79 +++++++++++++++++++ 7 files changed, 183 insertions(+), 14 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 1252386c..1de6f7f5 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -114,6 +114,7 @@ $routes->group("/employee", ["filter" => "authMVC"], function($routes){ $routes->post("upload", "EmployeeController::employeesUplodWithEvents"); $routes->get("excel_error/(:any)", "EmployeeController::getExcelFileErrors/$1"); $routes->get("endorsement-list", "EmployeeController::endorsementList"); + $routes->get("truncate/(:any)", "EmployeeController::truncateFileData/$1"); }); diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index a3953889..a9c2d81a 100644 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -129,9 +129,9 @@ class EmployeeController extends AdminController // print_r($this->request->getPost('policies')); // print_r($this->request->getPost('upload-action-type')); // die(); - $empServiceController = new EmployeeServiceController(); - $res = $empServiceController->excelFileFormatValidation(['file_id' => '42']); - dd($res); + // $empServiceController = new EmployeeServiceController(); + // $res = $empServiceController->excelFileFormatValidation(['file_id' => '42']); + // dd($res); // $empServiceController = new EmployeeServiceController(); // $res = $empServiceController->excelFileDataValidation(['file_id' => '38']); @@ -827,6 +827,68 @@ class EmployeeController extends AdminController } + + public function truncateFileData() //truncateFileDataIn DB (de activate rows) + { + $file_id = $this->request->uri->getSegment(3); + // $file_id = 112; + $file = $this->fileModel->find($file_id); + // $file['action'] = 'si_enhancement'; + // $result = []; + // !dd($file); + if($file['action'] == 'inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition') + { + $result = $this->employeeModel->getEmpListByFileId(file_id: $file_id,emp_status: ['active'],policy_status:['active']); + // ~dd($result); + if(count($result)) + { + return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200); + } + else + { + + //update emp and emp plocies + $db = db_connect(); + $query = "UPDATE employees JOIN employee_polices ON employees.id = employee_polices.employee_id and employees.file_id = $file_id SET employees.emp_status = 'truncated', employee_polices.status = 'truncated', employees.is_active = 0,employee_polices.is_active = 0 WHERE employees.file_id = $file_id"; + $db->query($query); + $affectedRows = $db->affectedRows(); + // $affectedRows = 10; + + //update file status + $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + + return $this->respond(['dataStatus' => true,'code' => 200,'data' => round($affectedRows/2)], 200); + } + } + else if($file['action'] == 'si_enhancement' || $file['action'] == 'correction' || $file['action'] == 'deletion') + { + $res = $this->empEndorsementModel->select(['count(id) as count']) + ->where('emp_endorsement.file_id',$file_id) + ->groupStart() + ->where('emp_endorsement.endorsement_id is not null') + ->orwhereIn('emp_endorsement.status',['complete']) + ->groupEnd() + ->get() + ->getResult(); + // print_r($this->empEndorsementModel->getLastQuery()); + // echo $res[0]->count;die(); + if($res[0]->count == 0) + { + //update truncated status to db + $this->empEndorsementModel->where('file_id',$file_id) + ->set(['status' => 'truncated']) + ->update(); + //update file status + $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + return $this->respond(['dataStatus' => true,'code' => 200,'data' => 'success'], 200); + } + else + { + return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200); + } + } + + } diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index ac2b2c86..ab05a638 100644 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -145,7 +145,7 @@ class EmployeeServiceController extends AdminController $policy_terms = json_decode($policy_terms[0]->policy_terms); $policy_terms = (array) $policy_terms;// convert obj to array // - dd($policy_terms); + // dd($policy_terms); //get policy slab rates $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']); @@ -621,14 +621,14 @@ class EmployeeServiceController extends AdminController $group_key = rand(100000, 999999); //for emp table - $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); // dd( $this->empEndorsementModel->getLastQuery()); // $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'change_event','old_value' => $data['change_event'],'new_value' => 'deletion','created_by' => $file['created_by'],'remarks' => 'general deletion']); // for employee policy table - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]); - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]); - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); }; //iterate each row foreach ($excel_data as $col_key => $row) @@ -738,7 +738,7 @@ class EmployeeServiceController extends AdminController if(!count($existing_endorsements)) { $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key]); + $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key,'file_id' => $file['id']]); } @@ -803,9 +803,9 @@ class EmployeeServiceController extends AdminController if($slab_value['si'] == $row[3]) { $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]); + $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); break; } } diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index 6ed64b27..44ddf180 100644 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -844,7 +844,7 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; $emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days; $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']; + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']); $emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')); break; diff --git a/app/Models/EmpEndorsementModel.php b/app/Models/EmpEndorsementModel.php index 8be6c38c..ab20b712 100644 --- a/app/Models/EmpEndorsementModel.php +++ b/app/Models/EmpEndorsementModel.php @@ -25,7 +25,8 @@ class EmpEndorsementModel extends Model "created_by", "updated_by", "is_active", - "remarks" + "remarks", + "file_id" ]; // Callbacks diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index 50b0eadf..fe534ebf 100644 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -139,4 +139,30 @@ class EmployeeModel extends Model return $this->where('emp_code',$arr['emp_code'])->where('name',$arr['name'])->where('client_id', $arr['client_id'])->first(); } + + public function getEmpListByFileId(int $file_id,array $emp_status = [],array $policy_status = []) + { + $result = $this->select(['employees.id as emp_id', 'employees.client_id', 'employees.relationship', 'employees.relationship_code', 'employees.change_event', 'employees.emp_code', 'employees.name', 'employees.email_personal', 'employees.email_corporate', 'employees.mobile', 'employees.gender', 'employees.dob', 'employees.doj', 'employees.basic_pay', 'employees.band', 'employees.designation', 'employees.emp_status','employee_polices.id as emp_policy_id', 'employee_polices.employee_id', 'employee_polices.client_policy_id', 'employee_polices.tpa_id', 'employee_polices.uhid', 'employee_polices.batch_code', 'employee_polices.status', 'employee_polices.pre_existing_alignments', 'employee_polices.basic_cover_si', 'employee_polices.date_coverage', 'employee_polices.policy_end_date', 'employee_polices.days', 'employee_polices.premium', 'employee_polices.rata_premimum', 'employee_polices.gst', 'employee_polices.date_of_exit', 'employee_polices.reason_for_exit']) + ->join('employee_polices', 'employee_polices.employee_id = employees.id') + ->where('employees.is_active',1) + ->where('employees.file_id',$file_id) + ->where('employee_polices.is_active',1) + // ->where('employee_polices.uhid is not null') + // ->where('employee_polices.tpa_id is not null') + ->groupStart() + ->orWhere('employee_polices.uhid is not null') + ->orWhere('employee_polices.tpa_id is not null') + ->groupEnd() + ->when(count($emp_status), function($query) use ($emp_status){ + return $query->whereIn('employees.emp_status', $emp_status); + }) + ->when(count($policy_status), function($query) use ($policy_status){ + return $query->whereIn('employee_polices.status', $policy_status); + }) + ->findAll(); + // ~dd($this->db->getLastQuery()); + + return ($result); + } + } diff --git a/app/Views/file_list.php b/app/Views/file_list.php index 0eb25a30..a3bf934f 100644 --- a/app/Views/file_list.php +++ b/app/Views/file_list.php @@ -86,6 +86,11 @@ data-target="#full-width-modal-emp-list" class="dropdown-item view_emp_list" href="#">View + + Truncate + @@ -225,6 +230,80 @@ $('body').on('click', '.upload_button', function() { $('#file_upload_actions').val(fileId.action) }) +$('body').on('click', '.truncate', function() { + event.preventDefault(); + // console.log(event); + var fileId = JSON.parse(this.getAttribute('data-id')); + // alert('Hi' + fileId); + + Swal.fire({ + title: "Do you want to truncate data from uploaded file?", + showCancelButton: true, + confirmButtonText: "Delete", + confirmButtonColor: "#ff3333", + }).then((result) => { + + console.log(result); + if (result.isConfirmed) { + $('.loader').fadeIn(); + $('.loader-mask').fadeIn(); + var apiURL = '' + 'employee/truncate/' + fileId; + $.ajax({ + url: apiURL, + method: 'GET', + headers: { + // "Content-Type": "application/json", + "X-Requested-With": "XMLHttpRequest" + }, + success: function(response) { + // console.log(response.code); + // console.log(response.dataStatus); + // console.log(response.data); + setTimeout(function() { + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); + }, 1000); + + + if (response.code === 200 && response.dataStatus === true && response.data !== "") { + Swal.fire({ + title: "Deleted!", + // text: "Data from truncated", + icon: "success" + }); + } else if (response.code === 404 && response.dataStatus === false) { + console.error('no data found', response); + Swal.fire({ + title: "Failed!", + text: response.message, + icon: "error" + }); + } else { + + Swal.fire({ + title: "Failed!", + text: 'Something went wrong! Try later', + icon: "error" + }); + } + }, + error: function(xhr, status, error) { + setTimeout(function() { + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); + }, 1000); + + console.error('Error fetching data from API:', error); + toastr.error('Something went wrong! Try later', 'Error'); + } + }); + + } + }); + + +}) + $('#uploadForm').submit(function() {