1790 lines
80 KiB
PHP
1790 lines
80 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Helpers\MailHelper;
|
|
|
|
use CodeIgniter\HTTP\IncomingRequest;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
|
|
use App\Models\EmployeeModel;
|
|
use App\Models\EmployeePolicyModel;
|
|
use App\Models\ClientModel;
|
|
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 ;
|
|
use App\Controllers\JobWorker ;
|
|
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
use Illuminate\Http\Request;
|
|
|
|
|
|
class EmployeeRestController extends AdminController
|
|
{
|
|
|
|
use ResponseTrait;
|
|
|
|
protected $myLogger;
|
|
protected $employeeModel;
|
|
protected $employeePolicyModel;
|
|
protected $clientModel;
|
|
protected $fileModel;
|
|
protected $policesModel;
|
|
protected $relationshipModel;
|
|
protected $clientPolicyModel;
|
|
protected $policyPremium1Model;
|
|
protected $policyPremium2Model;
|
|
|
|
public function __construct()
|
|
{
|
|
// helper('utility');
|
|
set_session_context('Employee');
|
|
$this->myLogger = \Config\Services::mylogger();
|
|
$this->employeeModel = new EmployeeModel();
|
|
$this->employeePolicyModel = new EmployeePolicyModel();
|
|
$this->clientModel = new ClientModel();
|
|
$this->policesModel = new PolicesModel();
|
|
$this->relationshipModel = new RelationshipModel();
|
|
$this->fileModel= new FileModel();
|
|
$this->clientPolicyModel = new ClientPolicyModel();
|
|
$this->policyPremium1Model = new PolicyPremium1Model();
|
|
$this->policyPremium2Model = new PolicyPremium2Model();
|
|
}
|
|
|
|
|
|
public function getEmployeeProfile()
|
|
{
|
|
try {
|
|
$emp_code = $this->request->getGet('emp_code');
|
|
$client_id = $this->request->getGet('client_id');
|
|
if ($emp_code) {
|
|
$relationship = 'self';
|
|
$employee = $this->employeeModel->where('emp_code', $emp_code)
|
|
->where('client_id', $client_id)
|
|
->where('is_active', 1 )
|
|
->where('relationship', $relationship)
|
|
->first();
|
|
$result = $employee;
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
} else {
|
|
$result = "No Match's";
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
|
|
}
|
|
} catch (\Throwable $th) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
|
}
|
|
}
|
|
|
|
|
|
public function editEmployeeProfile()
|
|
{
|
|
try {
|
|
$data = $this->request->getJSON();
|
|
if ($data) {
|
|
$id = $data->id;
|
|
$employee = $this->employeeModel->where('is_active', 1 )->update($id, $data);
|
|
|
|
if ($employee) {
|
|
$result = [];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
|
|
} else {
|
|
$result = "No Match's";
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result],404);
|
|
}
|
|
}
|
|
} catch (\Throwable $th) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function getEmployeeAndDependence()
|
|
{
|
|
try {
|
|
$emp_code = $this->request->getGet('emp_code');
|
|
if ($emp_code) {
|
|
$employee = $this->employeeModel->where('is_active', 1 )->where('emp_code', $emp_code)->findAll();
|
|
$dateConverter = function($item) {
|
|
if ($item['dob'] !== '0000-00-00') {
|
|
$dateTime = \DateTime::createFromFormat('Y-m-d', $item['dob']);
|
|
$item['dob'] = $dateTime->format('d-m-Y');
|
|
}
|
|
return $item;
|
|
};
|
|
$employee = array_map($dateConverter, $employee);
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $employee],200);
|
|
|
|
} else {
|
|
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => []],404);
|
|
}
|
|
} catch (\Throwable $th) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function editEmployeeAndDependence()
|
|
{
|
|
try {
|
|
$data = $this->request->getJSON();
|
|
if ($data) {
|
|
$updatedCount = 0;
|
|
|
|
foreach ($data as $item) {
|
|
$id = $item->id;
|
|
$item->dob = $this->convertDateFormatYMD($item->dob);
|
|
$employee = $this->employeeModel->where('is_active', 1 )->update($id, (array)$item);
|
|
if ($employee) {
|
|
$updatedCount++;
|
|
}
|
|
}
|
|
|
|
if ($updatedCount > 0) {
|
|
$result = [];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
|
|
} else {
|
|
$result = "No Matches";
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 404);
|
|
}
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e], 500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function addEmployeeAndDependence()
|
|
{
|
|
try {
|
|
$data = $this->request->getJSON();
|
|
|
|
|
|
if ($data) {
|
|
|
|
$Count = 0;
|
|
foreach ($data as $item) {
|
|
if (isset($item->id)) {
|
|
//update old data
|
|
$id = $item->id;
|
|
$item->family_floater_key = $this->RelationshipMap($item->relationship);
|
|
$item->gender = $this->GenderMap($item->relationship , $item->emp_code);
|
|
$item->dob = $this->convertDateFormatYMD($item->dob);
|
|
$item->emp_status = 'draft';
|
|
$employee = $this->employeeModel->where('is_active', 1 )->update($id, (array)$item);
|
|
if ($employee) {
|
|
$Count++;
|
|
}
|
|
}else{
|
|
//create new data
|
|
$item->family_floater_key = $this->RelationshipMap($item->relationship);
|
|
$item->gender = $this->GenderMap($item->relationship , $item->emp_code);
|
|
$item->dob = $this->convertDateFormatYMD($item->dob);
|
|
$item->emp_status = 'draft';
|
|
$employee = $this->employeeModel->insert($item);
|
|
|
|
if ($employee) {
|
|
$Count++;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($Count > 0) {
|
|
|
|
if(isset($data[0]->id))
|
|
{
|
|
if(!isset($data[0]->is_addon_value))
|
|
{
|
|
$this->createEmployeePolicyData($data[0]->id , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id);
|
|
}else{
|
|
$this->createEmployeePolicyData($data[0]->id , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id , $data[0]->basic_cover_si);
|
|
}
|
|
|
|
}else{
|
|
if(!isset($data[0]->is_addon_value))
|
|
{
|
|
$this->createEmployeePolicyData($employee , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id);
|
|
}else{
|
|
$this->createEmployeePolicyData($employee , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id , $data[0]->basic_cover_si);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->updatePremiumAmount($data[0]->client_policy_id , $data[0]->emp_code);
|
|
|
|
|
|
$result = [];
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
|
|
} else {
|
|
$result = "No Matches";
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => $result], 404);
|
|
}
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
public function createEmployeePolicyData($employee_id,$emp_code,$client_id,$client_policy_id,$basic_cover_si = null)
|
|
{
|
|
|
|
if($basic_cover_si == null)
|
|
{
|
|
$client_policy = $this->clientPolicyModel->where('id', $client_policy_id)->where('client_id', $client_id)->first();
|
|
$policy_terms = json_decode($client_policy['policy_terms']);
|
|
$basic_cover_si = $policy_terms->sum_insured;
|
|
}
|
|
|
|
$checkDataExist = $this->employeePolicyModel->where('employee_id',$employee_id)->where('client_policy_id',$client_policy_id)->first();
|
|
|
|
if($checkDataExist){
|
|
|
|
$this->employeePolicyModel
|
|
->where('client_policy_id',$client_policy_id )
|
|
->where('employee_id' , $employee_id )
|
|
->where('is_active', 1 )
|
|
->set(array('basic_cover_si'=> $basic_cover_si ))
|
|
->update();
|
|
|
|
}else{
|
|
|
|
$data['employee_id']= $employee_id;
|
|
$data['client_policy_id']= $client_policy_id;
|
|
$data['basic_cover_si']= $basic_cover_si;
|
|
$data['status']= 'draft';
|
|
|
|
$this->employeePolicyModel->insert($data);
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function updatePremiumAmount($client_policy_id , $emp_code)
|
|
{
|
|
$response = $this->calculatePremium($client_policy_id , $emp_code);
|
|
|
|
if(count($response[$emp_code]))
|
|
{
|
|
|
|
foreach ($response[$emp_code] as $key => $value)
|
|
{
|
|
|
|
$checkIfExist = $this->employeePolicyModel->where('employee_id', $value['temp']['emp_id'])
|
|
->where('client_policy_id', $value['policy_details']['client_policy_id'])
|
|
->where('is_active', 1 )
|
|
->findAll();
|
|
if($checkIfExist)
|
|
{
|
|
$this->employeePolicyModel
|
|
->where('client_policy_id',$value['policy_details']['client_policy_id'] )
|
|
->where('employee_id' , $value['temp']['emp_id'] )
|
|
->where('is_active', 1 )
|
|
->set(array('premium'=> $value['policy_details']['premium'] , 'gst'=> $value['policy_details']['gst'] ))
|
|
->update();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public function RelationshipMap($value){
|
|
|
|
if ($value === 'Mother' || $value === 'Father') {
|
|
return 'parent';
|
|
} else if($value === 'Son' || $value === 'Daughter'){
|
|
return 'child';
|
|
}else if($value === 'Father in Law' || $value === 'Mother in Law'){
|
|
return 'parent_in_law';
|
|
}else if($value === 'Spouse'){
|
|
return 'spouse';
|
|
}
|
|
}
|
|
|
|
public function GenderMap($value,$empCode){
|
|
|
|
if ($value === 'Mother' || $value === 'Daughter' || $value === 'Mother in Law') {
|
|
return 'F';
|
|
} else if($value === 'Son' || $value === 'Father' || $value === 'Father in Law'){
|
|
return 'M';
|
|
}else if($value === 'Spouse'){
|
|
|
|
$Gender = $this->employeeModel->where('emp_code',$empCode)->where('relationship','Self')->get()->getRow()->gender;
|
|
if($Gender == 'M'){ return 'F'; }else{ return 'M'; }
|
|
}
|
|
}
|
|
|
|
private function convertDateFormatYMD($dateString)
|
|
{
|
|
// Attempt to create a DateTime object from the provided date string
|
|
$dateTime = \DateTime::createFromFormat('d-m-Y', $dateString);
|
|
if ($dateTime instanceof \DateTime) {
|
|
return $dateTime->format('Y-m-d');
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private function convertDateFormatDMY($dateString)
|
|
{
|
|
// Attempt to create a DateTime object from the provided date string
|
|
$dateTime = \DateTime::createFromFormat('Y-m-d', $dateString);
|
|
|
|
if ($dateTime instanceof \DateTime) {
|
|
return $dateTime->format('d-m-Y');
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
public function deleteDependence()
|
|
{
|
|
try {
|
|
|
|
if($this->request->getGet('id'))
|
|
{
|
|
$this->employeeModel->where('id', $this->request->getGet('id') )
|
|
->where('is_active', 1 )
|
|
->set(array('is_active'=> 0 ))
|
|
->update();
|
|
|
|
$this->employeePolicyModel->where('employee_id',$this->request->getGet('id') )
|
|
->where('is_active', 1 )
|
|
->set(array('is_active'=> 0 ))
|
|
->update();
|
|
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
|
|
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 404);
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function getEmployeeAndDependenceByClientId()
|
|
{
|
|
try {
|
|
$empData = $this->employeePolicyModel->getEmployeePolicy( client_id:$this->request->getGet('client_id'),policy_id: $this->request->getGet('client_policy_id'),status:0);
|
|
|
|
if ($empData) {
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $empData], 200);
|
|
} else {
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function exportDataByClientPolicyId()
|
|
{
|
|
try {
|
|
$empData = $this->employeePolicyModel->getEmployeePolicy( client_id:$this->request->getGet('client_id'),policy_id: $this->request->getGet('client_policy_id'),status:0);
|
|
|
|
if(count($empData))
|
|
{
|
|
// Define headers and map database fields to Excel fields
|
|
$headers = [
|
|
'Employee Code' => 'emp_code',
|
|
'Name' => 'name',
|
|
'Relationship' => 'relationship',
|
|
'DOB' => 'dob',
|
|
'Gender' => 'gender',
|
|
'Mobile' => 'mobile',
|
|
'Email' => 'email_corporate',
|
|
'SI' => 'basic_cover_si',
|
|
'Premium' => 'rata_premimum',
|
|
'Policy Name' => 'policy_name',
|
|
'Insurer Branch Name' => 'insurer_branch_name',
|
|
'TPA Name' => 'tpa_name',
|
|
'Status' => 'emp_status'
|
|
];
|
|
|
|
// Create a new Spreadsheet object
|
|
$spreadsheet = new Spreadsheet();
|
|
|
|
// Get the active sheet
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
|
|
// Add headers
|
|
$column = 'A';
|
|
foreach ($headers as $header => $dbField) {
|
|
$sheet->setCellValue($column . '1', $header);
|
|
$column++;
|
|
}
|
|
|
|
// Add data
|
|
$row = 2;
|
|
foreach ($empData as $employee) {
|
|
$column = 'A';
|
|
foreach ($headers as $dbField) {
|
|
$sheet->setCellValue($column . $row, $employee[$dbField]);
|
|
$column++;
|
|
}
|
|
$row++;
|
|
}
|
|
|
|
|
|
// Set the header for download
|
|
$filename = $empData[0]['policy_name'].'-Enrollment.xlsx';
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="' . $filename . '"');
|
|
header('Cache-Control: max-age=0');
|
|
|
|
// Save the Excel file to output
|
|
$writer = new Xlsx($spreadsheet);
|
|
$writer->save('php://output');
|
|
exit;
|
|
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
|
|
|
|
}else{
|
|
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
public function getClientPolicy()
|
|
{
|
|
try {
|
|
$ClientPolicyData = $this->clientPolicyModel->select('client_policy.id as client_policy_id , client_policy.client_id as client_id, policies.id as policy_id,policies.policy_type_id as policy_type_id, policies.name as policy_name , client_policy.is_addon as is_addon')
|
|
->join('policies', 'client_policy.policy_id = policies.id', 'left')
|
|
->where('client_policy.client_id', $this->request->getGet('client_id') )
|
|
->findAll();
|
|
$result = [];
|
|
foreach ($ClientPolicyData as $key => $value) {
|
|
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard( $value['client_policy_id'],$value['client_id']);
|
|
if($value['is_addon'] == "2"){
|
|
$value['type'] = 'SI TopUp';
|
|
}else if($value['is_addon'] == "3"){
|
|
$value['type'] = 'Dependent AddOn';
|
|
}else{
|
|
$value['type'] = $getSlabAndGridData['grid_master']['policy_type'];
|
|
}
|
|
|
|
array_push($result,$value);
|
|
|
|
|
|
}
|
|
if ($ClientPolicyData) {
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
|
} else {
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// public function getEmployeePolicy()
|
|
// {
|
|
// try {
|
|
// $id = $this->request->getGet('id');
|
|
// $emp_code = $this->request->getGet('emp_code');
|
|
|
|
// $keysToRemove = ["removable_keys"];
|
|
|
|
// $empPolicy = $this->employeeModel->getEmployeePolicy($id);
|
|
|
|
// $empData = $this->employeeModel->where('emp_code',$emp_code)->findAll();
|
|
// if ($empPolicy) {
|
|
|
|
// $result = [];
|
|
// foreach ($empPolicy as $array) {
|
|
|
|
// $decodedArray = json_decode($array->Policy_Terms);
|
|
// $refusingData = (object) array_diff_key((array) $decodedArray, array_flip($keysToRemove));
|
|
|
|
|
|
// $array->Policy_Terms = $refusingData;
|
|
// $getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard($array->ClientPolicyId,$array->ClientId);
|
|
// $array->SlabRates = $getSlabAndGridData['slab_rates'];
|
|
// $array->GridMaster = $getSlabAndGridData['grid_master'];
|
|
|
|
// if($getSlabAndGridData['grid_master']['policy_type'] == "GPA"){
|
|
// $default_si = $array->Policy_Terms->sumInsured2;
|
|
// $index = -1;
|
|
// foreach ($array->SlabRates as $key => $value) {
|
|
// if ($value['si'] == $default_si) {
|
|
// $index = $key;
|
|
// break;
|
|
// }
|
|
// }
|
|
// if ($index >= 0) {
|
|
// $element =$array->SlabRates[$index];
|
|
// array_splice($array->SlabRates, $index, 1);
|
|
// array_unshift($array->SlabRates, $element);
|
|
// }
|
|
|
|
// $employee_policy = $this->employeePolicyModel->where('employee_id',$id)->where('client_policy_id',$array->ClientPolicyId)->get()->getRow();
|
|
// if($employee_policy){
|
|
// $gpaSI['family_floater_key'] = 'self';
|
|
// $gpaSI['label'] = 'Self';
|
|
// $gpaSI['employee_id'] = $employee_policy->employee_id;
|
|
// $gpaSI['basic_cover_si'] = isset($employee_policy->basic_cover_si) ? $employee_policy->basic_cover_si : null;
|
|
// $gpaSI['premium'] = isset($employee_policy->premium) ? $employee_policy->premium : null;
|
|
// $gpaSI['client_policy_id'] = $array->ClientPolicyId;
|
|
|
|
// $array->mapped_family_floaters = $gpaSI;
|
|
// }else{
|
|
// $gpaSI['family_floater_key'] = 'self';
|
|
// $gpaSI['label'] = 'Self';
|
|
// $gpaSI['employee_id'] = $id;
|
|
// $gpaSI['basic_cover_si'] = null;
|
|
// $gpaSI['premium'] = null;
|
|
// $gpaSI['client_policy_id'] = $array->ClientPolicyId;
|
|
|
|
// $array->mapped_family_floaters = $gpaSI;
|
|
// }
|
|
|
|
// }else if($getSlabAndGridData['grid_master']['policy_type'] == "GMC"){
|
|
|
|
// // re-arranging order of si
|
|
// $default_si = $array->Policy_Terms->sum_insured;
|
|
// // Filter the array using the callback function
|
|
// $getPremium = array_filter($array->SlabRates , function ($value) use ($default_si) { return $value['si'] == $default_si; } );
|
|
// $default_premium = $getPremium[0]['premium'];
|
|
|
|
// $index = -1;
|
|
// foreach ($array->SlabRates as $key => $value) {
|
|
// if ($value['si'] == $default_si) {
|
|
// $index = $key;
|
|
// break;
|
|
// }
|
|
// }
|
|
// if ($index >= 0) {
|
|
// $element =$array->SlabRates[$index];
|
|
// array_splice($array->SlabRates, $index, 1);
|
|
// array_unshift($array->SlabRates, $element);
|
|
// }
|
|
|
|
// //map family floates array to employee and dependent
|
|
// $familyFloates = $array->Policy_Terms->family_floaters;
|
|
// $data = [];
|
|
// foreach ($familyFloates as $familyFloatesValue) {
|
|
// $dependent = preg_replace('/\d/', '', $familyFloatesValue);
|
|
// if(count($empData)){
|
|
// foreach ($empData as $key => $value) {
|
|
// if ($value['family_floater_key'] === $dependent) {
|
|
// $employee_policy = $this->employeePolicyModel->where('employee_id',$value['id'])->where('client_policy_id',$array->ClientPolicyId)->get()->getRow();
|
|
// $temp['family_floater_key'] = $familyFloatesValue;
|
|
// $temp['label'] = $value['relationship'];
|
|
// $temp['name'] = $value['name'];
|
|
// $temp['employee_id'] = $value['id'];
|
|
// $temp['basic_cover_si'] = isset($employee_policy->basic_cover_si) ? $employee_policy->basic_cover_si : null;
|
|
// $temp['premium'] = isset($employee_policy->premium) ? $employee_policy->premium : null;
|
|
// $temp['client_policy_id'] = $array->ClientPolicyId;
|
|
// array_push($data,$temp);
|
|
// unset($empData[$key]);
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// $array->mapped_family_floaters = $data;
|
|
|
|
// $temp2=[];
|
|
// foreach ($array->SlabRates as $key => $value) {
|
|
// $value['additional_premium'] = $value['premium'] - $default_premium;
|
|
// array_push($temp2,$value);
|
|
// }
|
|
// $array->SlabRates = $temp2;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// $result[] = $array;
|
|
// }
|
|
// return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
|
|
// }else{
|
|
// return $this->respond(['status' => 'failed','code' => 404,'data' => []], 404);
|
|
// }
|
|
// } catch (\Exception $e) {
|
|
// return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
// }
|
|
// }
|
|
|
|
// Get the RelationShip list
|
|
|
|
public function createOrUpdateEmployeePolicySiAmount()
|
|
{
|
|
|
|
try {
|
|
$requestData = $this->request->getJSON();
|
|
|
|
foreach ($requestData as $key => $value) {
|
|
|
|
|
|
$checkIfExist = $this->employeePolicyModel->where('employee_id', $value->employee_id)
|
|
->where('client_policy_id', $value->client_policy_id)
|
|
->where('is_active', 1 )
|
|
->findAll();
|
|
|
|
|
|
// dd($checkIfExist);
|
|
if ($checkIfExist) {
|
|
|
|
$empPolicy = $this->employeePolicyModel->updateSiAndPremium($value->client_policy_id, $value->employee_id, $value->basic_cover_si);
|
|
|
|
}else{
|
|
|
|
$data['employee_id']= $value->employee_id;
|
|
$data['client_policy_id']= $value->client_policy_id;
|
|
$data['basic_cover_si']= $value->basic_cover_si;
|
|
$data['status'] = 'draft';
|
|
|
|
$this->employeePolicyModel->insert($data);
|
|
}
|
|
}
|
|
|
|
$this->updatePremiumAmount($requestData[0]->client_policy_id , $requestData[0]->emp_code);
|
|
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function findPremiumAmount($slabArray,$siAmount)
|
|
{
|
|
foreach ($slabArray as $key => $value) {
|
|
if($value['si'] == $siAmount){
|
|
return $value['premium'];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
public function relationshipList()
|
|
{
|
|
try {
|
|
|
|
$relation_ships= $this->relationshipModel->findAll();
|
|
|
|
if(count($relation_ships) > 0){
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $relation_ships], 200);
|
|
}else{
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => "No Data..!"], 200);
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
// Upload the Employee Detail in DB by Sheet Data
|
|
public function employeeUpload()
|
|
{
|
|
try {
|
|
$file = $this->request->getFile('file');
|
|
$client_id = $this->request->getPost('client_id');
|
|
$policy_id = $this->request->getPost('policy_id');
|
|
|
|
$jwt = $this->request->getHeader('Authorization');
|
|
$jwtParts = explode(' ', $jwt);
|
|
$token = $jwtParts[2];
|
|
|
|
|
|
$decodedPayload = json_decode(base64_decode(explode('.', $token)[1]), true);
|
|
// get the employee id from token
|
|
$employee_id = $decodedPayload['id'];
|
|
|
|
|
|
|
|
$client_policy = $this->clientPolicyModel->where('id', $policy_id)->where('client_id', $client_id)->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 = isset($policy_permium_1['si']) ? $policy_permium_1['si'] : null;
|
|
$sum_insured_amount_for_check_employee_2 = isset($policy_permium_2['si']) ? $policy_permium_2['si'] : null;
|
|
|
|
$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']);
|
|
|
|
$extractData['file_name']= $filename;
|
|
$extractData['client_id']= $client_id;
|
|
$extractData['status']= 'success';
|
|
$extractData['policy_id']= $policy_id;
|
|
$extractData['action']= 'enrollment';
|
|
$extractData['created_by']=$employee_id;
|
|
|
|
$file_data =$this->fileModel->insert($extractData);
|
|
|
|
$extra = [];
|
|
if (count($data[0]) == 11) {
|
|
$value = ['Sno','Emp_Code','Name','DOJ','Gender','Relation','DOB','Mail','Mobile','SI','Grade'];
|
|
$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], 200);
|
|
}
|
|
}
|
|
|
|
if(count($data[0]) != 11){
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Uploaded file row count is Not Match!" ], 200);
|
|
}
|
|
|
|
//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], 200);
|
|
// }
|
|
// }
|
|
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
|
|
|
|
// 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',
|
|
'band'=> $extra['10'][$index],
|
|
|
|
];
|
|
$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 (isset($policy_permium_2['policy_grid_id']) == 10 || isset($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,
|
|
];
|
|
$dataToInsert[] = $record;
|
|
$basic_cover_si[]= $basic_cover_si_value;
|
|
}
|
|
}
|
|
$count = 0;
|
|
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);
|
|
|
|
if ($employee) {
|
|
|
|
|
|
$emp_id =$employee['id'];
|
|
$id =$emp_id;
|
|
$data_after_gpa_or_gmc['id'] = $id;
|
|
$data_after_gpa_or_gmc['updated_by'] = $employee_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) {
|
|
$data_after_gpa_or_gmc['created_by'] = $employee_id;
|
|
$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
|
|
$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'];
|
|
$data['App_Url'] = $_ENV['App_Url'];
|
|
|
|
$message = view('mail_welcome', $data);
|
|
|
|
if ($dataToInsert[$a]['relationship'] == 'Self' && $mail != null || $mail != '') {
|
|
$count++;
|
|
$wholeData[] = ['mail' => $mail, 'subject' => $subject,'message'=> $message];
|
|
}
|
|
|
|
// print_r($wholeData);
|
|
// if ($dataToInsert[$a]['email_corporate'] != null || $dataToInsert[$a]['email_corporate'] != '' && $dataToInsert[$a]['relationship'] == 'Self') {
|
|
if($count == 20 || $a == count($dataToInsert)-1){
|
|
$job_details = new Jobs();
|
|
$r = Jobs::addJob(['job_name' => 'bulk_mail','payload' => $wholeData]);
|
|
// $wholeData[]= $r;
|
|
|
|
// Mailhelper::bulk_mail($wholeData);
|
|
$wholeData = [];
|
|
$count = 0;
|
|
}
|
|
|
|
// 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]);
|
|
}
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success" ], 200);
|
|
}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);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
|
|
public function getEmployeePolicy()
|
|
{
|
|
// try {
|
|
|
|
$id = $this->request->getGet('id');
|
|
$emp_code = $this->request->getGet('emp_code');
|
|
$client_id = $this->request->getGet('client_id');
|
|
|
|
// This is an array containing keys to be removed from the terms and conditions array
|
|
$keysToRemove = ["removable_keys"];
|
|
// Retrieve employee policy data by passing the employee primary key
|
|
$empPolicy = $this->employeeModel->getEmployeePolicy($id);
|
|
|
|
// Retrieve employee and dependents data by passing the employee code
|
|
$employeeData = $this->employeeModel->where('emp_code',$emp_code)->where('client_id',$client_id)
|
|
->where('is_active', 1 )->where('is_addon_value',0)->findAll();
|
|
|
|
|
|
if ($empPolicy) {
|
|
|
|
$result = [];
|
|
foreach ($empPolicy as $array) {
|
|
// Reset employee array
|
|
$empData = $employeeData;
|
|
|
|
|
|
// Removes specific keys from the decoded array and assigns the result to $refusingData
|
|
$decodedArray = json_decode($array->Policy_Terms);
|
|
$refusingData = (object) array_diff_key((array) $decodedArray, array_flip($keysToRemove));
|
|
$array->Policy_Terms = $refusingData;
|
|
|
|
// Retrieve slab rate and grid master data by passing the ClientPolicyId and ClientId
|
|
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard($array->ClientPolicyId,$array->ClientId);
|
|
$array->SlabRates = $getSlabAndGridData['slab_rates'];
|
|
$array->GridMaster = $getSlabAndGridData['grid_master'];
|
|
|
|
if($array->tpa_id != null){
|
|
$array->eCardDownload = base_url('download-e-card/') . $array->rand_string;
|
|
}else{ $array->eCardDownload = null; }
|
|
|
|
|
|
// Construct value for policy type GPA
|
|
if($getSlabAndGridData['grid_master']['policy_type'] == "GPA"){
|
|
|
|
// Filter employee data where the family_floater_key is 'self'
|
|
$selfData = array_filter($empData, fn($arr) => trim(strtolower($arr['family_floater_key'])) === 'self');
|
|
|
|
$self['is_value_exist'] = true;
|
|
$self['data']['family_floater_key'] = 'self';
|
|
$self['data']['employee_id'] = $id;
|
|
$self['data']['relationship'] = 'Self';
|
|
$self['data']['name'] = $selfData[0]['name'];
|
|
$self['data']['dob'] = $this->convertDateFormatDMY($selfData[0]['dob']);
|
|
$self['data']['mobile'] = $selfData[0]['mobile'];
|
|
$self['data']['client_policy_id'] = $array->ClientPolicyId;
|
|
|
|
$array->mapped_family_floaters = $self;
|
|
|
|
// Return result
|
|
if($this->request->getGet('policy') == 'GPA')
|
|
{
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $array], 200);
|
|
}
|
|
|
|
// Construct value for policy type GMC
|
|
}else if($getSlabAndGridData['grid_master']['policy_type'] == "GMC"){
|
|
|
|
|
|
|
|
// Map family floaters that already exist in the employee table
|
|
$familyFloates = $array->Policy_Terms->family_floaters;
|
|
|
|
// Generate Notes string based on familyFloates terms
|
|
$array->notes = $this->FloterNotesConvertion($familyFloates);
|
|
|
|
if($getSlabAndGridData['slab_rates'][0]['premium_type'] == 1)
|
|
{
|
|
$array->floter_text_heading = 'Floater Sum Insured';
|
|
$array->floter_text_description = 'This is a floater sum insured. A floater is a type of sum insured that provides coverage to more than one member ot a family at the same time. Simply put, its a single insurance cover for the entire family.';
|
|
}else{
|
|
$array->floter_text_heading = 'Sum Insured';
|
|
$array->floter_text_description = '';
|
|
}
|
|
|
|
// Convert familyFloaters terms data to plain array
|
|
$floters = $this->FloterConvertion($familyFloates);
|
|
|
|
$data = [];
|
|
foreach ($floters as $familyFloatesValue) {
|
|
$dependent = preg_replace('/\d/', '', $familyFloatesValue);
|
|
if(count($empData)){
|
|
foreach ($empData as $key => $value) {
|
|
if ($value['family_floater_key'] === $dependent) {
|
|
$temp['is_value_exist'] = true;
|
|
$temp['data']['family_floater_key'] = $familyFloatesValue;
|
|
$temp['data']['employee_id'] = $value['id'];
|
|
$temp['data']['relationship'] = $value['relationship'];
|
|
$temp['data']['name'] = $value['name'];
|
|
$temp['data']['dob'] = $this->convertDateFormatDMY($value['dob']);
|
|
$temp['data']['client_policy_id'] = $array->ClientPolicyId;
|
|
$temp['data']['form_type'] = $dependent;
|
|
array_push($data,$temp);
|
|
unset($empData[$key]);
|
|
$floters = array_diff($floters, [$familyFloatesValue]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Remove Unwanted floter key from floters array based on either-parents-pil term value
|
|
if($familyFloates->{'either-parents-pil'} == 1 && count($floters))
|
|
{
|
|
$count_parent = 0;
|
|
$count_parent_in_law = 0;
|
|
foreach ($floters as $value) {
|
|
if (preg_replace('/\d/', '', $value) == 'parent') { $count_parent++; }
|
|
if (preg_replace('/\d/', '', $value) == 'parent_in_law') {$count_parent_in_law++;}
|
|
}
|
|
if($count_parent != 2) {
|
|
$floters = array_filter($floters, fn($value) => strpos($value, 'parent_in_law') === false);
|
|
}
|
|
if($count_parent_in_law != 2) {
|
|
$floters = array_filter($floters, fn($value) => strpos($value, 'parent') === false || strpos($value, 'parent_in_law') !== false);
|
|
}
|
|
}
|
|
|
|
// Add family floter buttons placement data for FE validation
|
|
if(count($floters)){
|
|
foreach ($floters as $familyFloatesValue) {
|
|
|
|
$temp2['is_value_exist'] = false;
|
|
$temp2['data']['family_floater_key'] = $familyFloatesValue;
|
|
$temp2['data']['client_policy_id'] = $array->ClientPolicyId;
|
|
$temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue)));
|
|
$temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue);
|
|
|
|
array_push($data,$temp2);
|
|
|
|
}
|
|
}
|
|
|
|
$array->mapped_family_floaters = $data;
|
|
|
|
|
|
|
|
if($this->request->getGet('policy') == 'GMC'){
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => $array], 200);
|
|
}
|
|
|
|
}
|
|
|
|
// $result[] = $array;
|
|
}
|
|
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
|
|
|
|
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => []], 200);
|
|
}
|
|
// } catch (\Exception $e) {
|
|
// return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
// }
|
|
}
|
|
|
|
public function FloterConvertion($array){
|
|
|
|
$result = [];
|
|
foreach ($array as $key => $value) {
|
|
if ($value > 0) {
|
|
if ($value != 0 && $key === 'childrens') {
|
|
for ($i = 1; $i <= $value; $i++) {
|
|
$result[] = "child" . $i;
|
|
}
|
|
} else if($value != 0 && $key ==='parents') {
|
|
for ($i = 1; $i <= $value; $i++) {
|
|
$result[] = "parent" . $i;
|
|
}
|
|
}else if($value != 0 && $key ==='parents-in-law') {
|
|
for ($i = 1; $i <= $value; $i++) {
|
|
$result[] = "parent_in_law" . $i;
|
|
}
|
|
}else if($value != 0 && $key ==='either-parents-pil') {
|
|
for ($i = 1; $i <= 2; $i++) {
|
|
$result[] = "parent" . $i;
|
|
$result[] = "parent_in_law" . $i;
|
|
}
|
|
}else {
|
|
$result[] = $key;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function FloterNotesConvertion($array){
|
|
|
|
$result = 'Can Add Self ';
|
|
foreach ($array as $key => $value) {
|
|
if ($value > 0) {
|
|
if($value != 0 && $key ==='either-parents-pil') {
|
|
$result .= ' + Either 2 Parents or 2 Parents in law';
|
|
}else if($value != 0 && $key ==='spouse') {
|
|
$string = str_replace('-', ' ', $key);
|
|
$string = ucwords($string);
|
|
$result .= ' + '.$string;
|
|
}else if($value != 0 && $key ==='self') {
|
|
}else if($value != 0 && $key ==='childrens') {
|
|
if($value > 1){ $result .= ' + '.$value.' Children'; }else{ $result .= ' + '.$value.' Child'; }
|
|
}else{
|
|
$string = str_replace('-', ' ', $key);
|
|
$string = ucwords($string);
|
|
$result .= ' + '.$value.' '.$string;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getClientDetails()
|
|
{
|
|
try {
|
|
|
|
$client = $this->clientModel->where('id',$this->request->getGet('client_id'))->first();
|
|
if($client) {
|
|
$client['client_logo'] = base_url().'public/uploads/logo/'.$client['client_logo'];
|
|
$clientPolicy = $this->clientPolicyModel->where('client_id',$this->request->getGet('client_id'))->findAll();
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => ['client'=>$client,'client_policy'=>$clientPolicy]], 200);
|
|
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => []], 404);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function getAddOnPolicy()
|
|
{
|
|
try {
|
|
|
|
$addOnEmployeeData = $this->employeeModel->where('is_active', 1 )->where('emp_code',$this->request->getGet('emp_code'))->where('client_id',$this->request->getGet('client_id'))->where('is_addon_value',1)->findAll();
|
|
|
|
|
|
|
|
$clientPolicy = $this->clientPolicyModel->where('client_id',$this->request->getGet('client_id'))
|
|
->where('policy_status', 1)
|
|
->findAll();
|
|
// dd( $clientPolicy);
|
|
if(count($clientPolicy))
|
|
{
|
|
$PolicyData = [];
|
|
foreach ($clientPolicy as $key => $array) {
|
|
$responce = [];
|
|
|
|
$decodedArray = json_decode($array['policy_terms']);
|
|
$policy_terms = $decodedArray;
|
|
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard($array['id'],$array['client_id']);
|
|
|
|
$responce['policy_name'] = $this->policesModel->where('id',$array['policy_id'])->get()->getRow()->name;
|
|
$responce['SlabRates'] = $getSlabAndGridData['slab_rates'];
|
|
$responce['GridMaster'] = $getSlabAndGridData['grid_master'];
|
|
$responce['client_id'] = $array['client_id'];
|
|
$responce['client_policy_id'] = $array['id'];
|
|
$responce['is_addon'] = $array['is_addon'];
|
|
$responce['OpenForEnrollment'] = $array['open_for_enrollment'];
|
|
$responce['policy_terms'] = $decodedArray;
|
|
|
|
$tpaArray = $this->employeeModel->select('employees.name as name , employee_polices.tpa_id as tpa_id , employee_polices.rand_string as rand_string')
|
|
->join('employee_polices', 'employee_polices.employee_id = employees.id')
|
|
->where('employees.emp_code',$this->request->getGet('emp_code'))
|
|
->where('employees.is_active',1)
|
|
->where('employee_polices.client_policy_id',$array['id'])
|
|
->get()
|
|
->getResult();
|
|
|
|
if(count($tpaArray))
|
|
{
|
|
if($tpaArray[0]->tpa_id != null)
|
|
$responce['eCardDownload'] = base_url('download-e-card/') . $tpaArray[0]->rand_string;
|
|
else
|
|
$responce['eCardDownload'] = null;
|
|
|
|
}else{
|
|
$responce['eCardDownload'] = null;
|
|
}
|
|
|
|
if(count($getSlabAndGridData['slab_rates'])){
|
|
if($getSlabAndGridData['slab_rates'][0]['premium_type'] == 1)
|
|
{
|
|
$responce['floter_text_heading'] = 'Floater Sum Insured';
|
|
}else{
|
|
$responce['floter_text_heading'] = 'Sum Insured';
|
|
}
|
|
}
|
|
|
|
|
|
if($array['is_addon'] == 3)//dependent add on policy
|
|
{
|
|
|
|
|
|
// Map family floaters that already exist in the employee table
|
|
$familyFloates = $policy_terms->family_floaters;
|
|
// Convert familyFloaters terms data to plain array
|
|
$floters = $this->FloterConvertion($familyFloates);
|
|
|
|
|
|
$data = [];
|
|
$dependent_and_si_value = 0;
|
|
$dependent_and_si_premium_value = 0;
|
|
$dependent_and_si_gst_value = 0;
|
|
foreach ($floters as $familyFloatesValue) {
|
|
$dependent = preg_replace('/\d/', '', $familyFloatesValue);
|
|
if(count($addOnEmployeeData)){
|
|
foreach ($addOnEmployeeData as $key => $value) {
|
|
if ($value['family_floater_key'] === $dependent) {
|
|
$employee_policy = $this->employeePolicyModel->where('employee_id',$value['id'])->where('client_policy_id',$array['id'])->where('is_active', 1 )->get()->getRow();
|
|
if(isset($employee_policy->basic_cover_si)){ $dependent_and_si_value = $employee_policy->basic_cover_si; }
|
|
if(isset($employee_policy->premium)){ $dependent_and_si_premium_value = $dependent_and_si_premium_value + $employee_policy->premium;}
|
|
if(isset($employee_policy->gst)){ $dependent_and_si_gst_value = $dependent_and_si_gst_value + $employee_policy->gst;}
|
|
|
|
$temp['is_value_exist'] = true;
|
|
$temp['data']['family_floater_key'] = $familyFloatesValue;
|
|
$temp['data']['employee_id'] = $value['id'];
|
|
$temp['data']['relationship'] = $value['relationship'];
|
|
$temp['data']['name'] = $value['name'];
|
|
$temp['data']['dob'] = $this->convertDateFormatDMY($value['dob']);
|
|
$temp['data']['client_policy_id'] = $array['id'];
|
|
$temp['data']['form_type'] = $dependent;
|
|
$temp['data']['basic_cover_si'] = isset($employee_policy->basic_cover_si) ? $employee_policy->basic_cover_si : null;
|
|
$temp['data']['premium'] = isset($employee_policy->premium) ? $employee_policy->premium : null;
|
|
array_push($data,$temp);
|
|
unset($addOnEmployeeData[$key]);
|
|
$floters = array_diff($floters, [$familyFloatesValue]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//Remove Unwanted floter key from floters array based on either-parents-pil term value
|
|
if($familyFloates->{'either-parents-pil'} == 1 && count($floters))
|
|
{
|
|
if(count($addOnEmployeeData) == 0)
|
|
{
|
|
$GMCEmpData = $this->employeeModel->where('emp_code',$this->request->getGet('emp_code'))
|
|
->where('is_addon_value',0)
|
|
->where('is_active', 1 )
|
|
->where('family_floater_key','parent')
|
|
->findAll();
|
|
|
|
if(count($GMCEmpData) > 0){
|
|
$floters = array_diff($floters, ["parent1","parent2"]);
|
|
}else{
|
|
$floters = array_diff($floters, ["parent_in_law1","parent_in_law2"]);
|
|
}
|
|
}else{
|
|
|
|
$count_parent = 0;
|
|
$count_parent_in_law = 0;
|
|
foreach ($floters as $value) {
|
|
if (preg_replace('/\d/', '', $value) == 'parent') { $count_parent++; }
|
|
if (preg_replace('/\d/', '', $value) == 'parent_in_law') {$count_parent_in_law++;}
|
|
}
|
|
if($count_parent != 2) {
|
|
$floters = array_filter($floters, fn($value) => strpos($value, 'parent_in_law') === false);
|
|
}
|
|
if($count_parent_in_law != 2) {
|
|
$floters = array_filter($floters, fn($value) => strpos($value, 'parent') === false || strpos($value, 'parent_in_law') !== false);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add family floter buttons placement data for FE validation
|
|
if(count($floters)){
|
|
foreach ($floters as $familyFloatesValue) {
|
|
|
|
$temp2['is_value_exist'] = false;
|
|
$temp2['data']['family_floater_key'] = $familyFloatesValue;
|
|
$temp2['data']['client_policy_id'] = $array['id'];
|
|
$temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue)));
|
|
$temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue);
|
|
|
|
array_push($data,$temp2);
|
|
|
|
}
|
|
}
|
|
|
|
$responce['family_floaters_of_dependent_and_si_array'] = $data;
|
|
$responce['family_floaters_of_dependent_and_si_value'] = $dependent_and_si_value;
|
|
$responce['family_floaters_of_dependent_and_si_premium_value'] = $dependent_and_si_premium_value;
|
|
$responce['family_floaters_of_dependent_and_gst_value'] = $dependent_and_si_gst_value;
|
|
|
|
|
|
|
|
|
|
|
|
if($this->request->getGet('policy') == 'GMC-DEPENDENT-ADDON'){
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => ['gmc_dependent_addon'=>$responce]], 200);
|
|
}
|
|
|
|
//array_push($PolicyData, $responce);
|
|
|
|
}else if($array['is_addon'] == 2)//Topup policy
|
|
{
|
|
|
|
|
|
$getAddOnType = $this->clientPolicyModel->where('id',$array['base_policy'])->where('policy_status', 1)->get()->getRow();
|
|
$basePolicyAddOnType = $getAddOnType->is_addon;
|
|
// if is_addon value is 1 it is GMC if not it is one of the Add On policy
|
|
if($basePolicyAddOnType == 1){ $is_addon_value = 0; }else{ $is_addon_value = 1; }
|
|
$only_si_array = [];
|
|
$only_si_value = 0;
|
|
$only_si_premium_value = 0;
|
|
$only_si_gst_value = 0;
|
|
$BasePolicyEmployeeData = $this->employeeModel->where('is_active', 1 )->where('emp_code',$this->request->getGet('emp_code'))->where('client_id',$this->request->getGet('client_id'))->where('is_addon_value',$is_addon_value)->findAll();
|
|
foreach ($BasePolicyEmployeeData as $key => $value) {
|
|
|
|
$employee_policy = $this->employeePolicyModel->where('employee_id',$value['id'])->where('client_policy_id',$array['id'])->where('is_active', 1 )->get()->getRow();
|
|
if(isset($employee_policy->basic_cover_si)){ $only_si_value = $employee_policy->basic_cover_si; }
|
|
if(isset($employee_policy->premium)){ $only_si_premium_value = $only_si_premium_value + $employee_policy->premium;}
|
|
if(isset($employee_policy->gst)){ $only_si_gst_value = $only_si_gst_value + $employee_policy->gst;}
|
|
$temp3['is_value_exist'] = true;
|
|
$temp3['data']['employee_id'] = $value['id'];
|
|
$temp3['data']['relationship'] = $value['relationship'];
|
|
$temp3['data']['name'] = $value['name'];
|
|
$temp3['data']['dob'] = $this->convertDateFormatDMY($value['dob']);
|
|
$temp3['data']['client_policy_id'] = $array['id'];
|
|
$temp3['data']['basic_cover_si'] = isset($employee_policy->basic_cover_si) ? $employee_policy->basic_cover_si : null;
|
|
$temp3['data']['premium'] = isset($employee_policy->premium) ? $employee_policy->premium : null;
|
|
array_push($only_si_array,$temp3);
|
|
|
|
}
|
|
|
|
$responce['family_floaters_of_only_si_array'] = $only_si_array;
|
|
$responce['family_floaters_of_only_si_value'] = $only_si_value;
|
|
$responce['family_floaters_of_only_si_premium_value'] = $only_si_premium_value;
|
|
$responce['family_floaters_of_only_si_gst_value'] = $only_si_gst_value;
|
|
|
|
if($this->request->getGet('policy') == 'GMC-SI-TOPUP'){
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => ['gmc_si_topup'=>$responce]], 200);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
|
|
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => []], 200);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function iAgreeForAddOn()
|
|
{
|
|
|
|
|
|
$postData = json_decode($this->request->getBody(), true);
|
|
$client_policy_id = $postData['client_policy_id'];
|
|
$emp_code = $postData['emp_code'];
|
|
$client_id = $postData['client_id'];
|
|
|
|
$this->employeeModel->where('emp_code', $emp_code )
|
|
->where('client_id', $client_id )
|
|
->where('is_active', 1 )
|
|
->set(array('emp_status'=>'enrolled'))
|
|
->update();
|
|
|
|
if (!is_null($client_policy_id) && is_array($client_policy_id))
|
|
{
|
|
foreach ($client_policy_id as $key => $value)
|
|
{
|
|
$this->employeePolicyModel->where('client_policy_id', $value )
|
|
->where('is_active', 1 )
|
|
->set(array('status'=>'enrolled'))
|
|
->update();
|
|
}
|
|
}
|
|
|
|
return $this->respond(['status' => 'success','code' => 200,'data' => [] ], 200);
|
|
}
|
|
|
|
//Post method - which receives client_policy id and empcode of the family.
|
|
//Pull records againest emp code and calculate premium
|
|
// retun array
|
|
public function calculatePremium($clientPolicyId = null , $empCode = null, $default_si = null)//family level
|
|
{
|
|
helper('excel_util_helper');
|
|
$client_policy_id = $this->request->getVar('client_policy_id') ?? $clientPolicyId;
|
|
$emp_code = $this->request->getVar('emp_code') ?? $empCode;
|
|
$default_si = $this->request->getVar('si') ?? $default_si;// si amt which choosed in add on policy
|
|
// dd($client_policy_id);
|
|
|
|
|
|
$client_id = ($this->clientPolicyModel->select('client_id')->find($client_policy_id))['client_id'];
|
|
// get policy and rack details
|
|
$policy_terms = $this->clientPolicyModel->getPolicyDetails($client_id,$client_policy_id);
|
|
$policy_type = $policy_terms[0]->is_addon;
|
|
$base_policy = $policy_terms[0]->base_policy;
|
|
$policy_terms = (array) $policy_terms[0];// convert obj to array
|
|
|
|
//get policy slab rates
|
|
$slab_details = $this->policesModel->getPolicySlabRatesForEmpOnboard($client_policy_id,$client_id);
|
|
// print_r($slab_details);die();
|
|
|
|
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_code: $emp_code,emp_status:['draft','enrolled'],policy_status:['draft','enrolled']);
|
|
|
|
if(!count($existing_famility_details) && $policy_type == 2)//top up addon only
|
|
{
|
|
//get basepolicy id then pull emplist from base policy if only current policy is DA addon policy and emplist is zero
|
|
// echo 'inside';
|
|
$client_policy_id = $base_policy;
|
|
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_code: $emp_code,emp_status:['draft','enrolled'],policy_status:['draft','enrolled']);
|
|
}
|
|
|
|
$file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception'];
|
|
// dd($this->employeeModel->getLastQuery());
|
|
// print_r($existing_famility_details);die();
|
|
$employee_data_group_by_family = data_group_by_family($existing_famility_details,$data_source = 'db');
|
|
// print_r(($employee_data_group_by_family));die();
|
|
foreach ($employee_data_group_by_family as $emp_id => $family)
|
|
{
|
|
$transformed_famility_details = transform_db_data_to_excel($family);
|
|
// print_r($transformed_famility_details);die();
|
|
$data = calculate_premimum($transformed_famility_details,$policy_terms,$slab_details,$file,$default_si);
|
|
// dd($data);
|
|
$employee_data_group_by_family[$emp_id] = $data;
|
|
|
|
}
|
|
|
|
if($clientPolicyId != null && $empCode != null)
|
|
{
|
|
return $employee_data_group_by_family;
|
|
}else{
|
|
// dd ($employee_data_group_by_family);
|
|
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 404),'data' => [$employee_data_group_by_family] ], 200);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function getCashDepositData()
|
|
{
|
|
|
|
$ClientPolicyData = $this->clientPolicyModel->select('client_policy.client_id as clientId , client_policy.insurer_id as insurerId,insurers.name as insurer_name')
|
|
->join('insurers', 'client_policy.insurer_id = insurers.id', 'left')
|
|
->where('client_policy.client_id', $this->request->getGet('client_id') )
|
|
->groupBy('client_policy.insurer_id')
|
|
->findAll();
|
|
$result = [];
|
|
|
|
if(count($ClientPolicyData))
|
|
{
|
|
foreach ($ClientPolicyData as $key => $value) {
|
|
|
|
$data['clientId'] = $value['clientId'];
|
|
$data['insurerId'] = $value['insurerId'];
|
|
$data['insurerName'] = $value['insurer_name'];
|
|
$data['depositData'] = $this->clientPolicyModel->getdepositData($value['clientId'],$value['insurerId']);
|
|
$data['balance'] = count($data['depositData']) ? $data['depositData'][0]->balance : 0;
|
|
|
|
$data['policyDetails'] = [];
|
|
$ClientPolicyData =$this->clientPolicyModel->select('client_policy.id as client_policy_id , client_policy.client_id as client_id, policies.id as policy_id,policies.policy_type_id as policy_type_id, policies.name as policy_name , client_policy.is_addon as is_addon')
|
|
->join('policies', 'client_policy.policy_id = policies.id', 'left')
|
|
->where('client_policy.insurer_id', $value['insurerId'] )
|
|
->where('client_policy.client_id', $this->request->getGet('client_id') )
|
|
->findAll();
|
|
foreach ($ClientPolicyData as $key => $value)
|
|
{
|
|
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard( $value['client_policy_id'],$value['client_id']);
|
|
if($value['is_addon'] == "2"){ $value['type'] = 'SI TopUp'; }else if($value['is_addon'] == "3"){ $value['type'] = 'Dependent AddOn'; }else{ $value['type'] = $getSlabAndGridData['grid_master']['policy_type']; }
|
|
$employeeDetails = $this->employeePolicyModel->getEmployeePolicy( client_id:$value['client_id'],policy_id: $value['client_policy_id'],status:0);
|
|
$enrolledCount = 0;
|
|
$draftCount = 0;
|
|
if(count($employeeDetails))
|
|
{
|
|
foreach ($employeeDetails as $item) {
|
|
if ($item['emp_status'] === 'enrolled') {
|
|
$enrolledCount++;
|
|
} elseif ($item['emp_status'] === 'draft') {
|
|
$draftCount++;
|
|
}
|
|
}
|
|
}
|
|
|
|
$value['totalMembersCount'] = count($employeeDetails);
|
|
$value['membersCountOfEnrolled'] = $enrolledCount;
|
|
$value['membersCountOfDraft'] = $draftCount;
|
|
|
|
array_push($data['policyDetails'],$value);
|
|
}
|
|
|
|
|
|
array_push($result,$data);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if($result)
|
|
{
|
|
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 404),'data' => $result ], 200);
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 404),'data' => [] ], 200);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function exportCashDepositData()
|
|
{
|
|
|
|
$CashDepositData = $this->clientPolicyModel->getdepositData($this->request->getGet('client_id'),$this->request->getGet('insurer_id'));
|
|
|
|
// echo '<pre>';print_r($CashDepositData); echo '</pre>';die;
|
|
|
|
if(count($CashDepositData))
|
|
{
|
|
// Define headers and map database fields to Excel fields
|
|
$headers = [
|
|
'Date' => 'created_at',
|
|
'Type' => 'transaction_type',
|
|
'Amount' => 'amount',
|
|
'Balance' => 'balance',
|
|
'Description' => 'description',
|
|
'Insurer Name' => 'insurer_name',
|
|
'Client Name' => 'clientname'
|
|
];
|
|
|
|
// Create a new Spreadsheet object
|
|
$spreadsheet = new Spreadsheet();
|
|
|
|
// Get the active sheet
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
|
|
// Add headers
|
|
$column = 'A';
|
|
foreach ($headers as $header => $dbField) {
|
|
$sheet->setCellValue($column . '1', $header);
|
|
$column++;
|
|
}
|
|
|
|
// Add data
|
|
$row = 2;
|
|
foreach ($CashDepositData as $Cashvalue) {
|
|
$column = 'A';
|
|
foreach ($headers as $dbField) {
|
|
$sheet->setCellValue($column . $row, $Cashvalue->$dbField);
|
|
$column++;
|
|
}
|
|
$row++;
|
|
}
|
|
|
|
|
|
// Set the header for download
|
|
$filename = $CashDepositData[0]->insurer_name.'-CashDeposit.xlsx';
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="' . $filename . '"');
|
|
header('Cache-Control: max-age=0');
|
|
|
|
// Save the Excel file to output
|
|
$writer = new Xlsx($spreadsheet);
|
|
$writer->save('php://output');
|
|
exit;
|
|
|
|
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
|
|
|
|
}else{
|
|
|
|
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public function removeEmpAndEmpPolicyData()
|
|
{
|
|
try {
|
|
|
|
$clientPolicy = $this->clientPolicyModel->where('id',$this->request->getGet('client_policy_id'))->findAll();
|
|
|
|
if(count($clientPolicy))
|
|
{
|
|
|
|
|
|
if($clientPolicy[0]['is_addon'] == 2)//Topup
|
|
{
|
|
$empData = $this->employeeModel->where('emp_code',$this->request->getGet('emp_code'))
|
|
->where('is_addon_value', 0 )->findAll();
|
|
if(count($empData))
|
|
{
|
|
foreach ($empData as $key => $value) {
|
|
|
|
$this->employeePolicyModel->where('client_policy_id',$this->request->getGet('client_policy_id') )
|
|
->where('employee_id', $value['id'] )
|
|
->set(array('is_active'=> 0 ))
|
|
->update();
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
else if($clientPolicy[0]['is_addon'] == 3)//Dependent addon
|
|
{
|
|
$empData = $this->employeeModel->where('emp_code',$this->request->getGet('emp_code'))
|
|
->where('is_addon_value', 1 )->findAll();
|
|
if(count($empData))
|
|
{
|
|
foreach ($empData as $key => $value) {
|
|
|
|
$this->employeePolicyModel->where('client_policy_id',$this->request->getGet('client_policy_id') )
|
|
->where('employee_id', $value['id'] )
|
|
->set(array('is_active'=> 0 ))
|
|
->update();
|
|
|
|
}
|
|
|
|
$this->employeeModel->where('emp_code', $this->request->getGet('emp_code') )
|
|
->where('is_active', 1 )->where('is_addon_value', 1 )
|
|
->set(array('is_active'=> 0 ))
|
|
->update();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
|
|
|
|
}else{
|
|
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 404);
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} |