diff --git a/app/Config/Routes.php b/app/Config/Routes.php index dd81efc5..6269cfd1 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -12,7 +12,9 @@ $routes->get('/swagger', 'SwaggerController::index', ['filter' => 'authMVC']); // Reminder Mail Notification $routes->get("reminder_mail", "NotificationController::reminder_mail"); -$routes->get("testing", "ClientController::Testing"); +// $routes->get("testing", "ClientController::Testing"); +// $routes->get("testing", "DashboardController::updatePolicyEnrollmentStatus"); +$routes->get("testing", "DashboardController::sendCroneRemainderMail"); $routes->get("update-policy-terms-for-corrections", "ClientController::updatePolicyTermsForCorrections"); $routes->get("update_rack_rate_json", "ClientController::updateRackRateJson"); $routes->get("updatajson", "EmpDataServiceController::updatajson"); @@ -284,6 +286,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("get_policy_type_for_base_policy/(:any)", "ClientController::getPolicyTypeForBasePolicy/$1"); $routes->get("get_client_details/(:any)", "ClientController::getClientDetails/$1"); $routes->get("featch_dashboard_data/(:any)", "DashboardController::featch_dashboard_data/$1"); + $routes->get("send_manual_remainder/(:any)", "DashboardController::sendManualRemainder/$1"); $routes->get("remove_rack_rate/(:any)", "ClientController::removeRackRate/$1"); $routes->get("rename_rack_rate_tab/(:any)", "ClientController::renameRackRateTab/$1"); $routes->post("create_excel_template", "MasterController::createExcelTemplate"); @@ -363,6 +366,8 @@ $routes->cli('cli/new_gmail_token', 'MasterController::generateNewGmailAPIToken' $routes->cli('cli/send_mail_cli(/:any)?', 'MasterController::testGmailAPIViaCLI$1'); $routes->cli('cli/app_check_list', 'MasterController::appCheckList'); $routes->cli('cli/new_gdrive_token', 'GoogleDriveController::generateNewGoogleDriveAccessToken'); +$routes->cli('cli/updatePolicyEnrollmentStatus', 'DashboardController::updatePolicyEnrollmentStatus'); +$routes->cli('cli/sendCroneRemainderMail', 'DashboardController::sendCroneRemainderMail'); diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 71015045..079e4d35 100755 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -202,59 +202,71 @@ class DashboardController extends AdminController public function updatePolicyEnrollmentStatus() { - $clientModel = new ClientModel(); $clientPolicyModel = new ClientPolicyModel(); - $notificationModel = new NotificationModel(); - $employeePolicyModel = new EmployeePolicyModel(); $myLogger = \Config\Services::mylogger(); - - // $myLogger->logme('error', 'enrollment_status function called'); - - $client_policy_data = $clientPolicyModel->getPolicyDetailsForRemainder(); - $myLogger->logme('error', 'Fetched client policy data'); + + $client_policy_data = $clientPolicyModel->getPolicyDetailsForEnrollment(); + $myLogger->logme('error', 'Fetched client policy data for Enrollment Status update'); // dd($client_policy_data); - $currentDate = date('d'); - // $myLogger->logme('error', 'Current date: ' . $currentDate); + $currentDate = date('d-m-Y'); + $openEnrollment = []; + $closeEnrollment = []; // Update policy status based on start and end dates foreach ($client_policy_data as $client_policy) { $id = $client_policy['id']; - $openDate = date('d', strtotime($client_policy['open_date'])); - $closeDate = date('d', strtotime($client_policy['close_date'])); - - // $myLogger->logme('error', 'Processing client policy ID: ' . $id); - // $myLogger->logme('error', 'Open date: ' . $openDate . ', Close date: ' . $closeDate); - + $openDate = date('d-m-Y', strtotime($client_policy['open_date'])); + $closeDate = date('d-m-Y', strtotime($client_policy['close_date'])); + if ($currentDate == $openDate) { $clientPolicyModel->update($id, ['open_for_enrollment' => 1]); + $openEnrollment[] = $id; $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', 'enrollment_status function completed'); + return $this->respond([ + '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, + ]); + + } + + public function sendCroneRemainderMail() + { + $clientPolicyModel = new ClientPolicyModel(); + $myLogger = \Config\Services::mylogger(); + + + $client_policy_data = $clientPolicyModel->getPolicyDetailsForRemainder(); + $myLogger->logme('error', 'Fetched client policy data'); + // dd($client_policy_data); // Mail send function - // $myLogger->logme('error', 'Calling sendRemainderMail function'); - if( $currentDate == date('d', strtotime($client_policy['reminder_date']))){ - $result = $this->sendRemainderMail($client_policy_data); - }else{ - $result = false; - } - - // $myLogger->logme('error', 'enrollment_status function completed'); + $result = $this->sendRemainderMail($client_policy_data, 'crone'); + + $myLogger->logme('error', 'sendCroneRemainderMail function completed'); + if($result){ return json_encode(['status' => true, 'message' => 'Mail send successfully']); }else{ return json_encode(['status' => false, 'message' => 'There is no data to send']); } } - public function featch_dashboard_data($type) { @@ -292,65 +304,133 @@ class DashboardController extends AdminController return $this->respond(['status' => true, 'data' => $data], 200); } - - public function sendRemainderMail($client_policy_data) + public function sendRemainderMail($client_policy_data, $send_mail_for_manual_or_crone = null) { // $this->myLogger->logme('error', 'sendRemainderMail function called'); + // dd($client_policy_data, $send_mail_for_manual_or_crone); + $reminder_whole_mail = []; foreach ($client_policy_data as $client_policy) { - - // Fetch client data - $client_data = $this->clientModel->find($client_policy['client_id']); - - // Fetch notification settings - $notification_data = $this->notificationModel - ->where('client_id', $client_policy['client_id']) - ->where('template_name', 'member_reminder_mail') - ->first(); - // $this->myLogger->logme('error', 'Notification data fetched: ' . json_encode($notification_data)); - - // Check if notification should be sent - if ($notification_data && $notification_data['enabled'] == 1 && !empty($notification_data['mail_content'])) { - $this->myLogger->logme('error', 'Notification should be sent for client policy ID: ' . $client_policy['id']); - - // Fetch all employees related to the client policy - $employees = $this->employeePolicyModel - ->select('employees.*') - ->join('employees', 'employee_polices.employee_id = employees.id', 'left') - ->where('employee_polices.client_policy_id', $client_policy['id']) - ->where('employees.emp_status', 'draft') - ->where('employees.is_active', 1) - ->where('employee_polices.status', 'draft') - ->where('employee_polices.is_active', 1) - ->where('employees.relationship', 'Self') - ->findAll(); - - // Process each employee - foreach ($employees as $employee) { - - if ($employee['emp_status'] == 'draft' && $employee['relationship'] == 'Self') { - $this->myLogger->logme('error', 'Employee status and relationship check passed for employee ID: ' . $employee['id']); - - // Mail params - $params['emp_data'] = $employee; - $params['client_data'] = $client_data; - $params['notification_data'] = $notification_data; - - // Send the mail notification - $mail_result = sendMailNotification::sendMailNotification('member_reminder_mail', $params); - // $this->myLogger->logme('error', 'Mail sent result: ' . json_encode($mail_result)); - $reminder_whole_mail[] = $mail_result; + if(empty($send_mail_for_manual_or_crone)){ + + // echo '1'; + + // Fetch client data + $client_data = $this->clientModel->find($client_policy['client_id']); + + // Fetch notification settings + $notification_data = $this->notificationModel + ->where('client_id', $client_policy['client_id']) + ->where('template_name', 'member_reminder_mail') + ->first(); + + // $this->myLogger->logme('error', 'Notification data fetched: ' . json_encode($notification_data)); + + // Check if notification should be sent + if ($notification_data && $notification_data['enabled'] == 1 && !empty($notification_data['mail_content'])) { + $this->myLogger->logme('error', 'Notification should be sent for client policy ID: ' . $client_policy['id']); + + // Fetch all employees related to the client policy + $employees = $this->employeePolicyModel + ->select('employees.*') + ->join('employees', 'employee_polices.employee_id = employees.id', 'left') + ->where('employee_polices.client_policy_id', $client_policy['id']) + ->where('employees.emp_status', 'draft') + ->where('employees.is_active', 1) + ->where('employee_polices.status', 'draft') + ->where('employee_polices.is_active', 1) + ->where('employees.relationship', 'Self') + ->findAll(); + + // Process each employee + foreach ($employees as $employee) { + + if ($employee['emp_status'] == 'draft' && $employee['relationship'] == 'Self') { + $this->myLogger->logme('error', 'Employee status and relationship check passed for employee ID: ' . $employee['id']); + + // Mail params + $params['emp_data'] = $employee; + $params['client_data'] = $client_data; + $params['notification_data'] = $notification_data; + + // Send the mail notification + $mail_result = sendMailNotification::sendMailNotification('member_reminder_mail', $params); + // $this->myLogger->logme('error', 'Mail sent result: ' . json_encode($mail_result)); + $reminder_whole_mail[] = $mail_result; + } + } + } else { + $this->myLogger->logme('error', 'Notification not sent for client policy ID: ' . $client_policy['id']); + } + + } else { + + // echo '2'; + + $currentDate = date('d-m-Y'); + + if($currentDate == date('d-m-Y', strtotime($client_policy['reminder_date']))){ + + // echo '3'; + + $client_data = $this->clientModel->find($client_policy['client_id']); + + // Fetch notification settings + $notification_data = $this->notificationModel + ->where('client_id', $client_policy['client_id']) + ->where('template_name', 'member_reminder_mail') + ->first(); + + // Check if notification should be sent + if ($notification_data && $notification_data['enabled'] == 1 && !empty($notification_data['mail_content'])) { + + // echo '4'; + + $this->myLogger->logme('error', 'Notification should be sent for client policy ID: ' . $client_policy['id']); + + // Fetch all employees related to the client policy + $employees = $this->employeePolicyModel + ->select('employees.*') + ->join('employees', 'employee_polices.employee_id = employees.id', 'left') + ->where('employee_polices.client_policy_id', $client_policy['id']) + ->where('employees.emp_status', 'draft') + ->where('employees.is_active', 1) + ->where('employee_polices.status', 'draft') + ->where('employee_polices.is_active', 1) + ->where('employees.relationship', 'Self') + ->findAll(); + + // Process each employee + foreach ($employees as $employee) { + + if ($employee['emp_status'] == 'draft' && $employee['relationship'] == 'Self') { + $this->myLogger->logme('error', 'Employee status and relationship check passed for employee ID: ' . $employee['id']); + + // Mail params + $params['emp_data'] = $employee; + $params['client_data'] = $client_data; + $params['notification_data'] = $notification_data; + + // Send the mail notification + $mail_result = sendMailNotification::sendMailNotification('member_reminder_mail', $params); + // $this->myLogger->logme('error', 'Mail sent result: ' . json_encode($mail_result)); + $reminder_whole_mail[] = $mail_result; + } + } + } else { + // echo '5'; + $this->myLogger->logme('error', 'Notification not sent for client policy ID: ' . $client_policy['id']); } } - } else { - $this->myLogger->logme('error', 'Notification not sent for client policy ID: ' . $client_policy['id']); } } - $this->myLogger->logme('error', 'Whole email, count: ' . $reminder_whole_mail); + // dd($reminder_whole_mail); + + // $this->myLogger->logme('error', 'Whole email, count: ' . $reminder_whole_mail); // Process and queue bulk emails $temp_whole_data = []; @@ -387,7 +467,6 @@ class DashboardController extends AdminController } - public function sendManualRemainder($client_id, $client_branch_id) { $this->myLogger->logme('error', "sendManualRemainder called with client_id: {$client_id}, client_branch_id: {$client_branch_id}"); @@ -414,7 +493,6 @@ class DashboardController extends AdminController return $this->respond(['status' => false, 'code' => 200, 'message' => 'There is no data to send', 'message2' => 'No policy data found to send'], 200); } } - - + } diff --git a/app/Helpers/sendMailNotification.php b/app/Helpers/sendMailNotification.php index 2802701a..b0ae954c 100755 --- a/app/Helpers/sendMailNotification.php +++ b/app/Helpers/sendMailNotification.php @@ -50,9 +50,12 @@ class sendMailNotification $app_link = $_ENV['App_Url']; $mail_content = $notification_data['mail_content']; $nhance_logo = $_ENV['NHANCE_LOGO']; + $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; + $mail_content = str_replace("[[client_name]]", $client_data['client_name'], $mail_content); $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); + $mail_content = str_replace("[[client_logo]]", "Client Logo", $mail_content); $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); if ($emp_data && (isset($notification_data) && $notification_data['enabled'] == 1)) { if(isset($emp_data['relationship'])){ diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index 470bbb0a..fa43886a 100755 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -404,9 +404,24 @@ public function getPolicyDetailsForRemainder($client_id = null, $branch_id = nul } return $builder->get()->getResultArray(); +} +//for this using in CRONE JOB +public function getPolicyDetailsForEnrollment($client_id = null, $branch_id = null) +{ + $builder = $this->table('client_policy') + ->where('client_policy.is_active', 1) + ->where('client_policy.policy_status', 1) + ->where('client_policy.open_date IS NOT NULL') + ->where('client_policy.close_date IS NOT NULL'); + if ($client_id && $branch_id) { + $builder->where('client_policy.client_id', $client_id) + ->where('client_policy.client_branch_id', $branch_id); } + return $builder->get()->getResultArray(); +} + }