diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index 4edaa27..20a170e 100755
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -430,6 +430,8 @@ $routes->post("/employeeRest/getVerifiedUserData", "RestAuthenticationController
$routes->post("/employeeRest/verifyMpin", "RestAuthenticationController::verifyMpin");
$routes->post("/employeeRest/checkMpin", "RestAuthenticationController::checkMpin");
$routes->post("/employeeRest/verifyEmployeeEmailId", "RestAuthenticationController::verifyEmployeeWithEmailId");
+// $routes->post("/employeeRest/saveMpin", "RestAuthenticationController::saveMpin");
+
//HR login api's
$routes->post("/employeeRest/verifyHrWithMobileNumber", "RestAuthenticationController::verifyHrWithMobileNumber");
@@ -440,13 +442,18 @@ $routes->group("/api", ["filter" => "authJWT"], function ($routes) {
$routes->post("getId", "RestAuthenticationController::getUserIdFromToken");
});
+$routes->post("employeeRest/saveMpin", "RestAuthenticationController::saveMpin");
+$routes->post("employeeRest/updateMpin", "RestAuthenticationController::updateMpin");
+
+// $routes->post("employeeRest/createOrUpdateEmployeePolicySiAmount", "EmployeeRestController::createOrUpdateEmployeePolicySiAmount");
+// $routes->post("employeeRest/calculatePremium", "EmployeeRestController::calculatePremium");
+
$routes->group("employeeRest", ["filter" => "authJWT"], function ($routes) {
- $routes->post("getVerifiedUserData", "RestAuthenticationController::getVerifiedUserData");
+ // $routes->post("getVerifiedUserData", "RestAuthenticationController::getVerifiedUserData");
$routes->post("storeFireBase", "EmployeeRestController::storeFireBase");
- $routes->post("saveMpin", "RestAuthenticationController::saveMpin");
- $routes->post("updateMpin", "RestAuthenticationController::updateMpin");
+ // $routes->post("updateMpin", "RestAuthenticationController::updateMpin");
$routes->post("getChatResponse", "ChatBotController::getChatResponse");
$routes->get("getEmployeeProfile", "EmployeeRestController::getEmployeeProfile");
@@ -486,6 +493,9 @@ $routes->post("sendEmail", "EmployeeRestController::send_email");
$routes->get("getBackToEnrolledDetails", "EmployeeRestController::getBackToEnrolledDetails");
-// Ticketing System
+//crone job
+$routes->cli('cli/enrollOpendAndClose', 'DashboardController::updatePolicyEnrollmentStatus');
+$routes->cli("cli/sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail");
-// Ticketing System End's
+$routes->get('enrollOpendAndClose', 'DashboardController::updatePolicyEnrollmentStatus');
+$routes->get("sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail");
diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php
index 3722a30..4abc8dd 100755
--- a/app/Controllers/DashboardController.php
+++ b/app/Controllers/DashboardController.php
@@ -201,12 +201,15 @@ class DashboardController extends AdminController
return $this->respond(['status' => 'success']);
}
+ //--------------- FOR CRONE JOB -----------------------------------------------------------------------------------------
public function updatePolicyEnrollmentStatus()
{
$clientPolicyModel = new ClientPolicyModel();
$myLogger = \Config\Services::mylogger();
-
+
+ $myLogger->logme('error', 'update Policy Enrollment Status Function called');
+ $myLogger->logme('error', 'OPEN OR CLOSE FOR ENROLLMENT UPDATE START TIME {{ ' . date('d-m-Y H:i:s a') . ' }}');
$client_policy_data = $clientPolicyModel->getPolicyDetailsForEnrollment();
$myLogger->logme('error', 'Fetched client policy data for Enrollment Status update');
@@ -226,17 +229,29 @@ class DashboardController extends AdminController
if ($currentDate == $openDate) {
$clientPolicyModel->update($id, ['open_for_enrollment' => 1]);
$openEnrollment[] = $id;
- $myLogger->logme('error', 'Updated policy ID ' . $id . ' to open for enrollment.');
+ // $myLogger->logme('error', 'Updated policy ID ' . $id . ' to open for enrollment.');
}
if ($closeDate < $currentDate) {
$clientPolicyModel->update($id, ['open_for_enrollment' => 0]);
$closeEnrollment[] = $id;
- $myLogger->logme('error', 'Updated policy ID ' . $id . ' to close for enrollment.');
+ // $myLogger->logme('error', 'Updated policy ID ' . $id . ' to close for enrollment.');
}
}
- $myLogger->logme('error', 'enrollment_status function completed');
+ $this->myLogger->logme('info', 'Policy Enrollment Status Update: ' . json_encode([
+ 'status' => true,
+ 'message' => 'Updated Policy Enrollment Status',
+ 'open_policy_count' => count($openEnrollment),
+ 'close_policy_count' => count($closeEnrollment),
+ 'open_policy_ids' => $openEnrollment,
+ 'close_policy_ids' => $closeEnrollment,
+ ], JSON_PRETTY_PRINT));
+
+
+ $myLogger->logme('error', 'update Policy Enrollment Status Function completed');
+ $myLogger->logme('error', 'OPEN OR CLOSE FOR ENROLLMENT UPDATE END TIME {{ ' . date('d-m-Y H:i:s a') . ' }}');
+
return $this->respond([
'status' => true,
'message' => 'updated Policy Enrollment Status',
@@ -252,7 +267,9 @@ class DashboardController extends AdminController
{
$clientPolicyModel = new ClientPolicyModel();
$myLogger = \Config\Services::mylogger();
-
+
+ $myLogger->logme('error', 'SEND REMINDER MAIL FUNCTION START TIME {{ ' . date('d-m-Y H:i:s a') . ' }}');
+
$client_policy_data = $clientPolicyModel->getPolicyDetailsForRemainder();
$myLogger->logme('error', 'Fetched client policy data');
@@ -262,6 +279,8 @@ class DashboardController extends AdminController
$result = $this->sendRemainderMail($client_policy_data, 'crone');
$myLogger->logme('error', 'sendCroneRemainderMail function completed');
+ $myLogger->logme('error', 'SEND REMINDER MAIL FUNCTION END TIME {{ ' . date('d-m-Y H:i:s a') . ' }}');
+
if($result){
return json_encode(['status' => true, 'message' => 'Mail send successfully']);
@@ -270,6 +289,9 @@ class DashboardController extends AdminController
}
}
+ //--------------------------------------------------------------------------------------------------------
+
+
public function featch_dashboard_data($type)
{
$pendingActionsController = new PendingActionsController;
@@ -308,7 +330,7 @@ class DashboardController extends AdminController
public function sendRemainderMail($client_policy_data, $send_mail_for_manual_or_crone = null)
{
- // $this->myLogger->logme('error', 'sendRemainderMail function called');
+ $this->myLogger->logme('error', 'send Remainder Mail function called');
// dd($client_policy_data, $send_mail_for_manual_or_crone);
@@ -508,7 +530,7 @@ class DashboardController extends AdminController
}
} else {
- $this->myLogger->logme('error', "SEND REMAINDER CRONE --- Remainder date is empty()");
+ $this->myLogger->logme('error', "send Remainder crone --- Remainder date is empty()");
}
}
@@ -519,24 +541,37 @@ class DashboardController extends AdminController
}
}
- // dd($reminder_whole_mail);
+ // dd($reminder_whole_mail, count($reminder_whole_mail));
// print_rr($reminder_whole_mail); die;
// Process and queue bulk emails
if (!empty($reminder_whole_mail) && count($reminder_whole_mail) > 0) {
+ $this->myLogger->logme('error', 'Remainder mail count: ' . count($reminder_whole_mail));
$reminder_whole_mail = array_chunk($reminder_whole_mail, 20);
foreach ($reminder_whole_mail as $key => $value) {
// $job_details = new Jobs();
$r = Jobs::addJob(['job_name' => 'bulk_mail', 'payload' => $value]);
+ $this->myLogger->logme('error', 'Bulk mail upload jobs completed successfully. Total: ' . count($value));
}
+
+ $this->myLogger->logme('error', 'Remainder mails sent successfully');
+
+ }else{
+ $this->myLogger->logme('error', "No reminder mail sent.");
}
- if (count($reminder_whole_mail) > 0) {
+ $this->myLogger->logme('error', 'send Remainder Mail function completed');
+
+ // dd($reminder_whole_mail);
+
+ $mailCount = count($reminder_whole_mail);
+ if ($mailCount > 0) {
return true;
} else {
return false;
}
+
}
public function sendManualReminder($client_id, $client_branch_id, $client_policy_id = null)
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index bafc79c..e49359e 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -105,7 +105,7 @@ class EmployeeController extends AdminController
// Convert the status field to an array if it exists in the request data
if (isset($filterData['status']) && !empty($filterData['status'])) {
- $filterData['status'] = explode(",", $filterData['status']);
+ // $filterData['status'] = explode(",", $filterData['status']);
}else{
$filterData['status'] = [];
}
diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php
index 1316a13..b044747 100755
--- a/app/Controllers/EmployeeRestController.php
+++ b/app/Controllers/EmployeeRestController.php
@@ -227,6 +227,8 @@ class EmployeeRestController extends AdminController
try {
$data = $this->request->getJSON();
+ // dd($data);
+
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id);
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
@@ -252,7 +254,7 @@ class EmployeeRestController extends AdminController
$item->gender = $this->GenderMap($item->relationship , $item->emp_code);
$item->dob = $this->convertDateFormatYMD($item->dob);
$item->emp_status = 'draft';
-
+ // dd($item);
$employee = $this->employeeModel->insert($item);
if ($employee) {
@@ -348,6 +350,7 @@ class EmployeeRestController extends AdminController
$data['status']= 'draft';
$data['date_coverage'] = $this->getEmployeeCoverageDate($emp_code, $client_policy_id);
+ // dd($data);
$this->employeePolicyModel->insert($data);
}
@@ -513,6 +516,9 @@ class EmployeeRestController extends AdminController
$requestData = $this->request->getJSON();
+ // print_r($requestData);
+ // dd($requestData);
+
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id);
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
@@ -524,7 +530,7 @@ class EmployeeRestController extends AdminController
->where('is_active', 1 )
->findAll();
-
+ // dd($checkIfExist);
if ($checkIfExist) {
$empPolicy = $this->employeePolicyModel->updateSiAndPremium($value->client_policy_id, $value->employee_id, $value->basic_cover_si);
@@ -2254,7 +2260,7 @@ class EmployeeRestController extends AdminController
// 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']);
- // kint::dump($existing_famility_details);
+ // kint::dump($existing_famility_decalculatePremiumtails);
//get the Auto SI amount
$auto_si_data = update_si_with_auto_si($client_id, $client_policy_id, $emp_code, $client_branch_id, $existing_famility_details);
@@ -2274,8 +2280,8 @@ class EmployeeRestController extends AdminController
{
//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']);
+ // $client_policy_id = $base_policy;
+ $existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $base_policy,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'];
@@ -2292,10 +2298,32 @@ class EmployeeRestController extends AdminController
$transformed_famility_details = transform_db_data_to_excel($family);
$data = calculate_premium_new(family_data: $transformed_famility_details,policy_terms:$policy_terms,slab_details:$slab_details,fileArr: $file,existing_units: $existing_units,default_si : $default_si);
-
+ // print_r($data);
$employee_data_group_by_family[$emp_id] = $data;
+
+ foreach ($data as $value) {
+ $newData = [];
+ $newData['employee_id'] = $value['temp']['emp_id'];
+ $newData['client_policy_id'] = $value['policy_details']['client_policy_id'];
+ $newData['status'] = "draft";
+ $newData['basic_cover_si'] = $value['policy_details']['basic_cover_si'];
+ $newData['date_coverage'] = $value['policy_details']['date_coverage'];
+ $newData['policy_end_date'] = $value['policy_details']['policy_end_date'];
+ $newData['days'] = $value['policy_details']['days'];
+
+
+ $isExistingEmpAndPolicy = $this->employeePolicyModel->where('employee_id',$value['temp']['emp_id'])->where('client_policy_id',$value['policy_details']['client_policy_id'])->where('is_active', 1)->get()->getRow();
+ if($isExistingEmpAndPolicy)
+ {
+ $this->employeePolicyModel->where('employee_id',$value['temp']['emp_id'])->where('client_policy_id',$value['policy_details']['client_policy_id'])->where('is_active', 1)->set($newData)->update();
+ }else{
+ $this->employeePolicyModel->insert($newData);
+ }
+
}
-
+
+ }
+ // die();
if($clientPolicyId != null && $empCode != null)
{ // dd ($employee_data_group_by_family);
return $employee_data_group_by_family;
diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php
index 132488f..a6c146f 100755
--- a/app/Controllers/EmployeeServiceController.php
+++ b/app/Controllers/EmployeeServiceController.php
@@ -28,6 +28,9 @@ use App\Controllers\JobWorker ;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use Kint\Kint;
+use App\Helpers\ExcelSanitizeHelper;
+
+
class EmployeeServiceController extends AdminController
{
@@ -1656,6 +1659,8 @@ class EmployeeServiceController extends AdminController
// $this->myLogger->logme('error',('Insert - ' . $value['emp_code'] .' - '. $value['name']));
// echo 'update emp';
}
+ $value = ExcelSanitizeHelper::sanitizeArrayData($value);
+
$this->employeeModel->save($value);
if (isset($value['id'])) {
$emp_id = $value['id'];
@@ -2077,6 +2082,7 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){
$value['created_by'] = $file['created_by'];
$log_message = 'Enrollment Insert Employee- '.$value['name'] .'('.$value['emp_code'] .') with PK ';
}
+ $value = ExcelSanitizeHelper::sanitizeArrayData($value);
$this->employeeModel->save($value);
if (isset($value['id']))
diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php
index f8614ce..c1722ad 100755
--- a/app/Controllers/MasterController.php
+++ b/app/Controllers/MasterController.php
@@ -1662,6 +1662,9 @@ class MasterController extends AdminController
}
public function testZeptoSMTP() {
+
+ echo "Inside the testZeptoSMTP function";
+
$message = '
Dear {{RECIPIENT_NAME}},
We are reaching out to request a quotation for the following insurance coverage. Please review the details below and provide your quote at your earliest convenience.
RFQ Details
| Client name | {{CLIENT_NAME}} |
|---|
| Coverage Type | {{POLICY_LONG_NAME}} |
|---|
| Policy Start Date | {{POLICY_START_DATE}} |
|---|
| Policy Duration | {{DURATION}} |
|---|
Please note: Additional terms and details are included in the attachment for your reference.
Please feel free to reach out if you require any further information to prepare the quote. We look forward to receiving your proposal.
Best regards,
Nhance India Pvt Ltd
';
$attachments = [
["filePath" => ROOTPATH."public/sample_excel/sample_addition.xls","fileName" => "sample_addition.xls"],
@@ -1670,9 +1673,14 @@ class MasterController extends AdminController
];
$email_id = 'srinivas.saravanan@venbainfotech.com';
$common = ['mail_type'=>'test_mail_cli'];
+ $bcc = 'venkateshraman786@gmail.com, srinivassaravanan2002@gmail.com, venkatesh.r@venbainfotech.com';
+ $cc = 'gowtham.manavalan.la@gmail.com, venkatraj.office@gmail.com';
+
+ // print_r($bcc);die();
+
// Send email and get response
- $result = MailHelper::send_email(['mail' => $email_id, 'subject' => 'Mail Via CLI', 'message' => $message,'attachments' => $attachments,'common'=>$common]);
-
+ $result = MailHelper::send_email(['mail' => $email_id, 'subject' => 'Mail Via CLI', 'message' => $message, 'bcc'=>$bcc, 'cc'=>$cc, 'attachments' => $attachments,'common'=>$common]);
+ print_r($result);
log_message('error',json_encode($result));
// Format the response for display/debugging
diff --git a/app/Controllers/RestAuthenticationController.php b/app/Controllers/RestAuthenticationController.php
index 216e461..a4a98d5 100755
--- a/app/Controllers/RestAuthenticationController.php
+++ b/app/Controllers/RestAuthenticationController.php
@@ -346,6 +346,7 @@ class RestAuthenticationController extends AdminController
$id= $employeeData["id"];
$updateMpin = $this->employeeModel->where('id', $id)->set('mpin', $mpin)->update();
if($updateMpin){
+ $this->callThirdPartyAPI($this->request->getJSON(), 'updateEmpMPIN');
$result = ['user_verification' => true , 'message' => "Mpin Updated"];
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
}else{
@@ -355,10 +356,10 @@ class RestAuthenticationController extends AdminController
} else {
- $result = ['user_verification' => false , 'message' => "User not found"];
- return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
+ return $this->callThirdPartyAPI($this->request->getJSON(), 'saveMpin');
}
+
} catch (\Throwable $th) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
}
@@ -386,6 +387,7 @@ class RestAuthenticationController extends AdminController
$id= $employeeData["id"];
$updateMpin = $this->employeeModel->where('id', $id)->set('mpin', $mpin)->update();
if($updateMpin){
+ $this->callThirdPartyAPI($this->request->getJSON(), 'updateEmpMPIN');
$result = ['mpin_verification' => true , 'message' => "Mpin Updated"];
return $this->respond(['status' => 'success','code' => 200,'data' => $result],200);
}else{
@@ -395,8 +397,7 @@ class RestAuthenticationController extends AdminController
} else {
- $result = ['mpin_verification' => false , 'message' => "Wrong Mpin"];
- return $this->respond(['status' => 'failed','code' => 404,'data' => $result],200);
+ return $this->callThirdPartyAPI($this->request->getJSON(), 'updateMpin');
}
} catch (\Throwable $th) {
@@ -412,39 +413,44 @@ class RestAuthenticationController extends AdminController
$email_id = isset($this->request->getJSON()->email_id) ? $this->request->getJSON()->email_id : null;
$mpin = $this->request->getJSON()->mpin;
- if (isset($mobile_number))
- {
+ if (isset($mobile_number)) {
$employeeData = $this->employeeModel->where('mobile', $mobile_number)->where('relationship', 'self')->first();
- }else{
+ } else {
$employeeData = $this->employeeModel->where('email_corporate', $email_id)->where('relationship', 'self')->first();
}
-
+
if ($employeeData && $mpin == $employeeData["mpin"]) {
$auth = HttpRequestHelper::getRequestInfo();
if ($auth) {
$data = [
- 'user_id' => $employeeData['id'],
- 'user_type' => 'employee',
- 'ip' => $auth['ip'],
- 'platform' => $auth['platform'],
- 'broswer' => $auth['browser'],
+ 'user_id' => $employeeData['id'],
+ 'user_type' => 'employee',
+ 'ip' => $auth['ip'],
+ 'platform' => $auth['platform'],
+ 'broswer' => $auth['browser'],
];
- $authdata= $this->authHistoryModel->insert($data);
-
+ $authdata = $this->authHistoryModel->insert($data);
}
$result = JWTToken::encode($employeeData);
// Call the third-party API function
- $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'verifyMpin');
- return $this->respond(['status' => 'success','code' => 200,'data' => $result , 'post_enrollment'=> json_decode($apiResponse, true)],200);
+ $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(), 'verifyMpin');
+ return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result, 'post_enrollment' => json_decode($apiResponse, true)], 200);
} else {
+
// Call the third-party API function
- $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'getVerifiedUserData');
- return $this->respond(['status' => 'failed','code' => 404,'data' => "Invalid OTP", 'post_enrollment'=> json_decode($apiResponse, true)],200);
+
+ $apiResponse = $this->callThirdPartyAPI($this->request->getJSON(), 'verifyMpin');
+ return $this->respond(['status' => 'failed', 'code' => 404, 'data' => "Invalid OTP", 'post_enrollment' => json_decode($apiResponse, true)], 200);
+
+ //$apiResponse = $this->callThirdPartyAPI($this->request->getJSON(),'/getVerifiedUserData');
+ // return $this->respond(['status' => 'failed','code' => 404,'data' => "Invalid OTP", 'post_enrollment'=> json_decode($apiResponse, true)],200);
+
}
} catch (\Exception $e) {
- return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
+ return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
+ return $this->respond(['status' => 'failed', 'code' => 200, 'post_enrollment' => json_decode($apiResponse, true)], 200);
}
}
@@ -465,7 +471,9 @@ class RestAuthenticationController extends AdminController
return $this->respond(['status' => 'success','code' => 200,'data' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"]],200);
} else {
- return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
+ // return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
+ return $this->callThirdPartyAPI($this->request->getJSON(), 'checkMpin');
+
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
diff --git a/app/Helpers/MailHelper.php b/app/Helpers/MailHelper.php
index 87f25cc..adcbf2c 100755
--- a/app/Helpers/MailHelper.php
+++ b/app/Helpers/MailHelper.php
@@ -318,33 +318,34 @@ class MailHelper
'htmlbody' => $message
];
+
// Add CC recipients if provided
if (!empty($cc)) {
- $postData['cc'] = [];
- // Handle both string and array inputs for CC
- $ccEmails = is_array($cc) ? $cc : [$cc];
- foreach ($ccEmails as $ccEmail) {
- $postData['cc'][] = [
+ $ccList = explode(',', $cc);
+ $ccList = array_map('trim', $ccList);
+ $postData['cc'] = array_map(function ($email) {
+ return [
'email_address' => [
- 'address' => $ccEmail
+ 'address' => $email
]
];
- }
+ }, $ccList);
}
- // Add BCC recipients if provided
+
+ // Add BCC if present
if (!empty($bcc)) {
- $postData['bcc'] = [];
- // Handle both string and array inputs for BCC
- $bccEmails = is_array($bcc) ? $bcc : [$bcc];
- foreach ($bccEmails as $bccEmail) {
- $postData['bcc'][] = [
+ $bccList = explode(',', $bcc);
+ $bccList = array_map('trim', $bccList);
+ $postData['bcc'] = array_map(function ($email) {
+ return [
'email_address' => [
- 'address' => $bccEmail
+ 'address' => $email
]
];
- }
+ }, $bccList);
}
+ //
// Handle attachments
if (!empty($attachments)) {
diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php
index b584f42..c29345c 100755
--- a/app/Models/EmployeePolicyModel.php
+++ b/app/Models/EmployeePolicyModel.php
@@ -112,10 +112,40 @@ class EmployeePolicyModel extends Model
'emp.basic_pay',
'emp.band as grade',
'policy_type.policy_type',
- 'policy_type.id as policy_type_id',
'client_branch.branch_name as client_branch_name',
'client_branch.branch_code as client_branch_code',
'cp.policy_no',
+ 'cp.policy_type_id',
+
+ // Name audit trail
+ '(SELECT old_value FROM auditing_history WHERE pk = emp.id AND field_name = "name" AND table_name = "employees" ORDER BY id ASC LIMIT 1) AS name_first_old',
+ '(SELECT new_value FROM auditing_history WHERE pk = emp.id AND field_name = "name" AND table_name = "employees" ORDER BY id DESC LIMIT 1) AS name_last_new',
+
+ // DOB audit trail
+ '(SELECT old_value FROM auditing_history WHERE pk = emp.id AND field_name = "dob" AND table_name = "employees" ORDER BY id ASC LIMIT 1) AS dob_first_old',
+ '(SELECT new_value FROM auditing_history WHERE pk = emp.id AND field_name = "dob" AND table_name = "employees" ORDER BY id DESC LIMIT 1) AS dob_last_new',
+
+ // Gender audit trail
+ '(SELECT old_value FROM auditing_history WHERE pk = emp.id AND field_name = "gender" AND table_name = "employees" ORDER BY id ASC LIMIT 1) AS gender_first_old',
+ '(SELECT new_value FROM auditing_history WHERE pk = emp.id AND field_name = "gender" AND table_name = "employees" ORDER BY id DESC LIMIT 1) AS gender_last_new',
+
+ '(CASE
+ WHEN emp.relationship = "Self"
+ THEN (SELECT COUNT(id) FROM employees WHERE emp_code = emp.emp_code AND is_active = 0 AND emp_status != "truncated")
+ ELSE NULL
+ END) AS removed_count',
+
+ '(CASE
+ WHEN emp.relationship != "Self" AND emp.created_at != (
+ SELECT created_at
+ FROM employees
+ WHERE emp_code = emp.emp_code AND relationship = "Self" AND is_active = 1
+ LIMIT 1
+ )
+ THEN "Newly Added"
+ ELSE NULL
+ END) AS newly_added',
+
])
->join('employees emp', 'employee_polices.employee_id = emp.id')
->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') //cp - client policy
@@ -129,7 +159,9 @@ class EmployeePolicyModel extends Model
->join('client_branch', 'emp.client_branch_id = client_branch.id') //cm - client master
->orderBy('emp.emp_code', 'ASC')
->orderBy('employee_polices.employee_id', 'ASC');
- // Conditionally add where clauses
+
+
+ // Conditionally add where clauses
if ($client_id != 0 && !empty($client_id)) {
$result->where('emp.client_id', $client_id);
}
@@ -187,6 +219,114 @@ class EmployeePolicyModel extends Model
return $res;
}
+
+ // public function getEmployeePolicy($client_id = 0, $policy_id = 0, $status = [], $branch_id = 0, $emp_code = "", $emp_name = "")
+ // {
+ // // dd($status);
+
+ // $result = $this->select([
+ // 'employee_polices.*',
+ // 'policy_type.policy_type as policy_name',
+ // 'im.short_name as insurer_short_name',
+ // 'ib.branch_name as insurer_branch_name',
+ // 'ib.branch_code as insurer_branch_code',
+ // 'tpam.name as tpa_name',
+ // 'tpam.short_name as tpa_short_name',
+ // 'tpab.branch_code as tpa_branch_code',
+ // 'cm.client_name',
+ // 'cm.short_name as client_short_name',
+ // // 'emp.id as employee_primary_id',
+ // 'emp.relationship',
+ // 'emp.relationship_code',
+ // 'emp.change_event',
+ // 'emp.emp_code',
+ // 'emp.name',
+ // 'emp.email_corporate',
+ // 'emp.dob',
+ // 'DATE_FORMAT(emp.dob, "%d/%m/%Y") AS formatted_dob',
+ // 'emp.gender',
+ // 'emp.emp_status',
+ // 'emp.is_active as emp_is_active',
+ // 'emp.mobile as mobile',
+ // 'emp.doj',
+ // 'emp.basic_pay',
+ // 'emp.band as grade',
+ // 'policy_type.policy_type',
+ // 'policy_type.id as policy_type_id',
+ // 'client_branch.branch_name as client_branch_name',
+ // 'client_branch.branch_code as client_branch_code',
+ // 'cp.policy_no',
+ // ])
+ // ->join('employees emp', 'employee_polices.employee_id = emp.id')
+ // ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') //cp - client policy
+ // ->join('policies pm', 'cp.policy_id = pm.id', 'left') //pm - policy master
+ // ->join('policy_type', 'policy_type.id = cp.policy_type_id')
+ // ->join('insurers im', 'cp.insurer_id = im.id') //im - insurer master
+ // ->join('insurer_branch ib', 'cp.insurer_branch_id = ib.id') //ib - insurer branch
+ // ->join('tpa tpam', 'cp.tpa_id = tpam.id', 'left') //tpam - tpa master
+ // ->join('tpa_branch tpab', 'cp.tpa_branch_id = tpab.id', 'left') //tpab - tpa branch
+ // ->join('clients cm', 'cp.client_id = cm.id') //cm - client master
+ // ->join('client_branch', 'emp.client_branch_id = client_branch.id') //cm - client master
+ // ->orderBy('emp.emp_code', 'ASC')
+ // ->orderBy('employee_polices.employee_id', 'ASC');
+ // // Conditionally add where clauses
+ // if ($client_id != 0 && !empty($client_id)) {
+ // $result->where('emp.client_id', $client_id);
+ // }
+ // if ($branch_id != 0 && !empty($branch_id)) {
+ // $result->where('emp.client_branch_id', $branch_id);
+ // }
+ // if ($policy_id != 0 && !empty($policy_id)) {
+ // $result->where('employee_polices.client_policy_id', $policy_id);
+ // }
+
+ // if (is_array($status) && count($status) > 0) {
+
+ // $result->where('employee_polices.status !=', 'expired');
+
+ // if (in_array("active", $status)) {
+
+ // $result->where('employee_polices.tpa_id IS NOT NULL');
+ // $result->where('employee_polices.uhid IS NOT NULL');
+ // $result->whereIn('employee_polices.status', $status);
+ // } elseif (in_array("pending", $status)) {
+
+ // $result->where('employee_polices.tpa_id IS NULL');
+ // $result->where('employee_polices.uhid IS NULL');
+ // $result->whereIn('employee_polices.status', array_merge($status, ['active']));
+ // } else {
+
+ // $result->whereIn('employee_polices.status', $status);
+ // }
+
+ // // if($status == 'active'){
+ // // $result->where('employee_polices.tpa_id IS NOT NULL');
+ // // $result->where('employee_polices.uhid IS NOT NULL');
+ // // }else if($status == 'pending'){
+ // // $status = 'active';
+ // // $result->where('employee_polices.status', $status);
+ // // }else{
+ // // $result->where('employee_polices.status', $status);
+ // // }
+ // }
+
+ // if (!empty($emp_code)) {
+ // $result->where('emp.emp_code', $emp_code);
+ // }
+ // if (!empty($emp_name)) {
+ // $result->like('emp.name', $emp_name);
+ // }
+
+ // // Always check these conditions
+ // $result->where('employee_polices.is_active', 1)
+ // ->where('emp.is_active', 1);
+
+ // $res = $result->findAll();
+
+ // // dd($this->db->getLastQuery());
+
+ // return $res;
+ // }
public function getEmployeePolicyForEcard($policy_id = 0)
{
diff --git a/app/Views/employee_data_list.php b/app/Views/employee_data_list.php
index caee58a..b01fd75 100755
--- a/app/Views/employee_data_list.php
+++ b/app/Views/employee_data_list.php
@@ -117,6 +117,7 @@
(₹)Pro Rata
Premium
(₹)GST
|
+ Remarks |
Action |
@@ -179,6 +180,28 @@
|
+
+ Name : " . $employee['name_first_old'] . ' => ' . $employee['name_last_new'] . "";
+ }
+ if(!empty($employee['dob_first_old'])){
+ echo " DOB : " . change_date_format($employee['dob_first_old'], null, 'd/m/Y') . ' => ' . change_date_format($employee['dob_last_new'], null, 'd/m/Y') . " ";
+ }
+ if(!empty($employee['gender_first_old'])){
+ echo " Gender : " . $employee['gender_first_old'] . ' => ' . $employee['gender_last_new'] . " ";
+ }
+ if(!empty($employee['newly_added'])){
+ echo "" . $employee['newly_added'] . " ";
+ }
+ if(!empty($employee['removed_count'])){
+ echo "" . $employee['removed_count'] . " People removed ";
+ }
+ if(empty($employee['name_first_old']) && empty($employee['dob_first_old']) && empty($employee['gender_first_old']) && empty($employee['removed_count'] ) && empty($employee['newly_added'] )){
+ echo " - ";
+ }
+ ?>
+ |
<'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
- buttons: [{
- extend: 'csv',
- text: 'CSV',
- title: 'Member-List',
- }, {
- extend: 'excel',
- text: 'Excel',
- title: 'Member-List',
- }],
+ buttons: [
+ {
+ extend: 'csv',
+ text: 'CSV',
+ title: 'Member-List',
+ },
+ {
+ extend: 'excelHtml5',
+ text: 'Excel',
+ title: 'Member-List',
+ exportOptions: {
+ columns: function (idx, data, node) {
+ return idx < $('#tickets-table thead th').length - 1;
+ },
+ format: {
+ body: function (data, row, column, node) {
+ // Only apply formatting for column Q (index 16)
+ if (column === 16) {
+ return $('').html(data).find('p').map(function () {
+ return $(this).text().trim();
+ }).get().join('\n');
+ }
+ // Return other columns as-is (text only, no HTML tags)
+ return $(' ').html(data).text().trim();
+ }
+ }
+ },
+ customize: function (xlsx) {
+ var sheet = xlsx.xl.worksheets['sheet1.xml'];
+ // Wrap only column Q
+ $('row c[r]', sheet).each(function () {
+ var cell = $(this);
+ var address = cell.attr('r'); // Example: Q2, Q3
+ if (address.startsWith('Q')) {
+ cell.attr('s', '55'); // Wrap text style
+ }
+ });
+ }
+ }
+ ],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
diff --git a/app/Views/notification.php b/app/Views/notification.php
index 460b054..6d5908c 100755
--- a/app/Views/notification.php
+++ b/app/Views/notification.php
@@ -264,7 +264,7 @@
@@ -360,7 +360,7 @@
@@ -441,7 +441,7 @@
@@ -544,7 +544,7 @@
@@ -619,7 +619,7 @@
|