FILES_MERGE_CONFLICT_RESOLVED : RV

This commit is contained in:
VENKATESHWARAN 2024-03-27 09:51:06 +05:30
commit da981afa2e
37 changed files with 3087 additions and 554 deletions

2
.gitignore vendored
View File

@ -24,5 +24,7 @@ writable/**/*.sqlite
vendor/
build/
composer.lock
.env
.phpunit*

View File

@ -2,9 +2,14 @@
use CodeIgniter\Router\RouteCollection;
/**
* @var RouteCollection $routes
*/
$routes->get('/swagger', 'SwaggerController::index', ['filter' => 'authMVC']);
// $routes->get('/', 'LoginController::index');
$routes->get('/test', 'Home::index');
$routes->get('/login', 'LoginController::index');///auth/google
@ -214,7 +219,6 @@ $routes->post("/editEmployeeProfile", "EmployeeRestController::editEmployeeProfi
$routes->post("employeeUpload", "EmployeeRestController::employeeUpload");
$routes->group("employeeRest", ["filter" => "authJWT"], function($routes){
$routes->post("employeeUpload", "EmployeeRestController::employeeUpload");

View File

@ -941,23 +941,85 @@ class ClientController extends AdminController
public function policyGMCTerms()
{
try {
// print_r($this->request->getPost('family_floaters'));die;
$this->myLogger->logme('error','Terms CREATE function called');
/*** Client Policy Table Primary Key(ID) ***/
$client_policy_id = $this->request->getPost("client_policy_id");
$data['sum_insured'] =str_replace(',', '',$this->request->getPost("sum_insured"));
$data['family_floater'] =$this->request->getPost("family_floater");
$data['corporatebuffer'] = $this->request->getPost("corporatebuffer");
$data['family_floaters'] = $this->request->getPost("family_floaters") ?? [];
$data['corporatebuffer'] = $this->request->getPost("corporatebuffer");
$data['family_floaters'] = $this->request->getPost("family_floaters") ?? [];
// if (!in_array("self", $data['family_floaters'])) {
// array_unshift($data['family_floaters'], "self");
// }
$temp_family_floaters = $data['family_floaters'];
$data['family_floaters'] =[];
if (in_array("self",$temp_family_floaters) == 1) {
$data['family_floaters']['self'] =1;
}else{
$data['family_floaters']['self'] =0;
}
if (in_array("spouse",$temp_family_floaters) == 1) {
$data['family_floaters']['spouse'] =1;
}else{
$data['family_floaters']['spouse'] =0;
}
// $data['family_floaters']['either-parents-pil'] =0;
if (count($temp_family_floaters)) {
$children_value = 0;
$value = 0;
if(count($temp_family_floaters) == 2){
$children_value = 0;
$value = 1;
}else if(count($temp_family_floaters) == 3){
$children_value = 1;
$value = 2;
}else{
$children_value = 2;
$value = 3;
}
$data['family_floaters']['childrens'] =(int)$temp_family_floaters[$children_value];
if ($temp_family_floaters[$value] == '1P') {
$data['family_floaters']['parents'] =1;
$data['family_floaters']['parents-in-law'] =0;
$data['family_floaters']['either-parents-pil'] =0;
}else if($temp_family_floaters[$value] == '2P'){
$data['family_floaters']['parents'] =2;
$data['family_floaters']['parents-in-law'] =0;
$data['family_floaters']['either-parents-pil'] =0;
}else if($temp_family_floaters[$value] == '1PIL'){
$data['family_floaters']['parents'] =0;
$data['family_floaters']['parents-in-law'] =1;
$data['family_floaters']['either-parents-pil'] =0;
}else if($temp_family_floaters[$value] == '2PIL'){
$data['family_floaters']['parents'] =0;
$data['family_floaters']['parents-in-law'] =2;
$data['family_floaters']['either-parents-pil'] =0;
}else if($temp_family_floaters[$value] == '2EPORPIL'){
$data['family_floaters']['parents'] =1;
$data['family_floaters']['parents-in-law'] =1;
$data['family_floaters']['either-parents-pil'] =0;
}else if($temp_family_floaters[$value] == 'EPORPIL'){
$data['family_floaters']['parents'] =0;
$data['family_floaters']['parents-in-law'] =0;
$data['family_floaters']['either-parents-pil'] =1;
}else if($temp_family_floaters[$value] == '4EPORPIL'){
$data['family_floaters']['parents'] =2;
$data['family_floaters']['parents-in-law'] =2;
$data['family_floaters']['either-parents-pil'] =0;
}
}
if (!in_array("self", $data['family_floaters'])) {
array_unshift($data['family_floaters'], "self");
}
$data['waiverofpreexistingdiseases'] =$this->request->getPost("waiverofpreexistingdiseases");
if ($data['waiverofpreexistingdiseases'] == 1) {
$data['maternitycoverage'] =str_replace(',', '',$this->request->getPost("maternitycoverage"));
@ -1004,7 +1066,6 @@ class ClientController extends AdminController
$data['special_condition_label'] = str_replace(',', '',$this->request->getPost("special_condition_label")) ?? [];
$data['special_condition_input'] = str_replace(',', '',$this->request->getPost("special_condition_input")) ?? [];
$jsonData = json_encode($data);
$dataa = array(
'policy_terms' => $jsonData,
@ -1012,6 +1073,7 @@ class ClientController extends AdminController
$record = $this->clientPolicyModel->where('id', $client_policy_id)->first();
// print_r($data);die;
if ($record) {
$update = $this->clientPolicyModel->update($client_policy_id, $dataa);
if ($update) {

View File

@ -125,11 +125,27 @@ class EmployeeController extends AdminController
// print_r($this->request->getPost('upload-action-type'));
// die();
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->excelFileFormatValidation(['file_id' => '34']);
// $res = $empServiceController->excelFileFormatValidation(['file_id' => '38']);
// dd($res);
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->excelFileDataValidation(['file_id' => '12']);
// $res = $empServiceController->excelFileDataValidation(['file_id' => '38']);
// dd($res);
// $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_policy_id: '2');
// dd($existing_famility_details);
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->employeesSIEnhanceProcess(['file_id' => '38']);
// dd($res);
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->employeesCorrectionProcess(['file_id' => '37']);
// // dd($res);
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->employeesOnboardPreprocess(['client_policy_id' => '3']);
// dd($res);
// $empServiceController = new EmployeeServiceController();
// $res = $empServiceController->employeeDisembark(['file_id' => '36']);
// dd($res);
// if(isset($res['error_summary']) && count($res['error_summary']))
@ -173,7 +189,7 @@ class EmployeeController extends AdminController
$action = $this->request->getPost('upload-action-type');
$status = 'inprogress';
$file_id = $this->fileModel->insert(['file_name' => $filename,'client_id' => $client_id,'policy_id' => $policy_id,'created_by' => $loggedInUserID,'status' => $status,'action' => $action]);
$file_id = $this->fileModel->insert(['file_name' => $filename,'client_id' => $client_id,'policy_id' => $policy_id,'created_by' => $loggedInUserID,'status' => $status,'action' => $action]);//here field policy_id have client_policy_id and not policy id from policy master
$this->myLogger->logme("error",'{file_id} uploaded success',['file_id' => $file_id]);
//start validation process
@ -190,16 +206,21 @@ class EmployeeController extends AdminController
}
$data['actions'] = ['inception' => 'Inception + Addition + Deletion','correction' =>'Correction','si_enhancement' =>'SI Enhancement'];
$data['events'] = ['inception' => 'Inception (Employee + Dependents)','addition' => 'Addition (Employee + Dependents)','dependent_addition' => 'Dependent Addition (Only Dependents)','deletion' => 'Deletion','correction' =>'Correction','si_enhancement' =>'SI Enhancement'];
$data['actions'] = ['inception' => 'Inception (Employee + Dependents)','addition' => 'Addition (Employee + Dependents)','dependent_addtion' => 'Dependent Addition (Only Dependents)','deletion' => 'Deletion','correction' =>'Correction','si_enhancement' =>'SI Enhancement'];
$data['import_or_export'] = ['import' => 'Import','export' =>'Export'];
$data['insurer_or_tpa'] = ['insurer' => 'Insurer','tpa' =>'TPA'];
$data['fileList'] = $this->fileModel
->select(['files.*','up.emp_code','up.first_name','pm.name as policy_name','c.short_name'])
->join('user_profiles up','files.created_by = up.id')
->join('policies pm','files.policy_id = pm.id')
->join('clients c','files.client_id = c.id')
->where('files.created_by',8)->orderBy('files.created_at','desc')->findAll();
->join('client_policy cp','files.policy_id = cp.id')
->join('policies pm','cp.policy_id = pm.id')
->join('clients c','files.client_id = c.id and files.client_id = cp.client_id')
->where('files.created_by',get_session_userid())->orderBy('files.created_at','desc')->findAll();
$data['batch_list'] = $this->batchFileModel->select('batch_files.*, policies.name as policy_name, clients.short_name as client_short_name')
->join('client_policy', 'client_policy.id = batch_files.client_policy_id')
@ -208,6 +229,7 @@ class EmployeeController extends AdminController
->orderBy('batch_files.id','desc')
->findAll();
// dd($data['fileList']);die();
if($this->request->getMethod() == "get")
{

View File

@ -1,57 +0,0 @@
<?php
namespace App\Models;
use CodeIgniter\Model;
class EmployeeModel extends Model
{
protected $table = 'employees';
protected $primaryKey = 'id';
protected $allowedFields = [
"id",
"client_id",
"employee_id",
"change_event",
"relationship_id",
"relationship",
"batch_id",
"emp_code",
"name",
"email_personal",
"email_corporate",
"mobile",
"gender",
"dob",
"otp",
"emp_status",
"created_by",
"updated_by",
"is_active",
];
public function getEmployeePolicy($id)
{
return $this->db->table('employee_polices')
->select(' policies.name as Policy_Name , client_policy.policy_terms as Policy_Terms, client_policy.client_id as ClientId, client_policy.policy_id as PolicyId,client_policy.id as ClientPolicyId, client_policy.open_for_enrollment as OpenForEnrollment') // Select all columns from both tables
->join('client_policy', 'client_policy.id = employee_polices.client_policy_id')
->join('policies', 'policies.id = client_policy.policy_id')
->where('employee_polices.employee_id', $id)
->get()
->getResult();
}
// for EMP rest API process do not change
public function checkExistingEmpEntrollment($arr)
{
return $this->where('emp_code',$arr['emp_code'])->where('name',$arr['name'])->first();
}
}

View File

@ -17,6 +17,7 @@ use App\Models\PolicesModel;
use App\Models\RelationshipModel;
use App\Models\FileModel;
use App\Models\ClientPolicyModel;
use App\Models\PolicyPremium1Model;
use App\Models\PolicyPremium2Model;
use App\Controllers\Jobs ;
@ -44,6 +45,7 @@ class EmployeeRestController extends AdminController
protected $policesModel;
protected $relationshipModel;
protected $clientPolicyModel;
protected $policyPremium1Model;
protected $policyPremium2Model;
public function __construct()
@ -58,6 +60,7 @@ class EmployeeRestController extends AdminController
$this->relationshipModel = new RelationshipModel();
$this->fileModel= new FileModel();
$this->clientPolicyModel = new ClientPolicyModel();
$this->policyPremium1Model = new PolicyPremium1Model();
$this->policyPremium2Model = new PolicyPremium2Model();
}
@ -139,6 +142,7 @@ class EmployeeRestController extends AdminController
$data = $this->request->getJSON();
if ($data) {
$updatedCount = 0;
foreach ($data as $item) {
$id = $item->id;
$item->dob = $this->convertDateFormat($item->dob);
@ -156,8 +160,8 @@ class EmployeeRestController extends AdminController
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 404);
}
}
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th], 500);
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e], 500);
}
}
@ -237,6 +241,7 @@ class EmployeeRestController extends AdminController
public function deleteDependence()
{
try {
print_r($this->rquest);die;
if($this->request->getGet('id'))
{
$delete = $this->employeeModel->where('id', $this->request->getGet('id'))->delete();
@ -489,273 +494,281 @@ class EmployeeRestController extends AdminController
// Upload the Employee Detail in DB by Sheet Data
public function employeeUpload()
{
$file = $this->request->getFile('file');
$client_id = $this->request->getPost('client_id');
$policy_id = $this->request->getPost('policy_id');
try {
$file = $this->request->getFile('file');
$client_id = $this->request->getPost('client_id');
// $client_id = $this->request->getJSON('client_id');
$policy_id = $this->request->getPost('policy_id');
// $policy_id = $this->request->getJSON('policy_id');
$client_policy = $this->clientPolicyModel->where('id', $policy_id)->first();
$policy = $this->policesModel->where('id', $client_policy['policy_id'])->first();
$client_policy = $this->clientPolicyModel->where('id', $policy_id)->where('client_id', $client_id)->first();
$policy_permium = $this->policyPremium2Model->where(['client_id' => $client_id , 'client_policy_id' => $policy_id,'is_active' =>1])-> first();
if ($client_policy) {
$policy = $this->policesModel->where('id', $client_policy['policy_id'])->first();
$policy_permium_1 = $this->policyPremium1Model->where(['client_id' => $client_id , 'client_policy_id' => $policy_id,'is_active' =>1])-> first();
$policy_permium_2 = $this->policyPremium2Model->where(['client_id' => $client_id , 'client_policy_id' => $policy_id,'is_active' =>1])-> first();
$sum_insured_amount_for_check_employee_1 = $policy_permium_1['si'];
$sum_insured_amount_for_check_employee_2 = $policy_permium_2['si'];
$is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
$filename = $file->getName();
$file_name_with_path = WRITEPATH."/uploads/import_excel/".$filename;
$is_moved = $file->move(WRITEPATH . 'uploads/import_excel');
$filename = $file->getName();
$file_name_with_path = WRITEPATH."/uploads/import_excel/".$filename;
//check the file exist or not
if(!file_exists($file_name_with_path))
{
session()->setFlashdata('error', 'File not found');
return redirect()->to(base_url('employee/upload'));
}
// Load the Excel file
$spreadsheet = IOFactory::load($file_name_with_path);
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Get the highest row and column numbers
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
// print_r($excel_data);die();
// $data = [];
// $data[] =$excel_data;
// print_r($data);die;
// Iterate through each row
// for ($row = 1; $row <= $highestRow; $row++) {
// // Initialize the row data array
// $rowData = [];
// // Iterate through each column in the row
// for ($col = 'A'; $col <= $highestColumn; $col++) {
// // Get the cell value
// $value = $sheet->getCell($col . $row)->getValue();
// // print_r($value);
// // Add the cell value to the row data array
// $rowData[] = $value;
// }
// // Add the row data to the main data array
// $data[] = $rowData;
// }
// print_r($data);die;
$extractData['file_name']= $filename;
$extractData['client_id']= $client_id;
$extractData['status']= 'success';
$extractData['policy_id']= $policy_id;
$extractData['action']= 'enrollment';
// $extractData['created_by']=set_session_context('Employee');
$file_data =$this->fileModel->insert($extractData);
$extra = [];
//this change the column name into index number
for ($i = 0; $i < count($data[0]); $i++) {
$data[0][$i] = $i;
}
for ($i = 0; $i < count($data); $i++) {
if ($i == 0) {
// Loop through the first row to extract keys
for ($j = 0; $j < count($data[$i]); $j++) {
$extra[$data[$i][$j]] = []; // Initialize keys with empty array
//check the file exist or not
if(!file_exists($file_name_with_path))
{
session()->setFlashdata('error', 'File not found');
return redirect()->to(base_url('employee/upload'));
}
} else {
// Loop through subsequent rows
for ($j = 0; $j < count($data[$i]); $j++) {
// Append values to corresponding keys in $extra
if (isset($extra[$data[0][$j]])) {
// Make sure the key exists in the $extra array
$extra[$data[0][$j]][] = $data[$i][$j];
// Load the Excel file
$spreadsheet = IOFactory::load($file_name_with_path);
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Get the highest row and column numbers
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
$extractData['file_name']= $filename;
$extractData['client_id']= $client_id;
$extractData['status']= 'success';
$extractData['policy_id']= $policy_id;
$extractData['action']= 'enrollment';
// $extractData['created_by']=set_session_context('Employee');
$file_data =$this->fileModel->insert($extractData);
$extra = [];
if (count($data[0]) == 10) {
$value = ['S.No','Emp Code','Name','DOJ','Gender','Relation','DOB','Mail','Mobile','SI'];
$check_miss_match = [];
for ($i=0; $i <count($value) ; $i++) {
if ($data[0][$i] != $value[$i]) {
$check_miss_match[]=$data[0][$i];
}
}
if (count($check_miss_match) > 0) {
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Column Name's are miss Match's!", 'data'=> $check_miss_match], 404);
}
}
}
}
$dataToInsert = [];
$basic_cover_si= [];
foreach ($extra['0'] as $index => $id) {
$relation ='';
if ($extra['5'][$index] === 'Mother' || $extra['5'][$index] === 'Father') {
$relation = 'parent';
} else if($extra['5'][$index] === 'Son' || $extra['5'][$index] === 'Daughter'){
$relation = 'child';
}else if($extra['5'][$index] === 'Father in Law' || $extra['5'][$index] === 'Mother in Law'){
$relation = 'parent_in_law';
}else if($extra['5'][$index] === 'Spouse'){
$relation = 'spouse';
}else{
$relation = 'self';
}
// Simplified formatDate function
if(count($data[0]) != 10){
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Uploaded file row count is Not Match!" ], 404);
}
// Assigning formatted dates
// print_r($extra['3']);die;
$doj = $extra['3'][$index] ;
$dob = $extra['6'][$index] ;
// Change date format for $doj
$doj_new_format = date('Y-m-d', strtotime($doj)); // $doj_new_format will be "2001-02-12"
// Change date format for $dob
$dob_new_format = date('Y-m-d', strtotime($dob));
// Your existing code here
$emp_code =isset($extra['1'][$index]) ? $extra['1'][$index] : 0;
$name = $extra['2'][$index];
// print_r("--" . $emp_code. "---");
// print_r( $emp_code != 0 );
if($emp_code != 0 && $name != '' || $name != null){
$record = [
// 'id' => $id,
'emp_code' => $emp_code,
'name' => $name,
// Check if the 'doj' key exists before accessing it
'doj' => $doj_new_format,
'gender' => $extra['4'][$index],
'relationship' => ucfirst($extra['5'][$index]),
'family_floater_key' => $relation,
'dob' => $dob_new_format,
'email_corporate' => $extra['7'][$index],
'mobile'=> $extra['8'][$index],
'client_id' => $client_id,
'emp_status'=>'draft'
];
$basic_cover_si_value = null;
//Grid id is 10 and 11 sum insure value add only for self other grid type self sum insure is for the dependence
// if ($policy['policy_type_id'] != 1) {
if ($policy_permium['policy_grid_id'] == 10 || $policy_permium['policy_grid_id'] == 11) {
if (strtolower($extra['5'][$index]) == 'self') {
$basic_cover_si_value = $extra['9'][$index];
}else{
$basic_cover_si_value = null;
//this change the column name into index number
for ($i = 0; $i < count($data[0]); $i++) {
$data[0][$i] = $i;
}
for ($i = 0; $i < count($data); $i++) {
if ($i == 0) {
// Loop through the first row to extract keys
for ($j = 0; $j < count($data[$i]); $j++) {
$extra[$data[$i][$j]] = []; // Initialize keys with empty array
}
} else {
// Loop through subsequent rows
for ($j = 0; $j < count($data[$i]); $j++) {
// Append values to corresponding keys in $extra
if (isset($extra[$data[0][$j]])) {
// Make sure the key exists in the $extra array
$extra[$data[0][$j]][] = $data[$i][$j];
}
}
}
}
$dataToInsert = [];
$basic_cover_si= [];
if ($extra[9]) {
$new_array = [];
for ($i=0; $i < count($extra[9]); $i++) {
if ($sum_insured_amount_for_check_employee_2 != $extra[9][$i] || $sum_insured_amount_for_check_employee_1 != $extra[9][$i]) {
$new_array[] = $i+1;
}
}
if (count($new_array) > 0) {
$count =count($new_array);
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "$count Employee Sum Insured is Not Match.. " , 'data' => $new_array], 404);
}
}
foreach ($extra['0'] as $index => $id) {
$relation ='';
if ($extra['5'][$index] === 'Mother' || $extra['5'][$index] === 'Father') {
$relation = 'parent';
} else if($extra['5'][$index] === 'Son' || $extra['5'][$index] === 'Daughter'){
$relation = 'child';
}else if($extra['5'][$index] === 'Father in Law' || $extra['5'][$index] === 'Mother in Law'){
$relation = 'parent_in_law';
}else if($extra['5'][$index] === 'Spouse'){
$relation = 'spouse';
}else{
if (strtolower($extra['5'][$index]) == 'self') {
$basic_cover_si_value = $extra['9'][$index];
}else{
for ($i=0; $i < count($extra['1']) ; $i++) {
if ($extra['1'][$i] == $extra['1'][$index]) {
if (strtolower($extra['5'][$i]) == 'self') {
$basic_cover_si_value = $extra['9'][$i];
$relation = 'self';
}
// Simplified formatDate function
// Assigning formatted dates
$doj = $extra['3'][$index] ;
$dob = $extra['6'][$index] ;
// Change date format for $doj
$doj_new_format = date('Y-m-d', strtotime($doj)); // $doj_new_format will be "2001-02-12"
// Change date format for $dob
$dob_new_format = date('Y-m-d', strtotime($dob));
// Your existing code here
$emp_code =isset($extra['1'][$index]) ? $extra['1'][$index] : 0;
$name = $extra['2'][$index];
if($emp_code != 0 && $name != '' || $name != null){
$record = [
// 'id' => $id,
'emp_code' => $emp_code,
'name' => $name,
// Check if the 'doj' key exists before accessing it
'doj' => $doj_new_format,
'gender' => $extra['4'][$index],
'relationship' => ucfirst($extra['5'][$index]),
'family_floater_key' => $relation,
'dob' => $dob_new_format,
'email_corporate' => $extra['7'][$index],
'mobile'=> $extra['8'][$index],
'client_id' => $client_id,
'emp_status'=>'draft'
];
$basic_cover_si_value = null;
//Grid id is 10 and 11 sum insure value add only for self other grid type self sum insure is for the dependence
if ($policy_permium_2['policy_grid_id'] == 10 || $policy_permium_2['policy_grid_id'] == 11) {
if (strtolower($extra['5'][$index]) == 'self') {
$basic_cover_si_value = $extra['9'][$index];
}else{
$basic_cover_si_value = null;
}
}else{
if (strtolower($extra['5'][$index]) == 'self') {
$basic_cover_si_value = $extra['9'][$index];
}else{
for ($i=0; $i < count($extra['1']) ; $i++) {
if ($extra['1'][$i] == $extra['1'][$index]) {
if (strtolower($extra['5'][$i]) == 'self') {
$basic_cover_si_value = $extra['9'][$i];
}
}
}
}
}
}
}
// }
$record2 = [
'basic_cover_si' => $basic_cover_si_value,
];
// print_r($basic_cover_si);die;
$dataToInsert[] = $record;
$basic_cover_si[]= $basic_cover_si_value;
}
}
for ($a=0; $a <count($dataToInsert) ; $a++)
{
$employee = $this->employeeModel->checkExistingEmployee($dataToInsert[$a]);
$emp_id =0;
$data_after_gpa_or_gmc =[];
// print_r($policy);die;
if ($policy['policy_type_id'] == 1) {
if (strtolower($dataToInsert[$a]['relationship']) == 'self') {
$data_after_gpa_or_gmc = $dataToInsert[$a];
}
}else{
$data_after_gpa_or_gmc = $dataToInsert[$a];
}
date_default_timezone_set('Asia/Kolkata');
$current_timestamp = time();
$formatted_date_time = date('Y-m-d H:i:s', $current_timestamp);
if ($employee) {
$emp_id =$employee['id'];
$id =$emp_id;
$data_after_gpa_or_gmc['id'] = $id;
$data_after_gpa_or_gmc['updated_at'] = $formatted_date_time;
$result = $this->employeeModel->save($data_after_gpa_or_gmc);
if ($result) {
$log_message = 'Update Employee - '.$employee['name'].'('.$employee['emp_code'].') with PK '.$employee['id'];
$this->myLogger->logme('error',('Update - ' . $employee['id'].' - '. $employee['emp_code'] .' - '.$employee['name']));
}
}else{
if ($dataToInsert[$a]['emp_code'] != 0) {
$result =false;
if (count($data_after_gpa_or_gmc) != 0) {
$result = $this->employeeModel->insert($data_after_gpa_or_gmc);
}
$emp_id =$result;
if ($result) {
$emp = $this->employeeModel->where('id', $result)->get()->getResult();
$policy_name = $this->employeePolicyModel->where('employee_id', $result)->get()->getResult();;
$log_message = 'Insert Employee- '.$dataToInsert[$a]['name'] .'('.$dataToInsert[$a]['emp_code'] .') with PK ';
$this->myLogger->logme('error',('Insert - ' . $dataToInsert[$a]['emp_code'] .' - '. $dataToInsert[$a]['name']));
}
}
$record2 = [
'basic_cover_si' => $basic_cover_si_value,
];
$dataToInsert[] = $record;
$basic_cover_si[]= $basic_cover_si_value;
}
$emp_policy_data =[
'employee_id'=>$emp_id,
'client_policy_id'=>$policy_id,
'status'=> 'draft',
'basic_cover_si'=>isset($basic_cover_si[$a]) ? $basic_cover_si[$a] : null
];
}
for ($a=0; $a <count($dataToInsert) ; $a++)
{
$employee = $this->employeeModel->checkExistingEmployee($dataToInsert[$a]);
$emp_id =0;
$data_after_gpa_or_gmc =[];
if ($policy['policy_type_id'] == 1) {
if (strtolower($dataToInsert[$a]['relationship']) == 'self') {
$data_after_gpa_or_gmc = $dataToInsert[$a];
}
}else{
$data_after_gpa_or_gmc = $dataToInsert[$a];
}
date_default_timezone_set('Asia/Kolkata');
$current_timestamp = time();
$formatted_date_time = date('Y-m-d H:i:s', $current_timestamp);
$employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $policy_id]);
if ($employee_policy) {
foreach ($employee_policy as $existing_policy) {
$emp_policy_data['id']= $existing_policy['id'];
$emp_policy_data['updated_at'] = $formatted_date_time;
$this->employeePolicyModel->save($emp_policy_data);
}
} else {
$emp_policy = $this->employeePolicyModel->insert($emp_policy_data);
}
if ($employee) {
$emp_id =$employee['id'];
$id =$emp_id;
$data_after_gpa_or_gmc['id'] = $id;
$data_after_gpa_or_gmc['updated_at'] = $formatted_date_time;
$result = $this->employeeModel->save($data_after_gpa_or_gmc);
if ($result) {
$log_message = 'Update Employee - '.$employee['name'].'('.$employee['emp_code'].') with PK '.$employee['id'];
$this->myLogger->logme('error',('Update - ' . $employee['id'].' - '. $employee['emp_code'] .' - '.$employee['name']));
}
}else{
if ($dataToInsert[$a]['emp_code'] != 0) {
$result =false;
if (count($data_after_gpa_or_gmc) != 0) {
$result = $this->employeeModel->insert($data_after_gpa_or_gmc);
}
$emp_id =$result;
if ($result) {
$emp = $this->employeeModel->where('id', $result)->get()->getResult();
$policy_name = $this->employeePolicyModel->where('employee_id', $result)->get()->getResult();;
$log_message = 'Insert Employee- '.$dataToInsert[$a]['name'] .'('.$dataToInsert[$a]['emp_code'] .') with PK ';
$this->myLogger->logme('error',('Insert - ' . $dataToInsert[$a]['emp_code'] .' - '. $dataToInsert[$a]['name']));
}
}
}
$emp_policy_data =[
'employee_id'=>$emp_id,
'client_policy_id'=>$policy_id,
'status'=> 'draft',
'basic_cover_si'=>isset($basic_cover_si[$a]) ? $basic_cover_si[$a] : null
];
$employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $policy_id]);
if ($employee_policy) {
foreach ($employee_policy as $existing_policy) {
$emp_policy_data['id']= $existing_policy['id'];
$emp_policy_data['updated_at'] = $formatted_date_time;
$this->employeePolicyModel->save($emp_policy_data);
}
} else {
$emp_policy = $this->employeePolicyModel->insert($emp_policy_data);
}
//trigger
// print_r($dataToInsert[$a]['email_personal']);die;
$mail = $dataToInsert[$a]['email_corporate'];
$subject = 'Welcome, Employee Benefit Program Enrolment';
// $message = 'Dear ' . $dataToInsert[$a]['name'] . ",<br> We are glad to welcome you to the employee benefit program ," .$policy_name['name'] ."offered by your employer, <br><br><br> Click on the link below to review your personal and family details:<br><a href='https://venbait.in/nhance/app/dev'>Review Details</a>" ;
$data['employee_name']=$dataToInsert[$a]['name'];
$data['policy_name']=$policy['name'];
$message = view('mail_welcome', $data);
// if ($dataToInsert[$a]['email_corporate'] != null || $dataToInsert[$a]['email_corporate'] != '' && $dataToInsert[$a]['relationship'] == 'Self') {
// $job_details = new Jobs();
// $r = Jobs::addJob(['job_name' => 'send_email','payload' => ['mail' => $mail, 'subject' => $subject,'message'=> $message]]);
// }
// print_r($r);//die();
// $jobWorker = new JobWorker();
//JobWorker::processJob($r);
// $return_log = MailHelper::send_email($mail,$subject, $message);
// $return_log = json_decode($return_log);
// $this->myLogger->logme('info', "Email Status : {mail_status}, Sender Email:{email}", ['mail_status' => $return_log->status, 'email'=> $return_log->data]);
//trigger
$mail = $dataToInsert[$a]['email_corporate'];
$subject = 'Welcome, Employee Benefit Program Enrolment';
// $message = 'Dear ' . $dataToInsert[$a]['name'] . ",<br> We are glad to welcome you to the employee benefit program ," .$policy_name['name'] ."offered by your employer, <br><br><br> Click on the link below to review your personal and family details:<br><a href='https://venbait.in/nhance/app/dev'>Review Details</a>" ;
$data['employee_name']=$dataToInsert[$a]['name'];
$data['policy_name']=$policy['name'];
$message = view('mail_welcome', $data);
// if ($dataToInsert[$a]['email_corporate'] != null || $dataToInsert[$a]['email_corporate'] != '' && $dataToInsert[$a]['relationship'] == 'Self') {
// $job_details = new Jobs();
// $r = Jobs::addJob(['job_name' => 'send_email','payload' => ['mail' => $mail, 'subject' => $subject,'message'=> $message]]);
// }
// print_r($r);//die();
// $jobWorker = new JobWorker();
//JobWorker::processJob($r);
// $return_log = MailHelper::send_email($mail,$subject, $message);
// $return_log = json_decode($return_log);
// $this->myLogger->logme('info', "Email Status : {mail_status}, Sender Email:{email}", ['mail_status' => $return_log->status, 'email'=> $return_log->data]);
}
}else{
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 404);
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
}
}

View File

@ -12,11 +12,14 @@ use App\Models\EmployeeModel;
use App\Models\EmployeePolicyModel;
use App\Models\ClientModel;
use App\Models\ClientPolicyModel;
use App\Models\PolicesModel;
use App\Models\FileModel;
use App\Models\EmpEndorsementModel;
use App\Controllers\Jobs ;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use Kint\Kint;
class EmployeeServiceController extends AdminController
{
@ -27,9 +30,18 @@ class EmployeeServiceController extends AdminController
protected $clientModel;
protected $fileModel;
protected $clientPolicyModel;
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']],'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']],'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],'doj' => ['col_idx' => 7,'col_cell_name' => 'H','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' => 8,'col_cell_name' => 'I','col_name' => 'Basic Pay','is_mandatory' => false,'data_type' => 'str','format' => null,'allowed_values' => null,'custom' => 'check_basic_pay','params' => ['row']],'band_grade' => ['col_idx' => 9,'col_cell_name' => 'J','col_name' => 'Band/Grade','is_mandatory' => false,'data_type' => 'str','format' => null,'allowed_values' => null,'custom' => 'check_employee_band','params' => ['row']],'designation' => ['col_idx' => 10,'col_cell_name' => 'K','col_name' => 'Designation','is_mandatory' => false,'data_type' => 'str','format' => null,'allowed_values' => null],'phone' => ['col_idx' => 11,'col_cell_name' => 'L','col_name' => 'Phone','is_mandatory' => false,'data_type' => 'str','format' => null,'allowed_values' => null],'email' => ['col_idx' => 12,'col_cell_name' => 'M','col_name' => 'Email','is_mandatory' => false,'data_type' => 'str','format' => null,'allowed_values' => null],'pre_existing_ailments' => ['col_idx' => 13,'col_cell_name' => 'N','col_name' => 'PRE EXISTING AILMENTS','is_mandatory' => ['I','A','DA'],'data_type' => 'str','format' => null,'allowed_values' => ['0','1']],'change_event' => ['col_idx' => 14,'col_cell_name' => 'O','col_name' => 'Change event','is_mandatory' => ['A','DA','D'],'data_type' => 'str','format' => null,'allowed_values' => null],'date_of_exit' => ['col_idx' => 15,'col_cell_name' => 'P','col_name' => 'Date of exit','is_mandatory' => ['D'],'data_type' => 'str','format' => 'd-M-Y','allowed_values' => null],'reason_for_exit' => ['col_idx' => 16,'col_cell_name' => 'Q','col_name' => 'Reason for exit','is_mandatory' => ['D'],'data_type' => 'str','format' => null,'allowed_values' => null],'action' => ['col_idx' => 17,'col_cell_name' => 'R','col_name' => 'Action','is_mandatory' => true,'data_type' => 'str','format' => null,'allowed_values' => ['I','A','D','DA'] ]];
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']],'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']],'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 $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]];
protected $correction_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],'field'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'Field','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>['name','dob','relationship']],'value'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Value','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_correction'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'Date of Correction','is_mandatory'=>true,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'change_event'=>['col_idx'=>6,'col_cell_name'=>'G','col_name'=>'Change event','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'remarks'=>['col_idx'=>7,'col_cell_name'=>'H','col_name'=>'Remarks','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null]];
protected $si_enhance_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],'augmented_si'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'Augmented SI','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_si','params' => ['row','policy_terms','slab_details']],'date_of_enhancement'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Date of SI Enhancement','is_mandatory'=>true,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null]];
public function __construct()
{
// helper('utility');
@ -40,6 +52,8 @@ class EmployeeServiceController extends AdminController
$this->clientModel = new ClientModel();
$this->fileModel = new FileModel();
$this->clientPolicyModel = new ClientPolicyModel();
$this->policiesModel = new PolicesModel();
$this->empEndorsementModel = new EmpEndorsementModel();
}
public function excelFileFormatValidation($params)
@ -74,28 +88,21 @@ class EmployeeServiceController extends AdminController
$sheet = $spreadsheet->getActiveSheet();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
// $highestRow = $sheet->getHighestDataRow(); // 1048576, should be 2
// $highestColumn = $sheet->getHighestDataColumn(); // L, should be B
// print_r($highestRowAndColumn);
// echo $highestRow;echo ' - ' . $highestColumn;
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
// $data = array_filter($data);
// echo '<pre>';
// dd($excel_data);
// echo "</pre>";die();
// foreach ($excel_data as $key => $value)
// {
// }
// dd($this->si_enhance_excel_columns);
$columns_to_check = [];
if($file['action'] == 'inception'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'addition'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'dependent_addition'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'deletion'){ $columns_to_check = $this->deletion_excel_columns; }
if($file['action'] == 'correction'){ $columns_to_check = $this->correction_excel_columns; }
if($file['action'] == 'si_enhancement'){ $columns_to_check = $this->si_enhance_excel_columns; }
//check no of columns in excel
$total_defined_columns = count($columns_to_check);
$excel_columns = ($excel_data[0]);
// var_dump($excel_columns);die();
// var_dump($total_defined_columns);die();
$excel_columns_count = count($excel_columns);
if($total_defined_columns != $excel_columns_count)
{
@ -124,7 +131,15 @@ class EmployeeServiceController extends AdminController
//start other checks
$result = ['error_type' => 1,'error_summary' => [], 'error_data' => [] ];
$keys = array_keys($columns_to_check);
// print_r($keys);die();
// dd($columns_to_check);die();
// get policy and rack details
$policy_terms = $this->clientPolicyModel->getPolicyDetails($file['client_id'],$file['policy_id']);
$policy_terms = (array) $policy_terms[0];// convert obj to array
//get policy slab rates
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
// dd($slab_details);
//remove header
unset($excel_data[0]);
@ -134,7 +149,12 @@ class EmployeeServiceController extends AdminController
//define row wise action/event in temporary variable
$current_column_action = null;
if($file['action'] == 'inception'){ $current_column_action = $row[17]; }
if($file['action'] == 'inception'){ $current_column_action = 'I'; }
else if($file['action'] == 'addition'){ $current_column_action = 'A'; }
else if($file['action'] == 'dependent_addition'){ $current_column_action = 'DA'; }
else if($file['action'] == 'deletion'){ $current_column_action = 'D'; }
else if($file['action'] == 'correction'){ $current_column_action = 'C'; }
else if($file['action'] == 'si_enhancement'){ $current_column_action = 'SI'; }
//1. avoid empty rows
if(check_row_is_empty_or_null($row))
{
@ -144,15 +164,15 @@ class EmployeeServiceController extends AdminController
foreach ($row as $col_key => $col)
{
$is_mandatory = $this->inception_excel_columns[$keys[$col_key]]['is_mandatory'];
$format = $this->inception_excel_columns[$keys[$col_key]]['format'];
$allowed_values = $this->inception_excel_columns[$keys[$col_key]]['allowed_values'];
$custom_function = isset($this->inception_excel_columns[$keys[$col_key]]['custom']) ? $this->inception_excel_columns[$keys[$col_key]]['custom'] : null;
$binding_params = isset($this->inception_excel_columns[$keys[$col_key]]['params']) ? $this->inception_excel_columns[$keys[$col_key]]['params'] : null;
$column_dispaly_name = $this->inception_excel_columns[$keys[$col_key]]['col_name'];
$column_index = $this->inception_excel_columns[$keys[$col_key]]['col_idx'];
$column_cell = $this->inception_excel_columns[$keys[$col_key]]['col_cell_name'];
$is_mandatory = $columns_to_check[$keys[$col_key]]['is_mandatory'];
$format = $columns_to_check[$keys[$col_key]]['format'];
$allowed_values = $columns_to_check[$keys[$col_key]]['allowed_values'];
$custom_function = isset($columns_to_check[$keys[$col_key]]['custom']) ? $columns_to_check[$keys[$col_key]]['custom'] : null;
$binding_params = isset($columns_to_check[$keys[$col_key]]['params']) ? $columns_to_check[$keys[$col_key]]['params'] : null;
$column_dispaly_name = $columns_to_check[$keys[$col_key]]['col_name'];
$column_index = $columns_to_check[$keys[$col_key]]['col_idx'];
$column_cell = $columns_to_check[$keys[$col_key]]['col_cell_name'];
$row['current_action'] = $current_column_action;
//mandatory check
if(is_bool($is_mandatory) && $is_mandatory === true)
@ -169,7 +189,7 @@ class EmployeeServiceController extends AdminController
//if is_mandatory is array (action based mandatory check)
if($current_column_action != null && is_array($is_mandatory) && in_array(strtoupper(trim($current_column_action)),$is_mandatory))
{
$allowed_actions = $this->inception_excel_columns[$keys[$col_key]]['is_mandatory'];
$allowed_actions = $columns_to_check[$keys[$col_key]]['is_mandatory'];
if($col == "" || $col == NULL)
{
array_push($result['error_summary'],1);
@ -196,7 +216,7 @@ class EmployeeServiceController extends AdminController
if($is_mandatory === true && isset($allowed_values) && is_array($allowed_values))
{
if(!in_array(trim($col),$allowed_values))
if(!in_array(strtolower(trim($col)),$allowed_values))
{
array_push($result['error_summary'],3);
$result['error_data'][$row_key][$keys[$col_key]]['col_name'] = $column_dispaly_name; //push column name
@ -280,11 +300,16 @@ class EmployeeServiceController extends AdminController
return array('error_summary' => [5], 'error_data' => $message);
}
$columns_to_check = [];
$columns_to_check = [];
if($file['action'] == 'inception'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'addition'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'dependent_addition'){ $columns_to_check = $this->inception_excel_columns; }
if($file['action'] == 'deletion'){ $columns_to_check = $this->deletion_excel_columns; }
if($file['action'] == 'correction'){ $columns_to_check = $this->correction_excel_columns; }
if($file['action'] == 'si_enhancement'){ $columns_to_check = $this->si_enhance_excel_columns; }
// get policy and rack details
$policy_terms = $this->clientPolicyModel->getPolicyTermsJson($file['client_id'],$file['policy_id']);
$policy_terms = $this->clientPolicyModel->getPolicyDetails($file['client_id'],$file['policy_id']);
// dd($policy_terms);
$policy_terms = json_decode($policy_terms[0]->policy_terms);
$policy_terms = (array) $policy_terms;// convert obj to array
@ -306,78 +331,567 @@ class EmployeeServiceController extends AdminController
$employee_data_group_by_family = data_group_by_family($excel_data);
// dd($employee_data_group_by_family);
foreach ($employee_data_group_by_family as $emp_id => $family)
{
foreach ($employee_data_group_by_family as $emp_id => $family)
{
//check name dup within a family
$res = name_dup_check_within_family($family);
if(count($res))
{
foreach($res as $k => $rowid)
//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')
{
array_push($result['error_summary'],7); // dup entry in excel file
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Twofold Name found within family";
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $emp_id,client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_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);
// dd($existing_famility_details);
$family = array_merge($family,$existing_famility_details);
}
}
//check allowed dependent count and relationship conflict within family at policy level
// if($policy_terms['family_floater'] == true)
// {
// dd($policy_terms['family_floaters']);
// }
// die('check');
$res = check_dependent_conflict($family,$policy_terms);
// dd($res);
if(!$res['status'])
{
foreach($res['error_data'] as $key => $value)
// kint::dump($family);die();
//check name dup within a family
if($file['action'] == 'inception' || $file['action'] == 'addition' || $file['action'] == 'dependent_addition')
{
array_push($result['error_summary'],$value['code']); //record not avail for deletion
$result['error_data'][$rowid][($value['col_name'])]['error'][] = $value['msg'];
$res = name_dup_check_within_family($family,$file['action']);
// dd($res);
if(count($res))
{
foreach($res as $k => $rowid)
{
array_push($result['error_summary'],7); // dup entry in excel file
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Twofold Name found within family";
}
}
}
if($file['action'] == 'dependent_addition' || $file['action'] == 'addition' || $file['action'] == 'inception')
{
$res = check_dependent_conflict($family,$policy_terms,$file['action']);
// dd($res);
if(!$res['status'])
{
foreach($res['error_data'] as $key => $value)
{
array_push($result['error_summary'],$value['code']);
$result['error_data'][ $value['row_id'] ][($value['col_name'])]['error'][] = $value['msg'];
}
}
}
//check dup with empid and name with db
$res = name_and_empid_check_in_db($family,$file);
// dd($file);
// echo '<br/>';
// print_r($res);
if(count($res['del']))
{
foreach($res['del'] as $k => $rowid)
{
array_push($result['error_summary'],10); //record not avail for deletion
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Record Not found ";
}
}
if(count($res['i']))
{
foreach($res['i'] as $k => $rowid)
{
array_push($result['error_summary'],9); //dup entry
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Record already exists";
}
}
}
//check dup with empid and name with db
$res = name_and_empid_check_in_db($family,$file['client_id'],$file['policy_id']);
// print_r($result);
// echo '<br/>';
// print_r($res);
if(count($res['del']))
{
foreach($res['del'] as $k => $rowid)
{
array_push($result['error_summary'],10); //record not avail for deletion
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Record Not found for deletion";
}
}
if(count($res['i']))
{
foreach($res['i'] as $k => $rowid)
{
array_push($result['error_summary'],9); //dup entry
$result['error_data'][$rowid]['name_of_emp_dep']['error'][] = "Record already exists";
}
}
}
// dd($result);
if(isset($result['error_summary']) && count($result['error_summary']))
{
$result['error_summary'] = array_count_values($result['error_summary']);
$status = 'failed';
$failure_reason = ((json_encode($result)));
$this->fileModel->where('id', $file_id)->set(['status' => $status,'reason' => $failure_reason])->update();
$this->myLogger->logme("error",'{file_id} uploaded failed',['file_id' => $file_id]);
//return $this->respond(['dataStatus' => true,'code' => 404,'data' => 'file upload failed with errors'], 200);
// dd($failure_reason);
}
return $result;
// s($result);
// die();
if(isset($result['error_summary']) && count($result['error_summary']))
{
$result['error_summary'] = array_count_values($result['error_summary']);
$status = 'failed';
$failure_reason = ((json_encode($result)));
$this->fileModel->where('id', $file_id)->set(['status' => $status,'reason' => $failure_reason])->update();
$this->myLogger->logme("error",'{file_id} uploaded failed',['file_id' => $file_id]);
//return $this->respond(['dataStatus' => true,'code' => 404,'data' => 'file upload failed with errors'], 200);
// dd($failure_reason);
}
else if($file['action'] == 'deletion')
{
//proceed next data level validation in JOB queue
$job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'employeeDisembark','payload' => ['file_id' => $file_id]]);
}
else if ($file['action'] == 'si_enhancement')
{
//proceed next data level validation in JOB queue
$job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'employeesSIEnhanceProcess','payload' => ['file_id' => $file_id]]);
}
else if ($file['action'] == 'correction')
{
//proceed next data level validation in JOB queue
$job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'employeesCorrectionProcess','payload' => ['file_id' => $file_id]]);
}
else //inception OR addition OR dependent addition
{
//proceed next data level validation in JOB queue
$job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'employeesOnboardPreprocess','payload' => ['file_id' => $file_id]]);
}
return $result;
}
// calculate data points and premium
public function employeesOnboardPreprocess($params)
{
helper('excel_util_helper');
// dd($params);
if(isset($params['file_id']))//handle data from excel to inception
{
//get file name
$file_id = $params['file_id'];
$file = $this->fileModel->find($file_id);
// dd($file);
$return = [];
if(!isset($file))
{
//file not found in DB
return array('status' => false, 'msg' => 'file not found in DB');
}
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
//check physical file
if(!file_exists($file_name_with_path))
{
//file not found update status and reason
$message = "Physical file not found";
// echo $message;
$this->myLogger->logme('error',($message . ' for file id ' . $file_id));
$this->fileModel->where('id', $file_id)->set(['status' => 'failed','reason' => json_encode(['error_summary' => array_count_values([5]),'error_data' => $message])])->update();
return array('error_summary' => [5], 'error_data' => $message);
}
$columns_to_check = [];
if($file['action'] == 'inception'){ $columns_to_check = $this->inception_excel_columns; }
// get policy and rack details
$policy_terms = $this->clientPolicyModel->getPolicyDetails($file['client_id'],$file['policy_id']);
$policy_terms = (array) $policy_terms[0];// convert obj to array
// $policy_terms = json_decode($policy_terms[0]->policy_terms);
// dd($policy_terms);
//get excel data
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
$sheet = $spreadsheet->getActiveSheet();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
unset($excel_data[0]);
//get policy slab rates
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
// dd($slab_details);
$employee_data_group_by_family = data_group_by_family($excel_data);
// dd($employee_data_group_by_family);
foreach ($employee_data_group_by_family as $emp_id => $family)
{
//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');
// 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);
// Kint::dump($existing_famility_details);
$family = array_merge($family,$existing_famility_details);
// dd($family);
}
// Kint::dump($family);die();
$data = calculate_premimum($family,$policy_terms,$slab_details,$file);
// dd($data);
$employee_data_group_by_family[$emp_id] = $data;
//$this->employeesOnboardProcess(['familiy_data' => $data,'file' => $file]);
}
}
else if(isset($params['client_policy_id']))//handle data from enrollment to inception
{
$client_policy_id = $params['client_policy_id'];
//get client id
$client_id = ($this->clientPolicyModel->select('client_id')->find($client_policy_id))['client_id'];
// dd($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->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: 'draft');
$file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception'];
// dd($this->employeeModel->getLastQuery());
// Kint::dump($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;
$this->employeesOnboardProcess(['familiy_data' => $data,'file' => $file]);
}
// dd($employee_data_group_by_family);
}
// die();
return ($employee_data_group_by_family);
}
//deletion of emp
public function employeeDisembark($params)
{
helper('excel_util_helper');
//get file name
$file_id = $params['file_id'];
$file = $this->fileModel->find($file_id);
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
$sheet = $spreadsheet->getActiveSheet();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
unset($excel_data[0]);
// dd($excel_data);
$endorsement_data = [];
//make closure funciton which is going to use only by this method
$endorsement = function($data,$file,$row){
//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']);
// 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']);
$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']);
$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']);
};
//iterate each row
foreach ($excel_data as $col_key => $row)
{
if(check_row_is_empty_or_null($row))
{
break;
}
// echo '<br>START- ' . $row[2];
$employee = $this->employeeModel->where('emp_code', $row[1])->where('name',$row[2])->where('client_id',$file['client_id'])->first();
$existing_endorsements = $this->empEndorsementModel->where('actions','d')
->where('table_name','employees')
->where('endorsement_id is null')
->where('emp_code',$employee['emp_code'])
->where('name',$employee['name'])
->where('field_name','emp_status')
->findAll();
if(!count($existing_endorsements))
{
if(strtolower($employee['relationship']) != 'self')
{
if(!in_array($employee['id'],$endorsement_data))//make entry in endorsement firsttime only with checking that PK of emp exisintg in variable $endorsement_data
{
$employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first();
$data = ['emp_id' => $employee['id'],'name' => $employee['name'],'emp_status' => $employee['emp_status'],'emp_policy_id' => $employee_policy['id'],'emp_code' => $employee['emp_code'],'change_event' => $employee['change_event'],'date_of_exit' => $employee_policy['date_of_exit'],'reason_for_exit' => $employee_policy['reason_for_exit'],'status' => $employee_policy['status']];
$endorsement($data,$file,$row);
$endorsement_data[] = $employee['id'];
}
}
else
{
$family = $this->employeeModel->getEmpFamilybyEmpCode(emp_code: $row[1],client_id: $file['client_id'],client_policy_id: $file ['policy_id'],emp_status: 'active');
// Kint::dump($family);
foreach ($family as $key => $emp) {
if(!in_array($emp['emp_id'],$endorsement_data))
{
$endorsement($emp,$file,$row);
$endorsement_data[] = $emp['emp_id'];
}
}
}
}
// print_r($endorsement_data);
}
return $endorsement_data;
}
//correction of emp
public function employeesCorrectionProcess($params)
{
helper('excel_util_helper');
//get file name
$file_id = $params['file_id'];
$file = $this->fileModel->find($file_id);
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
$sheet = $spreadsheet->getActiveSheet();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
unset($excel_data[0]);
// dd($excel_data);
//iterate each row
foreach ($excel_data as $col_key => $row)
{
if(check_row_is_empty_or_null($row))
{
break;
}
// echo '<br>START- ' . $row[2];
$field_name = $row[3];
$field_value = ($field_name == 'dob' ? change_date_format($row[4],'d-M-Y','Y-m-d') : $row[4] );
$employee = $this->employeeModel->where('emp_code', $row[1])->where('name',$row[2])->where('client_id',$file['client_id'])->first();
$existing_endorsements = $this->empEndorsementModel->where('actions','c')
->where('table_name','employees')
->where('endorsement_id is null')
->where('emp_code',$employee['emp_code'])
->where('name',$employee['name'])
->where('field_name',$field_name)
->findAll();
// dd($existing_endorsements);
//make entry in endorsement table
if(!count($existing_endorsements))
{
$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')]);
}
}
return true;
}
//enhance of emp
public function employeesSIEnhanceProcess($params)
{
helper('excel_util_helper');
//get file name
$file_id = $params['file_id'];
$file = $this->fileModel->find($file_id);
$file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
$sheet = $spreadsheet->getActiveSheet();
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
unset($excel_data[0]);
// dd($excel_data);
//get policy slab rates
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
//iterate each row
// dd($slab_details);
foreach ($excel_data as $col_key => $row)
{
if(check_row_is_empty_or_null($row))
{
break;
}
// echo '<br>START- ' . $row[2];
$employee = $this->employeeModel->where('emp_code', $row[1])->where('name',$row[2])->where('client_id',$file['client_id'])->first();
$employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first();
$existing_endorsements = $this->empEndorsementModel->where('actions','si')
->where('table_name','employee_polices')
->where('endorsement_id is null')
->where('emp_code',$employee['emp_code'])
->where('name',$employee['name'])
->where('field_name','basic_cover_si')
->findAll();
// dd($existing_endorsements);
//make entry in endorsement table
if(!count($existing_endorsements))
{
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $row[3])
{
$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']);
$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']);
$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']);
break;
}
}
}
}
return true;
}
// insert or update in db for inception addition depent addition
public function employeesOnboardProcess($params)
{
$familiy_data = $params['familiy_data'];
$file = $params['file'];
// dd($file);
// print_r($familiy_data);
// echo '------------------------------------------------------';
foreach($familiy_data as $fkey => $value)
{
if($file['id'] == null || ($value['temp']['source'] == 'excel' || (in_array($value['temp']['grid_type'],[10,11]) && strtolower($value['relationship']) == 'self'))) //insert data come from excel and from db
{
$employee = $this->employeeModel->checkExistingEmp($value);
$policy_data = $value['policy_details'];
unset($value['policy_details']);
unset($value['temp']);
if($file['id'] == null && (strtolower($value['relationship']) == 'self' && $value['temp']['source'] == 'db' && $value['temp']['emp_id'] != null && $value['temp']['emp_policy_id'] != null))
{
//check existing si and new si
$employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first();
if($employee_policy['basic_cover_si'] != $policy_data['basic_cover_si'])
{
//check any existing si enhancement pending
$existing_endorsements = $this->empEndorsementModel->where('actions','si')
->where('table_name','employee_polices')
->where('endorsement_id is null')
->where('emp_code',$employee['emp_code'])
->where('name',$employee['name'])
->where('field_name','basic_cover_si')
->findAll();
if(!count($existing_endorsements))
{
$slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $policy_data['si'])
{
//add new premimum details in endorsement table
$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' => $policy_data['premium'],'created_by' => $file['created_by'],'remarks' => 'da auto si enhancement']);
$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' => 'da auto si enhancement']);
$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' => ($policy_data['date_coverage']),'created_by' => $file['created_by'],'remarks' => 'da auto si enhancement']);
break;
}
}
}
}
break;
}// end of self employee si enhance ment
//save employee table
if(count($employee))
{
$value['updated_by'] = $file['created_by'];
$value['id'] = $employee[0]['id'];
$log_message = 'Update Employee - '.$employee[0]['name'].'('.$employee[0]['emp_code'].') with PK '.$employee[0]['id'];
// $this->myLogger->logme('error',('Update - ' . $employee[0]['id'].' - '. $employee[0]['emp_code'] .' - '.$employee[0]['name']));
}
else
{
$value['emp_status'] = 'active';
$value['created_by'] = $file['created_by'];
$log_message = 'Insert Employee- '.$value['name'] .'('.$value['emp_code'] .') with PK ';
// $this->myLogger->logme('error',('Insert - ' . $value['emp_code'] .' - '. $value['name']));
}
$this->employeeModel->save($value);
$emp_id = $this->employeeModel->getInsertID();
if($emp_id != 0){ $log_message .= $emp_id; }
else{ $emp_id = $employee[0]['id']; }
$this->myLogger->logme('error',$log_message);
//save policy table
$employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $file['policy_id']]);
if(count($employee_policy))
{
$policy_data['updated_by'] = $file['created_by'];
$policy_data['id'] = $employee_policy[0]['id'];
$policy_data['status'] = 'active';
$log_message = 'Update Employee Policy for '. $value['name'].'('. $value['emp_code'].') with PK- ' . $employee_policy[0]['id'] .' client policy ID '.$employee_policy[0]['client_policy_id'].' with SI '.$policy_data['basic_cover_si'];
}
else
{
$policy_data['employee_id'] = $emp_id;
$policy_data['client_policy_id'] = $file['policy_id'];
$policy_data['created_by'] = $file['created_by'];
$policy_data['status'] = 'active';
$log_message = 'Insert Employee Policy for '. $value['name'].'('. $value['emp_code'].') - client policy id -'. $file['policy_id'].' - with SI '.$policy_data['basic_cover_si'];
}
$this->employeePolicyModel->save($policy_data);
$emp_policy_id = $this->employeePolicyModel->getInsertID();
if($emp_policy_id != 0){ $log_message .= ' with PK ' . $emp_policy_id; }
else{ $emp_policy_id = $employee_policy[0]['id']; }
$this->myLogger->logme('error',$log_message);
}// if end
}// for end
}//function end
// ---------------------------------------------------------------------------------
@ -476,5 +990,6 @@ class EmployeeServiceController extends AdminController
// ---------------------------------------------------------------------------------
}

