FEAT_THZ_REMINDER_MAIL
This commit is contained in:
parent
0a025fd6da
commit
47d778bfe2
@ -529,6 +529,7 @@ $routes->cli('cli/insurerRFQRemainder', 'LeadsController::remainderForQcr');
|
||||
$routes->cli('cli/sendMailWithAutoQuery','TicketController::sendMailWithAutoQuery');
|
||||
$routes->cli('cli/ClaimStatusUpdate','MediAssistApiController::ClaimStatusUpdate');
|
||||
$routes->cli('cli/syncTpaClaimToNhance','MediAssistApiController::syncTpaClaimToNhance');
|
||||
$routes->cli('cli/thzReminderCrone','ThzController::getOpenTicketsOlderThan24HoursAndAssignNextLevel');
|
||||
|
||||
|
||||
|
||||
@ -821,6 +822,7 @@ $routes->group('test', function($routes) {
|
||||
$routes->get('membervalidation', 'TestingController::membervalidation');
|
||||
$routes->get('generateExcel', 'TestingController::generateExcel');
|
||||
$routes->get('logo_renaming','TestingController::logo_renaming');
|
||||
$routes->get('thzReminderCrone','ThzController::getOpenTicketsOlderThan24HoursAndAssignNextLevel');
|
||||
// $routes->get('createDefaultMailTempalteInDB','TestingController::createDefaultMailTempalteInCrossDB');
|
||||
// $routes->get('createDefaultMailTempalteInSameDB','TestingController::createDefaultMailTempalteInSameDB');
|
||||
});
|
||||
|
||||
@ -5,6 +5,8 @@ namespace App\Controllers;
|
||||
use App\Controllers\BaseController;
|
||||
use App\Helpers\MailHelper;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use CodeIgniter\API\ResponseTrait;
|
||||
|
||||
|
||||
use App\Models\ThzMasterModel;
|
||||
use App\Models\ThzMasterNotesModel;
|
||||
@ -20,6 +22,7 @@ use App\Models\ClientRMModel;
|
||||
|
||||
class ThzController extends BaseController
|
||||
{
|
||||
use ResponseTrait;
|
||||
|
||||
protected $thzMasterModel;
|
||||
protected $thzMasterNotesModel;
|
||||
@ -685,6 +688,151 @@ class ThzController extends BaseController
|
||||
return null;
|
||||
}
|
||||
|
||||
private function getRmsIdUsingClientId($client_id)
|
||||
{
|
||||
if(!empty($client_id)){
|
||||
|
||||
$acm_data = $this->cientRmModel
|
||||
->select('client_rm.*, user_profiles.email')
|
||||
->join('user_profiles', 'client_rm.user_id = user_profiles.id')
|
||||
->where('client_rm.is_active', 1)
|
||||
->where('client_rm.client_id', $client_id)
|
||||
->orderBy('id', 'asc')
|
||||
->findAll();
|
||||
|
||||
if($acm_data){
|
||||
return $acm_data;
|
||||
}
|
||||
|
||||
$this->myLogger->logme('error', 'Account Manager data not found');
|
||||
return [];
|
||||
|
||||
}
|
||||
|
||||
$this->myLogger->logme('error', 'client id is null');
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getOpenTicketsOlderThan24HoursAndAssignNextLevel()
|
||||
{
|
||||
|
||||
$current_day = date('D'); // Sun, Mon, Tue...
|
||||
|
||||
$nl = (php_sapi_name() === 'cli') ? PHP_EOL : '<br>';
|
||||
|
||||
echo $current_day . $nl;
|
||||
|
||||
if ($this->request) {
|
||||
echo "REQUEST" . $nl;
|
||||
} else {
|
||||
echo "CLI" . $nl;
|
||||
}
|
||||
|
||||
if ($current_day === 'Sun') {
|
||||
|
||||
if($this->request){
|
||||
return $this->respond(['message' => "Today is Sunday. Ticket reminder mail skipped"], 200);
|
||||
}else{
|
||||
$this->myLogger->logme('error', 'Today is Sunday. Ticket reminder mail skipped');
|
||||
echo 'Today is Sunday. Ticket reminder mail skipped';
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$client_id = $this->request->getGet('client_id') ?? null;
|
||||
$ticket_id = $this->request->getGet('ticket_id') ?? null;
|
||||
|
||||
// Fetch tickets older than 8 hours
|
||||
$builder = $this->thzMasterModel
|
||||
->whereIn('status', ['Open', 'In Progress'])
|
||||
// ->where('thz_id', 85)
|
||||
->where('created_at <= DATE_SUB(NOW(), INTERVAL 8 HOUR)', null, false);
|
||||
|
||||
// add condition only if client_id exists
|
||||
if (!empty($client_id)) {
|
||||
$builder->where('client_id', $client_id);
|
||||
}
|
||||
|
||||
// add condition only if ticket_id exists
|
||||
if (!empty($ticket_id)) {
|
||||
$builder->where('thz_id', $ticket_id);
|
||||
}
|
||||
|
||||
$result = $builder->findAll();
|
||||
|
||||
|
||||
$subjectTemplate = 'Ticket Pending for More Than ((HOURS)) Hours – Action Required';
|
||||
$messageTemplate = '<a href="((TICKET_URL))"> <strong> Ticket ID : ((TICKET_ID)) </strong> </a> has remained in the same status for ((HOURS)) hours. Please take the necessary action.';
|
||||
|
||||
$common = [
|
||||
'module' => 'THZ',
|
||||
'mail_type' => 'Thz_Reminder_mail'
|
||||
];
|
||||
|
||||
$mail_send_count = 0;
|
||||
|
||||
if(!empty($result)){
|
||||
foreach ($result as $value) {
|
||||
|
||||
// Calculate hours difference
|
||||
$createdAt = new \DateTime($value['created_at']);
|
||||
$now = new \DateTime();
|
||||
$hours = floor(($now->getTimestamp() - $createdAt->getTimestamp()) / 3600);
|
||||
$ticket_url = base_url('ticketConversationList?return_type=web&thz_id=' . $value['thz_id']);
|
||||
|
||||
// Replace placeholders
|
||||
$subject = str_replace('((HOURS))', $hours, $subjectTemplate);
|
||||
|
||||
$message = str_replace(
|
||||
['((TICKET_ID))', '((HOURS))', '((TICKET_URL))'],
|
||||
[$value['thz_id'], $hours, $ticket_url],
|
||||
$messageTemplate
|
||||
);
|
||||
|
||||
|
||||
$client_id = $value['client_id'];
|
||||
$level_of_user_data = $this->getRmsIdUsingClientId($client_id);
|
||||
|
||||
if(!empty($level_of_user_data)){
|
||||
foreach ($level_of_user_data as $user) {
|
||||
|
||||
$res = MailHelper::send_email([
|
||||
'mail' => $user['email'],
|
||||
'subject' => $subject,
|
||||
'message' => $message,
|
||||
'common' => $common
|
||||
]);
|
||||
|
||||
$mail_send_count++;
|
||||
|
||||
$this->myLogger->logme(
|
||||
'error',
|
||||
'THZ Reminder Mail Sent | Ticket ID: ' . $value['thz_id'] . ' | Client ID : ' . $client_id . ' | Response: ' . json_encode($res)
|
||||
);
|
||||
}
|
||||
}else{
|
||||
$this->myLogger->logme('error', 'CLIENT ID : ' . $client_id . "has no RM's found skipped...." );
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($this->request){
|
||||
return $this->respond(['message' => "No ticket Pending for More Than 8 hrs"], 200);
|
||||
}else{
|
||||
$this->myLogger->logme('error', 'No ticket Pending for More Than 8 hrs');
|
||||
echo 'No ticket Pending for More Than 8 hrs';
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if($this->request){
|
||||
return $this->respond(['mail_send_count' => $mail_send_count], 200);
|
||||
}else{
|
||||
print_r(['mail_send_count' => $mail_send_count]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user