diff --git a/app/Controllers/ThzController.php b/app/Controllers/ThzController.php index 2ff16099..65109dc3 100644 --- a/app/Controllers/ThzController.php +++ b/app/Controllers/ThzController.php @@ -3,6 +3,7 @@ namespace App\Controllers; use App\Controllers\BaseController; +use App\Helpers\MailHelper; use CodeIgniter\HTTP\ResponseInterface; use App\Models\ThzMasterModel; @@ -36,16 +37,25 @@ class ThzController extends BaseController public function ticketSave(){ $data = $this->request->getPost(); - // $data = $this->request->getJSON(true); - // $return_type = isset($data['return_type']) ? $data['return_type'] : 'api'; + if (!empty($data['thz_id'])) { - $text = "update"; + + $text = "update"; $result = $this->updateTicket($data); + $updateID = $data['thz_id']; + } else { - $text = "create"; - $result = $this->insertTicket($data); + + $text = "create"; + $insertID = $this->insertTicket($data); + $result = true; + } + $id = isset($insertID) && !empty($insertID) ? $insertID : $updateID ; + + $this->ticketSaveNotification($data , $insertOrUpdate = $text , $id); + return $this->response->setJSON([ 'status' => $result ? 'success' : 'error', 'message' => $result ? "Ticket {$text}d successfully" : "Unable to {$text} ticket. Please try again." @@ -124,14 +134,12 @@ class ThzController extends BaseController } - public function ticketSaveNotification($data){ - - } + public function ticketConversationSaveNotification($data){ } - + public function ticketAssigning(){ $returnType = strtolower($this->request->getGet('return_type') ?? 'api'); @@ -201,20 +209,152 @@ class ThzController extends BaseController ->findAll(); } - private function notificationBasedOnRole($data){ - $id = $data['thz_id'] ?? null; - $assign_to = $data['assign_to'] ?? null; - $mobile = $data['mobile'] ?? null; - if (!empty($assign_to)) { + private function ticketSaveNotification( $data , $insertOrUpdate , $id){ + + $user_email = $data['email'] ?? null; + + $assignee_id = $data['assign_to'] ?? null; + + $assignee_email = $this->findAssigneeEmail($assignee_id); + + $emailToNotified = [ + 'user_email' => $user_email, + 'assignee_email' => $assignee_email + ]; + + $ticketId = $id; + + $result = $this->emailNotificationBasedOnRole($emailToNotified , $insertOrUpdate , $ticketId , $data); + + return $result; + + } + + private function findAssigneeEmail($assignee_id){ + + $result = $this->userModel->where('id',$assignee_id)->find()->getResultArray(); + + $assigneeEmail = $result[0]['email']; + + return $assigneeEmail; + + } + + private function emailNotificationBasedOnRole($emailToNotified , $insertOrUpdate , $ticketId , $data){ + + $user_email = $emailToNotified['user_email'] ?? null; + $assignee_email = $emailToNotified['assignee_email'] ?? null; + + + if (!empty($assignee_email)) { + + switch ($insertOrUpdate) { + + case 'update': + + $messageUpdated = "
Hi From Nhance Support, +
Your Assigned Ticket No -%ticketId% for Subject - %subject% Updated With Latest Information .
+Thank you
" ; + + + $from_mail = ""; + $to_mail = $assignee_email; + $cc_string = ""; + $subject = "Ticket Created For %subject%
"; + $message = $messageUpdated ; + $attachments = ""; + $reply_to = ""; + $bcc_string = ""; + + $res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail , 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]); + + break; + + case 'create': + + $messageCreated = "Hi From Nhance Support, +
Your Assigned With New Ticket No -%ticketId% for Subject %subject% Updated With Latest Information .
+Thank you
"; + + $from_mail = ""; + $to_mail = $assignee_email; + $cc_string = ""; + $subject = "Ticket Created For %subject%
"; + $message = $messageCreated ; + $attachments = ""; + $reply_to = ""; + $bcc_string = ""; + + $res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail , 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]); + + + break; + + default: + # code... + break; + } } - if (!empty($id) && !empty($mobile)) { + if (!empty($user_email)) { + + switch ($insertOrUpdate) { + + case 'update': + + $messageUpdated = "Hi From Nhance Support, +
Your Ticket for Subject %subject% Updated With Latest Information For Your Ticket No %ticketId%.
+Thank you
"; + + $from_mail = ""; + $to_mail = $user_email; + $cc_string = ""; + $subject = "Ticket Created For %subject%
"; + $message = $messageUpdated ; + $attachments = ""; + $reply_to = ""; + $bcc_string = ""; + + $res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail , 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]); + + break; + + case 'create': + + $messageForAssigned = "Hi From Nhance Support, +
Your Ticket for Subject %subject% Created and Assigned To %assignee_email%. TicketNo - %ticketId%
+Thank you
"; + + $messageForUnAssigned = "Hi From Nhance Support, +
Your Ticket for Subject %subject% Created and Will be Assigned Shortly.Here is Your TicketNo - %ticketId%
+Thank you
"; + + $from_mail = ""; + $to_mail = $user_email; + $cc_string = ""; + $subject = "Ticket Created For %subject%
"; + $message = empty($assignee_email) ? $messageForUnAssigned : $messageForAssigned ; + $attachments = ""; + $reply_to = ""; + $bcc_string = ""; + + $res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $to_mail , 'cc' => $cc_string, 'subject' => $subject, 'message' => $message, 'attachments' => $attachments, 'reply_to' => $reply_to, 'bcc' => $bcc_string]); + + + break; + + default: + # code... + break; + } } + return true; + } @@ -228,14 +368,13 @@ class ThzController extends BaseController } - private function insertTicket($data){ +private function insertTicket($data) +{ + $data['created_by'] = get_session_userid(); + $this->thzMasterModel->insert($data); - $data['created_by'] = get_session_userid(); - $result = $this->thzMasterModel->insert($data); - - return $result; - - } + return $this->thzMasterModel->insertID(); // returns the inserted row's ID +} diff --git a/app/Models/ThzMasterNotesModel.php b/app/Models/ThzMasterNotesModel.php index 6b738219..af8c8f8b 100644 --- a/app/Models/ThzMasterNotesModel.php +++ b/app/Models/ThzMasterNotesModel.php @@ -95,7 +95,7 @@ class ThzMasterNotesModel extends Model LEFT JOIN thz_master ON thz_master.thz_id = thz_master_notes.thz_id AND LOWER(thz_master_notes.notes_by) = 'user' - WHERE thz_master_notes.thz_id = " . (int)$thz_id . " + WHERE thz_master_notes.thz_id = '.(int)$thz_id.' ORDER BY thz_master_notes.created_at ASC"; $result = $this->db->query($notes_sql)->getResultArray(); diff --git a/app/Views/client_onboarding.php b/app/Views/client_onboarding.php index 44ee748c..059e07fa 100755 --- a/app/Views/client_onboarding.php +++ b/app/Views/client_onboarding.php @@ -570,16 +570,17 @@ body { if (otherCard !== card) { const otherContent = otherCard.querySelector('.card-content'); const otherIcon = otherCard.querySelector('.accordion-icon i'); - otherIcon.classList.add('mdi mdi-chevron-down'); + otherIcon.setAttribute('class', 'mdi mdi-chevron-down'); + } }); // Toggle current accordion content.classList.toggle('active'); if (content.classList.contains('active')) { - icon.classList.add('mdi mdi-chevron-up'); + icon.classList.setAttribute('class', 'mdi mdi-chevron-up'); } else { - icon.classList.add('mdi mdi-chevron-down'); + icon.classList.setAttribute('class', 'mdi mdi-chevron-down'); } }