View File

@ -15,8 +15,8 @@ class LoginController extends BaseController
public function index(){
// $session_data = ['isLoggedIn' => True ,'userid' => '4'];
// set_session_data($session_data);
$session_data = ['isLoggedIn' => True ,'userid' => '25'];
set_session_data($session_data);
// $isLoggedIn = check_session();
$isLoggedIn = check_session();
@ -46,19 +46,19 @@ class LoginController extends BaseController
set_session_data($session_data);
log_message('error', 'Set The UserId : `'. $user->id .'` in Session');
log_message('error', 'User Login Sucessfully');
// $this->getUserDeviceInfo($user->id);
$this->getUserDeviceInfo($user->id, 'NhanceUser');
return redirect()->to(base_url('/dashboard/view'));
}else{
log_message('error', 'User Not Activate');
session()->setFlashdata('error', 'User Not Activate');
log_message('error', 'User Not Active');
session()->setFlashdata('error', 'User Not Active');
return redirect()->to(base_url('login'));
}
}else{
log_message('error', 'User Not Register');
session()->setFlashdata('error', 'User Not Register');
log_message('error', 'User Not Registered');
session()->setFlashdata('error', 'User Not Registered');
return redirect()->to(base_url('login'));
}
}

View File

@ -130,7 +130,6 @@ class RestAuthenticationController extends AdminController
try {
$mobile_number = $this->request->getJSON()->mobile_number;
$randomNumber = rand(100000, 999999);
$randomNumber = 123456;
$HrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first();
if ($HrData) {

View File

@ -0,0 +1,10 @@
<?php namespace App\Controllers;
use App\Controllers\BaseController;
class SwaggerController extends BaseController
{
public function index(){
return view('swagger/index');
}
}

View File

@ -18,7 +18,15 @@ class AuthJWT implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
$jwt = $request->getHeader('Authorization');
$jwt ='';
if($request->headers()['Auth']){
$jwt = $request->headers()['Auth'];
}else{
$jwt = $request->getHeader('Authorization');
}
if ($jwt) {
if (JWTToken::validateJWT($jwt)) {

View File

@ -16,7 +16,6 @@ use ReflectionClass;
class JWTToken
{
public static function encode($data =null)
{
$secret_Key="secret";
@ -44,6 +43,7 @@ class JWTToken
{
$jwtParts = explode(' ', $jwt);
// print_r($jwtParts);
if (count($jwtParts) != 2 || $jwtParts[0] == 'Bearer') {
return false;
}

View File

@ -2,6 +2,20 @@
use App\Models\EmployeeModel;
if(!function_exists('calculate_days_bw_dates'))
{
function calculate_days_bw_dates(string $from_date = "", string $to_date ="")
{
if($to_date == ""){ $currentDateTime = new DateTime(); }
else{ $currentDateTime = new DateTime($to_date); }
if($from_date == ""){ $passedDateTime = new DateTime(); }
else{ $passedDateTime = new DateTime($from_date); }
return $interval = $currentDateTime->diff($passedDateTime);
}
}
if (!function_exists('check_columns_name')) {
function check_columns_name($definedColumns,$excelColumns)
{
@ -11,7 +25,7 @@ if (!function_exists('check_columns_name')) {
$definedColIdx = $definedCol['col_idx'];
$definedColName = $definedCol['col_name'];
if (strtolower(trim($excelColumns[$definedColIdx])) !== strtolower($definedColName)) {
if (strtolower(strip_tags(trim($excelColumns[$definedColIdx]))) !== strtolower($definedColName)) {
$mismatchedColumns[] = "Column order conflict. Column order no ".($definedColIdx + 1)." expected : ".$definedColName." and received : ".$excelColumns[$definedColIdx]."<br/>";
}
}
@ -55,23 +69,29 @@ if(!function_exists('check_relationship'))
{
function check_relationship($row,$relationship)
{
// print_r($col);print_r($relationship);
// print_r($relationship);
// echo '<br>';
if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA']))// check rule only of action column data available
{
if($row[5] != null && $row[4] != null)//$row[5] = relationship $row[4] = Gender
{
$slug = \Config\Services::slug();
$col = $slug->slugify($row[5]);
// echo $col;die();
// echo $col;//die();
if($col != 'self' && $col != 'spouse')
{
if($relationship[ $col ]['gender'] != $row[4])
if(!isset($relationship[ $col ]))
{
return array('status' => false,'error' => 'Rule Conflict: Unknown Relationship');
}
if(isset($relationship[ $col ]) && $relationship[ $col ]['gender'] != $row[4])
{
$error = "Gender relationship conflict: Expected ".$relationship[ $col ]['gender'].", received $row[4]";
return array('status' => false,'error' => $error);
}
}
return array('status' => true);
}
@ -90,12 +110,12 @@ if(!function_exists('check_doj'))
function check_doj($row)
{
if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA']))// check rule only of action column data available
{
$slug = \Config\Services::slug();
$relationship = $slug->slugify($row[5]);
// echo $relationship;echo $row[7];
if($relationship == 'self' && $row[7] == "") { return array('status' => false,'error' => "DOJ mandantory for self"); }
if($relationship == 'self' && $row[8] == "") { return array('status' => false,'error' => "DOJ mandantory for self"); }
return array('status' => true);
}
else { return array('status' => true); } // in else condition no need to check rule, just return true
@ -105,14 +125,52 @@ if(!function_exists('check_doj'))
if(!function_exists('check_employee_band'))
{
function check_employee_band($row)
function check_employee_band($row,$policy_terms,$slab_details)
{
if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA']))// check rule only of action column data available
{
$is_emp_band_needed = $slab_details['grid_master']['emp_band'];
$slug = \Config\Services::slug();
$relationship = $slug->slugify($row[5]);
// echo $relationship;echo $row[7];
if($relationship == 'self' && $row[9] == "") { return array('status' => false,'error' => "Band mandantory for self"); }
if($is_emp_band_needed && $relationship == 'self' && $row[10] == "") { return array('status' => false,'error' => "Band mandantory for self"); }
else if($is_emp_band_needed && $relationship == 'self' && $row[10] != "")
{
$received_grade = $row[10];
$found = false;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['grade'] == $received_grade)
{
$found = true;
break;
}
}
if(!$found) { return array('status' => false,'error' => "Emp band/Grade not found"); }
}
return array('status' => true);
}else { return array('status' => true); } // in else condition no need to check rule, just return true
}
}
if(!function_exists('check_si'))
{
function check_si($row,$policy_terms,$slab_details)
{
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA','SI']))// check rule only of action column data available
{
$received_si = $row['current_action'] == 'SI' ? $row[3] : $row[6];
$found = false;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $received_si)
{
$found = true;
break;
}
}
if(!$found) { return array('status' => false,'error' => "Sum insured not found"); }
return array('status' => true);
}else { return array('status' => true); } // in else condition no need to check rule, just return true
}
@ -120,14 +178,15 @@ if(!function_exists('check_employee_band'))
if(!function_exists('check_basic_pay'))
{
function check_basic_pay($row)
function check_basic_pay($row,$policy_terms,$slab_details)
{
if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA']))// check rule only of action column data available
{
$is_basic_pay_needed = $slab_details['grid_master']['basicpay'];
$slug = \Config\Services::slug();
$relationship = $slug->slugify($row[5]);
// echo $relationship;echo $row[7];
if($relationship == 'self' && $row[8] == "") { return array('status' => false,'error' => "Basic pay mandantory for self"); }
if($is_basic_pay_needed && $relationship == 'self' && $row[9] == "") { return array('status' => false,'error' => "Basic pay mandantory for self"); }
return array('status' => true);
}else { return array('status' => true); } // in else condition no need to check rule, just return true
}
@ -138,7 +197,7 @@ if (!function_exists('check_dob_diff'))
{
function check_dob_diff($row,$relationships) {
// echo 'called';
if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available
if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA']))// check rule only of action column data available
{
if($row[3] != null && $row[5] != null)
{
@ -150,8 +209,8 @@ if (!function_exists('check_dob_diff'))
$slug = \Config\Services::slug();
$relationship = $slug->slugify($row[5]);
$age_min = $relationships[$relationship]['age_min'];
$age_max = $relationships[$relationship]['age_max'];
$age_min = isset($relationships[$relationship]['age_min']) ? $relationships[$relationship]['age_min'] : NULL;
$age_max = isset($relationships[$relationship]['age_max']) ? $relationships[$relationship]['age_max'] : NULL;
// echo $relationship.','.$age_min.'-'.$age_max;
if($age_min !== null && $age_min > $interval->y)
{
@ -173,14 +232,21 @@ if (!function_exists('check_dob_diff'))
if (!function_exists('data_group_by_family'))
{
function data_group_by_family($emp_data)
function data_group_by_family($emp_data,$data_source = 'excel')
{
$result = [];
foreach ($emp_data as $rkey => $row)
{
if(!check_row_is_empty_or_null($row))
if($data_source == 'excel')
{
$result[$row[1]][] = $row;
if(!check_row_is_empty_or_null($row))
{
$result[$row[1]][] = $row;
}
}else if($data_source = 'db')
{
$result[$row['emp_code']][] = $row;
}
}
@ -216,10 +282,14 @@ if (!function_exists('name_dup_check_within_family'))
if (!function_exists('name_and_empid_check_in_db'))
{
function name_and_empid_check_in_db($family_data,$client_id,$policy_id)
function name_and_empid_check_in_db($family_data,$actionArr)
{
$employeeModel = new EmployeeModel();
$result = ['del' => [],'i' => []];
$client_id = $actionArr['client_id'];
$policy_id = $actionArr['policy_id'];
$current_action = $actionArr['action'];
foreach ($family_data as $rkey => $row)
{
$res = $employeeModel
@ -227,22 +297,23 @@ if (!function_exists('name_and_empid_check_in_db'))
->join('employee_polices ep',"cp.id = ep.client_policy_id AND employees.id = ep.employee_id")
->where("cp.policy_id",$policy_id)
->where("employees.client_id",$client_id)
->like('name',$row[2],'both')->like('emp_code',$row[1],'both')
// ->where("ep.client_id",$client_id)
->where('name',$row[2])->where('emp_code',$row[1])
->findAll();
if(count($res))
{
if($row[17] == 'D')
// dd($employeeModel);
if(($current_action == 'deletion' || $current_action == 'correction' || $current_action == 'si_enhancement') && !count($res))
{
array_push($result['del'],$row[0]);
}
else
if(($current_action == 'inception' || $current_action == 'dependent_addition' || $current_action == 'addition') && count($res))
{
array_push($result['i'],$row[0]);
}
}
}
return $result;
@ -251,7 +322,7 @@ if (!function_exists('name_and_empid_check_in_db'))
if (!function_exists('check_dependent_conflict'))
{
function check_dependent_conflict($family_data,$policy_terms)
function check_dependent_conflict($family_data,$policy_terms,$actionArr)
{
$result = ['status' => true];
@ -267,24 +338,26 @@ if (!function_exists('check_dependent_conflict'))
$allowed_parent_in_laws_count = 0;
$received_parent_in_laws_count = 0;
$overall_famility_relationships = [];
$self_emp_row_id = 0;
$temp_counts = [2,3,4,5,6,7,8,9,10]; //temp variable for check relation repetaed count
$slug = \Config\Services::slug();
if($policy_terms['family_floater'] == true)
{
// if($policy_terms['family_floater'] == true)
// {
// $temp_string = implode(" ",$policy_terms['family_floaters']);
$temp = $policy_terms['family_floaters'];
$allowed_child_count = count(preg_grep('/child/',$temp));
$allowed_spouse_count = count(preg_grep('/spouse/',$temp));
$allowed_parents_count = count(preg_grep('/parent[12]/',$temp));
$allowed_parent_in_laws_count = count(preg_grep('/parent_in_law[12]/',$temp));
$allowed_child_count = $temp['childrens'];
$allowed_spouse_count = $temp['spouse'];
$allowed_adults = $temp['either-parents-pil'];
$allowed_parents_count = $temp['either-parents-pil'] == 0 ? $temp['parents'] : 0;
$allowed_parent_in_laws_count = $temp['either-parents-pil'] == 0 ? $temp['parents-in-law'] : 0;
// dd($allowed_adults == 0);
foreach ($family_data as $key => $row)
{
$relationship = $slug->slugify($row[5]);
if($row[17] != 'D' && $relationship != 'son' && $relationship != 'daughter')
if($actionArr != 'deletion' && $relationship != 'son' && $relationship != 'daughter')
{
array_push($overall_famility_relationships, $relationship);
}
@ -293,6 +366,7 @@ if (!function_exists('check_dependent_conflict'))
if($relationship == 'self')
{
$self_gender = $row[4];
$self_emp_row_id = $row[0];
}
if($relationship == 'spouse')
{
@ -316,7 +390,7 @@ if (!function_exists('check_dependent_conflict'))
// print_r($overall_famility_relationships);
// echo '<br/>';
if($row[17] != 'D')
if($actionArr != 'deletion')
{
$repeated_relationships_count = array_count_values($overall_famility_relationships);
// print_r($repeated_relationships_count);
@ -325,7 +399,7 @@ if (!function_exists('check_dependent_conflict'))
if(is_array($repeated_count) && count($repeated_count))
{
$result['status'] = false;
$result['error_data'][] = ['code' => 13,'col_name' => 'relationship','msg' => 'Rule conflict: Twofold relationship found within family'];
$result['error_data'][] = ['code' => 13,'col_name' => 'relationship','msg' => 'Rule conflict: Twofold relationship found within family','row_id' => $family_data[0][0]];
}
}
// print_r($repeated_count);
@ -339,29 +413,492 @@ if (!function_exists('check_dependent_conflict'))
if($self_gender == $spouse_gender)
{
$result['status'] = false;
$result['error_data'][] = ['code' => 4,'col_name' => 'gender','msg' => 'Rule conflict: Self and Spouse cannot be same gender'];
$result['error_data'][] = ['code' => 4,'col_name' => 'gender','msg' => 'Rule conflict: Self and Spouse cannot be same gender','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];
}
if(($allowed_spouse_count < $received_spouse_count) || ($allowed_child_count < $received_child_count) || ($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count))
if(($allowed_spouse_count < $received_spouse_count) || ($allowed_child_count < $received_child_count) )
{
$result['status'] = false;
$result['error_data'][] = ['code' => 12,'col_name' => null,'msg' => 'Rule conflict: Dependent count greater than allowed dependent count'];//dependent count mismatch
$result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Dependent count greater than allowed dependent count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch
}
}
else
{
if(count($family_data) > 1)
// || ($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count)
if($allowed_adults == 1 && $received_parents_count && $received_parent_in_laws_count )
{
$result['status'] = false;
$result['error_data'][] = ['code' => 11,'col_name' => null,'msg' => 'Rule conflict: Dependents not allowed'];//dependents not allowed
$result['status'] = false;
$result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Parents and Parents in law both not allowed','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];
if((2 < $received_parents_count) || (2 < $received_parent_in_laws_count))
{
$result['status'] = false;
$result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Dependent count greater than allowed dependent count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch
}
}
}
// var_dump($allowed_adults == 0);
// dd($allowed_adults == 0 && (($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count)));
if($allowed_adults == 0 && (($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count) ))
{
// dd($allowed_adults);
$result['status'] = false;
$result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Dependent count greater than allowed dependent count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch
}
// }
// else
// {
// if(count($family_data) > 1)
// {
// $result['status'] = false;
// $result['error_data'][] = ['code' => 11,'col_name' => 'sno','msg' => 'Rule conflict: Dependents not allowed','row_id' => $row[0]];//dependents not allowed
// }
// }
return $result;
}
}
if (!function_exists('generate_relationship_code'))
{
function generate_relationship_code($arr)
{
$gender = ['M' => 1,'F' => 2];
$relationship = ['self' => 1,'spouse' => 2,'son' => 3,'daughter' => 4,'father' => 5,'mother' => 6,'father-in-law' => 7,'mother-in-law' => 8];
$slug = \Config\Services::slug();
$relationship_code = $slug->slugify($arr['relationship']);
$relationship_code = $gender[ $arr['gender'] ] . $relationship[ $relationship_code ] ;
return $relationship_code;
}
}
if (!function_exists('calculate_premimum'))
{
function calculate_premimum($family_data,$policy_terms,$slab_details,$fileArr)
{
//
// dd($fileArr);
// grid type
// 1 = premium => si
$result = [];
$grid_type = $slab_details['grid_master']['ui_type'];
$fileArr['grid_type'] = $grid_type;
//this variable for store emp id and their band for emp band level premium calculation for all famility members (especially for grid type 9) also store max age and max count of a familiy for grid type 10,11
$emp_details_with_empband_max_age_max_count = [];
//max age amoung familiy
$max_age = max(array_map(function($item) {return calculate_days_bw_dates(from_date: $item[3])->y; }, $family_data));
foreach($family_data as $fkey => $member)
{
//transform as db row column
$transformed_familiy_member_data = transform_excel_data_to_db($member,$fileArr);
// dd($transformed_familiy_member_data);
//store emp id and emp band and attach it to their familiy members where band is always empty
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] = null;
if(strtolower($transformed_familiy_member_data['relationship']) == 'self')
{
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] = $transformed_familiy_member_data['band'];
}
//end of store emp id and emp band and attach it to their familiy members where band is always empty
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxcount'] =count($family_data);
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxage'] = $max_age;
//generate relationship code
if($transformed_familiy_member_data['temp']['action'] != 'D' && $transformed_familiy_member_data['temp']['action'] != 'C' && $transformed_familiy_member_data['temp']['action'] != 'SI')
{
$transformed_familiy_member_data['relationship_code'] = generate_relationship_code($transformed_familiy_member_data);
}
//calculate primimum based on grid type
if($transformed_familiy_member_data['temp']['action'] != 'D' && $transformed_familiy_member_data['temp']['action'] != 'C' && $transformed_familiy_member_data['temp']['action'] != 'SI')
{
//before call premium_calculation_manager attach band,max age and max count into the array temporarly for grid 9,10 and 11
$transformed_familiy_member_data['temp']['band'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'];
$transformed_familiy_member_data['temp']['maxage'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxage'];
$transformed_familiy_member_data['temp']['maxcount'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxcount'];
if( $fileArr['id'] == null || (in_array($grid_type,[10,11]) || $transformed_familiy_member_data['temp']['source'] == 'excel'))//if file id is null then data coming from enrollment (from DB) otherwise data coming from xcel, so calculate only data from excel (new entry) note: even data coming from excel for event dependet additon we fetch other dependts from db and calculate premium for whole family
{
$transformed_familiy_member_data = premium_calculation_manager($transformed_familiy_member_data,$policy_terms,$slab_details);
$result[] = $transformed_familiy_member_data;
}
}
}
return $result;
}
}
if (!function_exists('transform_excel_data_to_db'))
{
function transform_excel_data_to_db($memArr,$actionArr)
{
$current_column_action = null;
if($actionArr['action'] == 'inception'){ $current_column_action = 'I'; }
else if($actionArr['action'] == 'addition'){ $current_column_action = 'A'; }
else if($actionArr['action'] == 'dependent_addition'){ $current_column_action = 'DA'; }
else if($actionArr['action'] == 'deletion'){ $current_column_action = 'D'; }
else if($actionArr['action'] == 'correction'){ $current_column_action = 'C'; }
else if($actionArr['action'] == 'si_enhancement'){ $current_column_action = 'SI'; }
if($actionArr['action'] == 'inception' || $actionArr['action'] == 'addition' || $actionArr['action'] == 'dependent_addition')
{
$policy['basic_cover_si'] = $memArr[6];
$policy['pre_existing_alignments'] = $memArr[14];
$policy['date_of_exit'] = isset($memArr[16]) ? change_date_format($memArr[16],'d-M-Y','Y-m-d') : NULL;
$policy['reason_for_exit'] = $memArr[17];
$policy['client_policy_id'] = $actionArr['policy_id'];
$policy['date_coverage'] = isset($memArr[7]) ? change_date_format($memArr[7],'d-M-Y','Y-m-d') : NULL;;
$policy['policy_end_date'] = null;
$policy['days'] = null;
$policy['premium'] = null;
$policy['rata_premimum'] = null;
$policy['gst'] = null;
$result['emp_code'] = $memArr[1];
$result['name'] = $memArr[2];
$result['dob'] = isset($memArr[3]) ? change_date_format($memArr[3],'d-M-Y','Y-m-d') : NULL;
$result['gender'] = $memArr[4];
$result['relationship'] = $memArr[5];
$result['relationship_code'] = $memArr[5];
$result['doj'] = isset($memArr[8]) ? change_date_format($memArr[8],'d-M-Y','Y-m-d') : NULL;
$result['basic_pay'] = $memArr[9];
$result['band'] = $memArr[10];
$result['designation'] = $memArr[11];
$result['mobile'] = $memArr[12];
$result['email_corporate'] = $memArr[13];
$result['file_id'] = $actionArr['id'];
$result['client_id'] = $actionArr['client_id'];
$result['change_event'] = $memArr[15];
$result['temp']['grid_type'] = $actionArr['grid_type'];
$result['temp']['action'] = isset($memArr['current_action']) ? $memArr['current_action'] : $current_column_action;
$result['temp']['source'] = isset($memArr['temp']['source']) ? $memArr['temp']['source'] : 'excel';
$result['temp']['emp_id'] = isset($memArr['temp']['emp_id']) ? $memArr['temp']['emp_id'] : null;
$result['temp']['emp_policy_id'] = isset($memArr['temp']['emp_policy_id']) ? $memArr['temp']['emp_policy_id'] : null;
$result['policy_details'] = $policy;
return $result;
}
}
}
if (!function_exists('premium_calculation_manager'))
{
function premium_calculation_manager($emp_data,$policy_terms,$slab_details)
{
// grid type
// 1 = premium => si
$grid_type = $slab_details['grid_master']['ui_type'];
switch ($grid_type) {
case "1":
//GPA - Sum Insured (SI) * Multiplier
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$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'];
$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;
}
}
break;
case "2":
//GPA - Flat Rate for all SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$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'];
$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;
}
}
break;
case "3":
//GMC - SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$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'];
$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;
}
}
break;
case "4":
//GMC - Employees Age band
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
$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'];
$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;
}
}
break;
case "5":
//GMC - Employees Age + SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
$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'];
$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;
}
}
break;
case "6":
//GMC - Employees + Dependent Age band
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
$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'];
$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;
}
}
break;
case "7":
//GMC - Employees + Dependent Age + SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
$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($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']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','');
break;
}
}
break;
case "8":
//GMC - SI as per Grade or Band
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si)
{
// $emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$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($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']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','');
break;
}
}
break;
case "9":
//GMC - Flat Rate for all
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si)
{
// $emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$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($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']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','');
break;
}
}
break;
case "10":
//GMC - Maximum age of Dependents
$max_age = $emp_data['temp']['maxage'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$emp_data['policy_details']['basic_cover_si'] = null;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $max_age && $slab_value['age_to'] >= $max_age))
{
$emp_data['policy_details']['date_coverage'] = (strtolower($emp_data['relationship']) == 'self' ? (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'] = (strtolower($emp_data['relationship']) == 'self' ? $policy_terms['policy_end_date'] : "");
$emp_data['policy_details']['days'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days : 0);
$emp_data['policy_details']['premium'] = (strtolower($emp_data['relationship']) == 'self' ? $slab_value['premium'] : 0);
$emp_data['policy_details']['rata_premimum'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']) : 0);
$emp_data['policy_details']['gst'] = (strtolower($emp_data['relationship']) == 'self' ? ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')) : 0);
break;
}
}
break;
case "11":
//GMC - Maximum count per Family
$max_count = $emp_data['temp']['maxage'];
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$emp_data['policy_details']['basic_cover_si'] = null;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si && ($slab_value['grade'] == $employee_received_band))
{
//calculate premium based on count
$famility_si_covered = $employee_received_si * $max_count;
$famility_si_covered = ($famility_si_covered >= $slab_value['max_si'] ? $slab_value['max_si'] : $famility_si_covered);
$emp_data['policy_details']['basic_cover_si'] = (strtolower($emp_data['relationship']) == 'self' ? $famility_si_covered : 0);
$emp_data['policy_details']['date_coverage'] = (strtolower($emp_data['relationship']) == 'self' ? (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'] = (strtolower($emp_data['relationship']) == 'self' ? $policy_terms['policy_end_date'] : "");
$emp_data['policy_details']['days'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days : 0);
$emp_data['policy_details']['premium'] = (strtolower($emp_data['relationship']) == 'self' ? $slab_value['premium'] : 0);
$emp_data['policy_details']['rata_premimum'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']) : 0);
$emp_data['policy_details']['gst'] = (strtolower($emp_data['relationship']) == 'self' ? ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')) : 0);
break;
}
}
break;
default:
echo "Not a valid grid";
}
// unset($emp_data['temp']);//remove temp data
return $emp_data;
}
}
if (!function_exists('calculate_pro_rata_premimum'))
{
function calculate_pro_rata_premimum($premium,$days)
{
return (float) number_format(($premium / 365) * $days,2,'.','');
}
}
//transform db columns into excel rows with indexs
if (!function_exists('transform_db_data_to_excel'))
{
function transform_db_data_to_excel($familiyArr,$actionArr = [])
{
// if($actionArr['action'] == 'dependent_addition')
// {
$return_data = [];
foreach ($familiyArr as $key => $value)
{
// dd($value);
$row = [];
$row[0] = ($key + 1);
$row[6] = $value['basic_cover_si'];
$row[14] = $value['pre_existing_alignments'];
$row[16] = isset($value['date_of_exit']) ? change_date_format($value['date_of_exit'], 'Y-m-d', 'd-M-Y') : NULL;
$row[17] = $value['reason_for_exit'];
$row[7] = isset($value['date_coverage']) ? change_date_format($value['date_coverage'], 'Y-m-d', 'd-M-Y') : NULL;
$row[1] = $value['emp_code'];
$row[2] = $value['name'];
$row[3] = isset($value['dob']) ? change_date_format($value['dob'], 'Y-m-d', 'd-M-Y') : NULL;
$row[4] = $value['gender'];
$row[5] = $value['relationship'];
$row[8] = isset($value['doj']) ? change_date_format($value['doj'], 'Y-m-d', 'd-M-Y') : NULL;
$row[9] = $value['basic_pay'];
$row[10] = $value['band'];
$row[11] = $value['designation'];
$row[12] = $value['mobile'];
$row[13] = $value['email_corporate'];
// $actionArr['id'] = $value['file_id'];
// $actionArr['client_id'] = $value['client_id'];
$row[15] = $value['change_event'];
$row['current_action'] = 'DA';
$row['temp']['source'] = 'db';
$row['temp']['emp_id'] = $value['emp_id'];
$row['temp']['emp_policy_id'] = $value['emp_policy_id'];
array_push($return_data, ($row));
}
return $return_data;
// }
}
}

View File

@ -37,6 +37,8 @@ class ClientPolicyModel extends Model
"created_by",
"updated_by",
"Is_active",
"date_of_exit",
"reason_for_exit"
];
public function getClientPolicyById($id){
@ -99,11 +101,11 @@ class ClientPolicyModel extends Model
}
public function getPolicyTermsJson($client_id,$policy_id)
public function getPolicyDetails($client_id,$policy_id)
{
return $this->select('policy_terms')
return $this->select('*')
->where('client_id',$client_id)
->where('policy_id',$policy_id)
->where('id',$policy_id)
->get()
->getResult();

View File

@ -10,7 +10,7 @@ class EmpEndorsementModel extends Model
protected $primaryKey = 'id';
protected $allowedFields = [
'id',
'emp_id',
'pk',
'endorsement_id',
'emp_code',
'table_name',
@ -19,10 +19,12 @@ class EmpEndorsementModel extends Model
'field_name',
'old_value',
'new_value',
'date_of_correction',
'status',
"created_by",
"updated_by",
"is_active",
"remarks"
];
}

View File

@ -13,6 +13,8 @@ class EmployeeModel extends Model
"client_id",
"employee_id",
"change_event",
"relationship",
"relationship_code",
"relationship_id",
"relationship",
"batch_id",
@ -24,6 +26,8 @@ class EmployeeModel extends Model
"gender",
"dob",
"doj",
"basic_pay",
"band","designation",
"otp",
"family_floater_key",
"emp_status",
@ -31,6 +35,7 @@ class EmployeeModel extends Model
"updated_by",
"updated_at",
"is_active",
"file_id"
];
// Callbacks
@ -67,7 +72,53 @@ class EmployeeModel extends Model
}
// ------------------------------------------------------------------------------------------------
// for emp onboard process do not change
public function checkExistingEmp($arr)
{
return $this->where('emp_code',$arr['emp_code'])
->where('name',$arr['name'])
->where('client_id',$arr['client_id'])
// ->where('relationship_code',$arr['relationship_code'])
->where('gender',$arr['gender'])
->where('dob',$arr['dob'])
->find();
}
public function getEmpFamilybyEmpCode(string $client_policy_id = null,string $emp_code = null,string $client_id = null,string $emp_status = null)
{
$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)
->when($client_policy_id, function($query) use ($client_policy_id){
return $query->where('employee_polices.client_policy_id',$client_policy_id);
})
->where('employee_polices.is_active',1)
->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($client_id, function($query) use ($client_id){
return $query->where('employees.client_id',$client_id);
})
->findAll();
// dd($this->db->getLastQuery());
return ($result);
}
public function getEmployeePolicy($id)
{
@ -80,16 +131,10 @@ class EmployeeModel extends Model
->getResult();
}
// for EMP rest API process do not change
public function checkExistingEmployee($arr)
{
return $this->where('emp_code',$arr['emp_code'])->where('name',$arr['name'])->where('client_id', $arr['client_id'])->first();
}
}

View File

@ -84,7 +84,18 @@ class EmployeePolicyModel extends Model
return ($result);
}
//------------------------------------------------------------------
//for emp onboard do not change
public function checkExistingEmpPolicy($arr)
{
return $this->where('employee_id',$arr['employee_id'])
->where('client_policy_id',$arr['client_policy_id'])
->find();
}
//------------------------------------------------------------------
public function getInceptionEmployeeDataForExportExcel($ref_data)
{
@ -527,13 +538,13 @@ class EmployeePolicyModel extends Model
}
//for emp onboard do not change
public function checkExistingEmpPolicy($arr)
{
return $this->where('employee_id',$arr['employee_id'])
->where('client_policy_id',$arr['client_policy_id'])
->find();
}
// //for emp onboard do not change
// public function checkExistingEmpPolicy($arr)
// {
// return $this->where('employee_id',$arr['employee_id'])
// ->where('client_policy_id',$arr['client_policy_id'])
// ->find();
// }
public function updateSiAndPremium( $client_policy_id, $employee_id,$basic_cover_si,$premium)
@ -550,4 +561,5 @@ class EmployeePolicyModel extends Model
}
//------------------------------------------------------------------
}

View File

@ -5,6 +5,9 @@ use App\Models\PolicyPremium1Model;
use App\Models\PolicyPremium2Model;
use App\Models\PolicyGridModel;
use CodeIgniter\Model;
use App\Models\PolicyGridModel;
use App\Models\PolicyPremium1Model;
use App\Models\PolicyPremium2Model;
class PolicesModel extends Model
{
@ -32,23 +35,26 @@ class PolicesModel extends Model
}
public function getPolicySlabRatesForEmpOnboard($policy_id,$client_id)
{
$premium_slab_data = null;
$policyPremium1Model = new PolicyPremium1Model();
$premium_slab_data = $policyPremium1Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1])->findAll();
if((!count($premium_slab_data)))
{
$policyPremium2Model = new PolicyPremium2Model();
$premium_slab_data = $policyPremium2Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1])->findAll();
}
$grid_id = $premium_slab_data[0]['policy_grid_id'];
$policyGridModel = new PolicyGridModel();
$results = $policyGridModel->find($grid_id);
return ['slab_rates' => $premium_slab_data,'grid_master' => $results];
public function getPolicySlabRatesForEmpOnboard($policy_id,$client_id)
{
$premium_slab_data = null;
$policyPremium1Model = new PolicyPremium1Model();
$premium_slab_data = $policyPremium1Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1])->findAll();
// dd($premium_slab_data);
if(is_array($premium_slab_data) && !count($premium_slab_data))
{
// echo '2';
$policyPremium2Model = new PolicyPremium2Model();
$premium_slab_data = $policyPremium2Model->where(['client_id' => $client_id, 'client_policy_id' => $policy_id, 'is_active' => 1])->findAll();
}
$grid_id = $premium_slab_data[0]['policy_grid_id'];
$policyGridModel = new PolicyGridModel();
$results = $policyGridModel->find($grid_id);
return ['slab_rates' => $premium_slab_data,'grid_master' => $results];
}
}

