From 4c09a3286eb8a065c291733d7aeb3824aef473c1 Mon Sep 17 00:00:00 2001 From: velz Date: Tue, 16 Apr 2024 09:35:07 +0530 Subject: [PATCH] CHANGE_PREMIUM_CALC_API,FEAT_MANUAL_INCEPTION --- app/Config/Routes.php | 1 + app/Controllers/EmployeeController.php | 12 +++++- app/Controllers/EmployeeRestController.php | 38 +++++++++++++++++++ app/Controllers/EmployeeServiceController.php | 8 ++-- app/Models/EmployeeModel.php | 15 ++++---- 5 files changed, 62 insertions(+), 12 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 007d80c1..56c21139 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -234,6 +234,7 @@ $routes->group("/api", ["filter" => "authJWT"], function($routes){ $routes->get("/getEmployeeProfile", "EmployeeRestController::getEmployeeProfile/$1"); $routes->post("/editEmployeeProfile", "EmployeeRestController::editEmployeeProfile"); +$routes->post("/calculatePremium", "EmployeeRestController::calculatePremium"); $routes->group("employeeRest", ["filter" => "authJWT"], function($routes){ $routes->post("employeeUpload", "EmployeeRestController::employeeUpload"); diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 5aa1b072..bb93433d 100644 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -158,7 +158,7 @@ class EmployeeController extends AdminController // $this->fileModel->where('id', '12')->set(['status' => 'failed','reason' => $failure_reason])->update(); // dd($failure_reason); // } - + if($this->request->getMethod() == 'post') { //validate uploaded file @@ -548,5 +548,15 @@ class EmployeeController extends AdminController } } + + // @param int $client_policy_id + // this funciton initiate Inception/adition/DA of employees data only form enrollment app when passing + // client_policy_id pull draft and enrolled status employees and proceed to calculatin and make entry in DB + public function initiateManualEmployeesOnboardProcess($client_policy_id) + { + $empServiceController = new EmployeeServiceController(); + $res = $empServiceController->employeesOnboardPreprocess(['client_policy_id' => $client_policy_id]); + dd($res); + } } \ No newline at end of file diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index a5909186..bc88c765 100644 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1250,4 +1250,42 @@ public function iAgreeForAddOn() return $this->respond(['status' => 'success','code' => 200,'data' => [] ], 200); } +//Post method - which receives client_policy id and empcode of the family. +//Pull records againest emp code and calculate premium +// retun array +public function calculatePremium()//family level +{ + helper('excel_util_helper'); + $client_policy_id = $this->request->getVar('client_policy_id'); + $emp_code = $this->request->getVar('emp_code'); + // dd($client_policy_id); + + $client_id = ($this->clientPolicyModel->select('client_id')->find($client_policy_id))['client_id']; + // get policy and rack details + $policy_terms = $this->clientPolicyModel->getPolicyDetails($client_id,$client_policy_id); + $policy_terms = (array) $policy_terms[0];// convert obj to array + + //get policy slab rates + $slab_details = $this->policesModel->getPolicySlabRatesForEmpOnboard($client_policy_id,$client_id); + + $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_code: $emp_code,emp_status:['active'],policy_status:['active']); + + $file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception']; + // dd($this->employeeModel->getLastQuery()); + // dd($existing_famility_details);die(); + $employee_data_group_by_family = data_group_by_family($existing_famility_details,$data_source = 'db'); + // dd($employee_data_group_by_family); + foreach ($employee_data_group_by_family as $emp_id => $family) + { + $transformed_famility_details = transform_db_data_to_excel($family); + $data = calculate_premimum($transformed_famility_details,$policy_terms,$slab_details,$file); + // dd($data); + $employee_data_group_by_family[$emp_id] = $data; + + } + + // dd ($employee_data_group_by_family); + return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 404),'data' => [$employee_data_group_by_family] ], 200); +} + } \ No newline at end of file diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index ac99a890..6007b717 100644 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -349,7 +349,7 @@ class EmployeeServiceController extends AdminController //if action is DA then get all familiy members,transfrom them into excel array, addd data source as db or excel if($file['action'] == 'dependent_addition') { - $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $emp_id,client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: 'active'); + $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $emp_id,client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: ['active'],policy_status:['active']); // dd($existing_famility_details); //transsform familiy details from db columns to exxcel row with column indexs for checking remaining functionalitites $existing_famility_details = transform_db_data_to_excel($existing_famility_details,$file); @@ -531,7 +531,7 @@ class EmployeeServiceController extends AdminController //if action is DA then get all familiy members,transfrom them into excel array, addd data source as db or excel if($file['action'] == 'dependent_addition') { - $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $emp_id,client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: 'active'); + $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $emp_id,client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: ['active'],policy_status:['active']); // dd($existing_famility_details); //transsform familiy details from db columns to exxcel row with column indexs for checking remaining functionalitites $existing_famility_details = transform_db_data_to_excel($existing_famility_details,$file); @@ -566,7 +566,7 @@ class EmployeeServiceController extends AdminController //get policy slab rates $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($client_policy_id,$client_id); - $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_status: 'enrolled'); + $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_status: ['enrolled','draft'],policy_status:['enrolled','draft']); $file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception']; // dd($this->employeeModel->getLastQuery()); @@ -663,7 +663,7 @@ class EmployeeServiceController extends AdminController else { - $family = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $row[1],client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: 'active'); + $family = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $row[1],client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: ['active'],policy_status: ['active']); // Kint::dump($family); foreach ($family as $key => $emp) { diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index 5f2bd65f..50b0eadf 100644 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -88,7 +88,7 @@ class EmployeeModel extends Model } - public function getEmpFamilybyEmpCode(string $client_policy_id = null,string $emp_code = null,string $client_id = null,string $emp_status = null) + public function getEmpFamilybyEmpCode(string $client_policy_id = null,string $emp_code = null,string $client_id = null,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') @@ -98,17 +98,18 @@ class EmployeeModel extends Model }) ->where('employee_polices.is_active',1) - ->where('employees.emp_status', ($emp_status !== null ? $emp_status : 'active')) + // ->where('employees.emp_status', ($emp_status !== null ? $emp_status : 'active')) // ->where('employees.emp_code',$emp_code) ->when($emp_code, function($query) use ($emp_code){ return $query->where('employees.emp_code',$emp_code); }) - // ->when($emp_status, function($query) use ($emp_status){ - // $emp_status = ($emp_status !== null ? $emp_status : 'active'); - // dd($emp_status); - // return $query->where('employees.emp_status', $emp_status); - // }) + ->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); + }) ->when($client_id, function($query) use ($client_id){ return $query->where('employees.client_id',$client_id); })