View File

@ -281,29 +281,70 @@ function fetchFileError(file_id) {
console.log('fetchFileError');
console.log(apiURL);
$.ajax({
url: apiURL,
method: 'GET',
headers: {
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
// console.log(response.code);
// console.log(response.dataStatus);
// console.log(response.data);
$(this).find(".modal-body").html("");
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
try {
console.log((JSON.parse(response.data)));
var file_error_data = (JSON.parse(response.data));
var file_error_html = "";
for (var key in file_error_data['error_summary']) {
console.log(key);
var err_id = key;
var err_count = file_error_data['error_summary'][key];
// for (var ckey in col)
// {
url: apiURL,
method: 'GET',
headers: {
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
$(this).find(".modal-body").html("");
if (response.code === 200 && response.dataStatus === true && response.data !== "")
{
try {
console.log((JSON.parse(response.data)));
var file_error_data = (JSON.parse(response.data));
var file_error_html = "";
for (var key in file_error_data['error_summary']) {
console.log(key);
var err_id = key;
var err_count = file_error_data['error_summary'][key];
switch (err_id) {
case 1:
file_error_html += "<strong>Mandatory values missing</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 2:
file_error_html += "<strong>Values not in expected format</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 3:
file_error_html += "<strong>Field contains not allowed values</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 4:
file_error_html += "<strong>Rule Conflict</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 5:
file_error_html += "<strong>" + file_error_data['error_data'] + "</strong>";
break;
case 6:
file_error_html += "<strong>" + file_error_data['error_data'] + "</strong>";
break;
case 7:
file_error_html += "<strong>Duplicate entry in file</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 8:
file_error_html += "to be config";
break;
case 9:
file_error_html += "<strong>Duplicate entry</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 10:
file_error_html += "<strong>Duplicate entry in file</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 11:
file_error_html += "<strong>Rule conflict: Dependents not allowed</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 12:
file_error_html += "<strong>Rule conflict: Dependent count greater than allowed dependent count</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
case 13:
file_error_html += "<strong>Rule conflict: Twofold relationship found within family</strong> <span class='badge badge-danger float-right'>" + err_count + "</span>";
break;
default:
file_error_html += "";
break;
}
file_error_html += (err_id == 1 ?
"<strong>Mandatory values missing</strong> <span class='badge badge-danger float-right'>" +
err_count + "</span>" : (err_id == 2 ?
@ -327,6 +368,7 @@ function fetchFileError(file_id) {
"employee/excel_error/" + file_id +
"' target=_blank>click here to more details...</a>" : "");
}
console.log(file_error_html);
$('#file-err-modal').find(".modal-body").html(file_error_html);
return file_error_html;

View File

@ -394,7 +394,7 @@
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
<img src="<?= base_url()."public"; ?>/assets/images/users/avatar-1.jpg" alt="user-image" class="rounded-circle">
<span class="pro-user-name ml-1" style="font-size: 16px;" >
<?= get_session_userdata()->first_name ?>
<?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?>
<!-- <i class="mdi mdi-chevron-down"></i> -->
</span>
</a>

View File

@ -109,20 +109,35 @@
</div>
<div class="col-md-6">
</div>
<div class="col-md-6">
<div>
<input type="checkbox" name="family_floaters[]" value="self" id="self" checked disabled> Self
<input type="checkbox" name="family_floaters[]" value="spouse" id="spouse"> Spouse
<input type="checkbox" name="family_floaters[]" value="child1" id="child1"> Child 1
<input type="checkbox" name="family_floaters[]" value="child2" id="child2"> Child 2
<input type="checkbox" name="family_floaters[]" value="child3" id="child3"> Child 3
<input type="checkbox" name="family_floaters[]" value="child4" id="child4"> Child 4
<div class="col-md-6" style="margin-bottom:10px">
<div style="margin-top:10px">
<span style="margin-right: 20px;">Self:</span>
<input type="checkbox" style="margin-right: 70px;" name="family_floaters[]" value="self" id="self" checked>
<span style="margin-right: 20px;">Spouse:</span>
<input type="checkbox" style="margin-right: 70px;"name="family_floaters[]" value="spouse" id="spouse">
</div>
<div style="margin-top:10px">
<input type="checkbox" name="family_floaters[]" value="parent1" id="parent1"> Parent 1
<input type="checkbox" name="family_floaters[]" value="parent2" id="parent2"> Parent 2
<input type="checkbox" name="family_floaters[]" value="parent_in_law1" id="parent_in_law1"> Parent-In-Law 1
<input type="checkbox" name="family_floaters[]" value="parent_in_law2" id="parent_in_law2"> Parent-In-Law 2
<span for="children">Children:</span>
<select name="family_floaters[]" id="children" style="margin-left: 109px;">
<option value="0">None</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
<div style="margin-top:10px">
<span for="family_floaters">Select Other Members:</span>
<select name="family_floaters[]" id="family_floaters" style="margin-left: 10px;">
<option value="0">None</option>
<option value="1P">Only one parent (Either Father / Mother)</option>
<option value="2P">Only two parents (Father+Mother)</option>
<option value="1PIL">Only one parent in law (Either MIL / FIL)</option>
<option value="2PIL">Only two parents in law (FIL + MIL)</option>
<option value="2EPORPIL">Parents or PIL (Any two of Father, Mother, MIl, FIL)</option>
<option value="EPORPIL">Either Parents or PIL (Parents or Parents In Law)</option>
<option value="4EPORPIL">Parents + PIL (Father + Mother + MIL + FIL)</option>
</select>
</div>
</div>
</div>
@ -683,12 +698,37 @@ var grid_html = '';
if (key.includes("family_floaters")) {
let checkboxes = document.querySelectorAll(`input[name="${key}[]"]`);
if (jsonObject[key]) {
jsonObject[key].forEach(element => {
let checkbox = $(`#${element}`);
if (checkbox.is(":checkbox")) {
checkbox.prop("checked", true);
}
});
console.log(jsonObject[key]);
if (jsonObject[key].childrens) {
$('#children').val(jsonObject[key].childrens);
}
if (jsonObject[key].self == 0) {
$('#self').prop('checked', false);
}
if (jsonObject[key].spouse == 0) {
$('#spouse').prop('checked', false);
}else{
$('#spouse').prop('checked', true);
}
if(jsonObject[key]['either-parents-pil'] == 1){
$('#family_floaters').val('EPORPIL');
}else if(jsonObject[key].parents == 1 && jsonObject[key]['parents-in-law'] == 1){
$('#family_floaters').val('2EPORPIL');
}else if(jsonObject[key].parents == 2 && jsonObject[key]['parents-in-law'] == 2){
$('#family_floaters').val('4EPORPIL');
}else if(jsonObject[key].parents == 1){
$('#family_floaters').val('1P');
}else if(jsonObject[key].parents == 2){
$('#family_floaters').val('2P');
}else if(jsonObject[key]['parents-in-law'] == 1){
$('#family_floaters').val('1PIL');
}else if(jsonObject[key]['parents-in-law'] == 2){
$('#family_floaters').val('2PIL');
}
}
}

View File

@ -0,0 +1,60 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="<?= base_url('assets/swagger/swagger-ui.css') ?>">
<link rel="icon" type="image/png" href="<?= base_url('assets/swagger/favicon-32x32.png') ?> sizes=" 32x32" />
<link rel="icon" type="image/png" href="<?= base_url('assets/swagger/favicon-16x16.png') ?> sizes=" 16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="<?= base_url('assets/swagger/swagger-ui-bundle.js') ?>">console.log(base_url); </script>
<script src="<?= base_url('assets/swagger/swagger-ui-standalone-preset.js') ?>"> </script>
<script>
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "<?= base_url('assets/api.yaml') ?>",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
// End Swagger UI call region
window.ui = ui
}
</script>
</body>
</html>

View File

@ -21,7 +21,8 @@
"phpmailer/phpmailer": "^6.9",
"phpoffice/phpspreadsheet": "^2.0",
"psr/log": "^1.1",
"slim/slim": "^4.13"
"slim/slim": "^4.13",
"zircote/swagger-php": "^4.8"
},
"require-dev": {
"codeigniter/coding-standard": "^1.7",

890
public/assets/api.yaml Normal file
View File

@ -0,0 +1,890 @@
openapi: 3.0.0
paths:
'/nhance/employeeRest/verifyEmployeeNumber':
post:
tags:
- Login
summary: 'Add a new VerifyEmployeeNumber to the store'
operationId: VerifyEmployeeNumber
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
multipart/form-data:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
responses:
'201':
description: 'Upload VerifyEmployeeNumber'
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyEmployeeNumber'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getVerifiedUserData':
post:
tags:
- Login
summary: ' GetVerifiedUserData'
operationId: GetVerifiedUserData
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
otp:
type: string
description: otp
multipart/form-data:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
otp:
type: string
description: otp
responses:
'201':
description: 'GetVerifiedUserData'
content:
application/json:
schema:
$ref: '#/components/schemas/GetVerifiedUserData'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/verifyHrWithMobileNumber':
post:
tags:
- Login
summary: 'VerifyHrWithMobileNumber'
operationId: VerifyHrWithMobileNumber
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
multipart/form-data:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
responses:
'201':
description: 'VerifyHrWithMobileNumber'
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyHrWithMobileNumber'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getVerifiedHrData':
post:
tags:
- Login
summary: ' GetVerifiedHrData'
operationId: GetVerifiedHrData
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
otp:
type: string
description: otp
multipart/form-data:
schema:
type: object
properties:
mobile_number:
type: string
description: mobile_number
otp:
type: string
description: otp
responses:
'201':
description: 'GetVerifiedHrData'
content:
application/json:
schema:
$ref: '#/components/schemas/GetVerifiedHrData'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/employeeUpload':
post:
tags:
# - EmployeeUpload
summary: 'Add a new EmployeeUpload to the store'
operationId: EmployeeUpload
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
client_id:
type: integer
description: client_id
policy_id:
type: integer
description: policy_id
file:
type: string
format: binary
description: File to upload
application/json:
schema:
type: object
properties:
client_id:
type: integer
description: client_id
policy_id:
type: integer
description: policy_id
responses:
'201':
description: 'Upload EmployeeUpload'
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeeUpload'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/getEmployeeProfile':
get:
tags:
# - EmployeeUpload
summary: 'GetEmployeeProfile'
operationId: GetEmployeeProfile
parameters:
- name: emp_code
in: query
description: an authorization header
required: true
type: string
responses:
'201':
description: 'GetEmployeeProfile'
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmployeeProfile'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/editEmployeeProfile':
post:
tags:
# - EmployeeUpload
summary: 'EditEmployeeProfile'
operationId: EditEmployeeProfile
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: The ID of the employee.
client_id:
type: string
description: The ID of the client.
relationship:
type: string
description: The relationship of the employee.
relationship_code:
type: string
description: The code representing the relationship.
change_event:
type: string
description: The change event associated with the employee.
batch_id:
type: string
description: The ID of the batch.
emp_code:
type: string
description: The code of the employee.
name:
type: string
description: The name of the employee.
email_personal:
type: string
description: The personal email of the employee.
email_corporate:
type: string
description: The corporate email of the employee.
mobile:
type: string
description: The mobile number of the employee.
gender:
type: string
description: The gender of the employee.
dob:
type: string
format: date
description: The date of birth of the employee.
doj:
type: string
format: date
description: The date of joining of the employee.
basic_pay:
type: string
description: The basic pay of the employee.
band:
type: string
description: The band of the employee.
designation:
type: string
description: The designation of the employee.
emp_status:
type: string
description: The status of the employee.
is_active:
type: string
description: Indicates if the employee is active.
file_id:
type: string
description: The ID of the file associated with the employee.
responses:
'201':
description: 'EditEmployeeProfile'
content:
application/json:
schema:
$ref: '#/components/schemas/EditEmployeeProfile'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/relationshipList':
get:
tags:
# - EmployeeUpload
summary: 'RelationshipList'
operationId: RelationshipList
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
responses:
'201':
description: 'RelationshipList'
content:
application/json:
schema:
$ref: '#/components/schemas/RelationshipList'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getEmployeeAndDependence':
get:
tags:
# - EmployeeUpload
summary: 'GetEmployeeAndDependence'
operationId: GetEmployeeAndDependence
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
- name: emp_code
in: query
description: an authorization header
required: true
type: string
responses:
'201':
description: 'GetEmployeeAndDependence'
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmployeeAndDependence'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/editEmployeeAndDependence':
post:
tags:
# - EmployeeUpload
summary: 'EditEmployeeAndDependence'
operationId: EditEmployeeAndDependence
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: The ID of the employee.
client_id:
type: string
description: The ID of the client.
relationship:
type: string
description: The relationship of the employee.
relationship_code:
type: string
description: The code representing the relationship.
change_event:
type: string
description: The change event associated with the employee.
batch_id:
type: string
description: The ID of the batch.
emp_code:
type: string
description: The code of the employee.
name:
type: string
description: The name of the employee.
email_personal:
type: string
description: The personal email of the employee.
email_corporate:
type: string
description: The corporate email of the employee.
mobile:
type: string
description: The mobile number of the employee.
gender:
type: string
description: The gender of the employee.
dob:
type: string
format: date
description: The date of birth of the employee.
doj:
type: string
format: date
description: The date of joining of the employee.
basic_pay:
type: string
description: The basic pay of the employee.
band:
type: string
description: The band of the employee.
designation:
type: string
description: The designation of the employee.
emp_status:
type: string
description: The status of the employee.
is_active:
type: string
description: Indicates if the employee is active.
file_id:
type: string
description: The ID of the file associated with the employee.
responses:
'201':
description: 'EditEmployeeAndDependence'
content:
application/json:
schema:
$ref: '#/components/schemas/EditEmployeeAndDependence'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/addEmployeeAndDependence':
post:
tags:
# - EmployeeUpload
summary: 'AddEmployeeAndDependence'
operationId: AddEmployeeAndDependence
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
client_id:
type: string
description: The ID of the client.
relationship:
type: string
description: The relationship of the employee.
relationship_code:
type: string
description: The code representing the relationship.
change_event:
type: string
description: The change event associated with the employee.
batch_id:
type: string
description: The ID of the batch.
emp_code:
type: string
description: The code of the employee.
name:
type: string
description: The name of the employee.
email_personal:
type: string
description: The personal email of the employee.
email_corporate:
type: string
description: The corporate email of the employee.
mobile:
type: string
description: The mobile number of the employee.
gender:
type: string
description: The gender of the employee.
dob:
type: string
format: date
description: The date of birth of the employee.
doj:
type: string
format: date
description: The date of joining of the employee.
basic_pay:
type: string
description: The basic pay of the employee.
band:
type: string
description: The band of the employee.
designation:
type: string
description: The designation of the employee.
emp_status:
type: string
description: The status of the employee.
is_active:
type: string
description: Indicates if the employee is active.
file_id:
type: string
description: The ID of the file associated with the employee.
responses:
'201':
description: 'EditEmployeeAndDependence'
content:
application/json:
schema:
$ref: '#/components/schemas/AddEmployeeAndDependence'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getEmployeePolicy':
get:
tags:
# - EmployeeUpload
summary: 'GetEmployeePolicy'
operationId: GetEmployeePolicy
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
- name: id
in: query
description: an authorization header
required: true
type: string
- name: emp_code
in: query
description: an authorization header
required: true
type: string
responses:
'201':
description: 'GetEmployeePolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmployeePolicy'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/createOrUpdateEmployeePolicySiAmount':
post:
tags:
# - EmployeeUpload
summary: 'CreateOrUpdateEmployeePolicySiAmount'
operationId: CreateOrUpdateEmployeePolicySiAmount
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
employee_id:
type: integer
description: The ID of the employee.
client_policy_id:
type: integer
description: The ID of the client.
basic_cover_si:
type: string
description: The Employee Policy.
premium:
type: string
description: The code representing the Employee Policy.
responses:
'201':
description: 'CreateOrUpdateEmployeePolicySiAmount'
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrUpdateEmployeePolicySiAmount'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/deleteDependence':
get:
tags:
# - EmployeeUpload
summary: 'DeleteDependence'
operationId: DeleteDependence
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
- name: id
in: query
description: an authorization header
required: true
type: string
responses:
'201':
description: 'DeleteDependence'
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteDependence'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getEmployeeAndDependenceByClientId':
get:
tags:
# - EmployeeUpload
summary: 'GetEmployeeAndDependenceByClientId'
operationId: GetEmployeeAndDependenceByClientId
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
- name: client_id
in: query
description: an authorization header
required: true
type: string
- name: client_policy_id
in: query
description: an authorization header
required: true
type: string
responses:
'201':
description: 'GetEmployeeAndDependenceByClientId'
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmployeeAndDependenceByClientId'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
'/nhance/employeeRest/getClientPolicy':
get:
tags:
# - EmployeeUpload
summary: 'GetClientPolicy'
operationId: GetClientPolicy
parameters:
- name: auth
in: header
description: an authorization header
required: true
type: string
responses:
'201':
description: 'GetClientPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientPolicy'
'405':
description: 'Invalid input'
security:
- bearer_auth: []
components:
schemas:
EmployeeUpload:
title: EmployeeUpload
description: EmployeeUpload
properties:
client_id:
title: client_id
description: client_id
type: integer
policy_id:
title: policy_id
description: policy_id
type: integer
file:
title: file
description: file
type: string
format: binary
type: object
GetVerifiedUserData:
title: GetVerifiedUserData
description: GetVerifiedUserData
properties:
mobile_number:
title: mobile_number
description: mobile_number
type: string
otp:
title: otp
description: otp
type: string
type: object
VerifyEmployeeNumber:
title: VerifyEmployeeNumber
description: VerifyEmployeeNumber
properties:
mobile_number:
title: mobile_number
description: mobile_number
type: string
type: object
GetVerifiedHrData:
title: GetVerifiedHrData
description: GetVerifiedHrData
properties:
mobile_number:
title: mobile_number
description: mobile_number
type: string
otp:
title: otp
description: otp
type: string
type: object
VerifyHrWithMobileNumber:
title: VerifyHrWithMobileNumber
description: VerifyHrWithMobileNumber
properties:
mobile_number:
title: mobile_number
description: mobile_number
type: string
type: object
GetEmployeeProfile:
title: GetEmployeeProfile
description: GetEmployeeProfile
properties:
emp_code:
title: emp_code
description: emp_code
type: string
type: object
EditEmployeeProfile:
title: EditEmployeeProfile
description: EditEmployeeProfile
properties:
emp_code:
title: emp_code
description: emp_code
type: string
type: object
RelationshipList:
title: RelationshipList
description: RelationshipList
type: object
EditEmployeeAndDependence:
title: EditEmployeeAndDependence
description: EditEmployeeAndDependence
properties:
emp_code:
title: emp_code
description: emp_code
type: string
type: object
GetEmployeeAndDependence:
title: EditEmployeeAndDependence
description: EditEmployeeAndDependence
properties:
emp_code:
title: emp_code
description: emp_code
type: string
type: object
AddEmployeeAndDependence:
title: AddEmployeeAndDependence
description: AddEmployeeAndDependence
properties:
emp_code:
title: emp_code
description: emp_code
type: string
type: object
GetEmployeePolicy:
title: GetEmployeePolicy
description: GetEmployeePolicy
properties:
id:
title: id
description: id
type: integer
emp_code:
title: emp_code
description: emp_code
type: string
type: object
CreateOrUpdateEmployeePolicySiAmount:
title: CreateOrUpdateEmployeePolicySiAmount
description: CreateOrUpdateEmployeePolicySiAmount
properties:
employee_id:
title: employee_id
description: employee_id
type: integer
client_policy_id:
title: client_policy_id
description: client_policy_id
type: integer
basic_cover_si:
title: basic_cover_si
description: basic_cover_si
type: string
premium:
title: premium
description: premium
type: string
type: object
DeleteDependence:
title: DeleteDependence
description: DeleteDependence
properties:
id:
title: id
description: id
type: integer
type: object
GetEmployeeAndDependenceByClientId:
title: GetEmployeeAndDependenceByClientId
description: GetEmployeeAndDependenceByClientId
properties:
client_id:
title: client_id
description: client_id
type: integer
client_policy_id:
title: client_policy_id
description: client_policy_id
type: integer
type: object
GetClientPolicy:
title: GetClientPolicy
description: GetClientPolicy
type: object
# securitySchemes:
# Authorization:
# type: http
# scheme: bearer
# bearerFormat: JWT

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

View File

@ -0,0 +1,60 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after
{
box-sizing: inherit;
}
body
{
margin:0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js"> </script>
<script src="./swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
// End Swagger UI call region
window.ui = ui
}
</script>
</body>
</html>

View File

@ -0,0 +1,68 @@
<!doctype html>
<html lang="en-US">
<title>Swagger UI: OAuth2 Redirect</title>
<body onload="run()">
</body>
</html>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1);
} else {
qp = location.search.substring(1);
}
arr = qp.split("&")
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value)
}
) : {}
isValid = qp.state === sentState
if ((
oauth2.auth.schema.get("flow") === "accessCode"||
oauth2.auth.schema.get("flow") === "authorizationCode"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,59 @@
<?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 CheckDependentConflictTest extends CIUnitTestCase
{
public function testCheckDependentConflict()
{
helper('excel_util_helper');
// Sample family data
$family_data = [
[1, 'John Doe', '1970-01-01', 'male', 'self', 'Self'],
[2, 'Jane Doe', '1975-01-01', 'female', 'spouse', 'Spouse'],
[3, 'Alice Doe', '2000-01-01', 'female', 'daughter', 'Daughter'],
[4, 'Bob Doe', '2005-01-01', 'male', 'son', 'Son'],
[5, 'Peter Doe', '1950-01-01', 'male', 'father', 'Father'],
[6, 'Mary Doe', '1955-01-01', 'female', 'mother', 'Mother'],
[7, 'George Doe', '1945-01-01', 'male', 'father-in-law', 'Father-in-law'],
[8, 'Grace Doe', '1950-01-01', 'female', 'mother-in-law', 'Mother-in-law'],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
// Sample action array
$actionArr = 'addition';
// Call the function
$result = check_dependent_conflict($family_data, $policy_terms, $actionArr);
Kint::dump($result);
// Assert that the status is true (no conflicts)
$this->assertTrue($result['status']);
}
public function testIsNull()
{
$i = null;
$this->assertTrue($i);
}
}