From c48505b2d268fe822b04876b8545a36ebff6f890 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Fri, 7 Feb 2025 14:59:39 +0530 Subject: [PATCH 1/2] FEAT_CHATBOT_NEW_AND_OLD_POLICY --- .../Chatbot/MainMenuConversation.php | 12 +- .../Chatbot/NetworkHospitalConversation.php | 7 + .../ReimbursementClaimStatusConversation.php | 36 +- .../commonPolicyOptionConversations.php | 15 +- .../fourWheelerOptionsConversations.php | 7 + .../Chatbot/hospitalPolicyConversation.php | 32 +- .../Chatbot/medicalClaimFormConversations.php | 313 ++++++++++++++++++ .../medicalClaimOptionConversations.php | 11 +- .../Chatbot/policyConversation.php | 7 + .../Chatbot/selectInsurerConversations.php | 93 ++++++ .../Chatbot/serviceExecutiveConversation.php | 7 + .../twoWheelerOptionsConversations.php | 7 + .../Chatbot/vehicleFormConversation.php | 103 +++++- app/Helpers/ChatbotHelper.php | 89 +++-- app/Helpers/sendMailNotification.php | 158 ++++----- 15 files changed, 751 insertions(+), 146 deletions(-) create mode 100644 app/Controllers/Chatbot/medicalClaimFormConversations.php create mode 100644 app/Controllers/Chatbot/selectInsurerConversations.php diff --git a/app/Controllers/Chatbot/MainMenuConversation.php b/app/Controllers/Chatbot/MainMenuConversation.php index 2c9059f9..c326e579 100644 --- a/app/Controllers/Chatbot/MainMenuConversation.php +++ b/app/Controllers/Chatbot/MainMenuConversation.php @@ -19,6 +19,10 @@ class MainMenuConversation extends Conversation protected function showMainMenu() { + $this->bot->userStorage()->save([ + 'path' => [] + ]); + $question = Question::create("Please choose") ->addButtons([ Button::create("📄 Ecard Download")->value("ecard_download"), @@ -30,6 +34,13 @@ class MainMenuConversation extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]);log_message("error","Path : ".json_encode($path)); switch ($answer->getValue()) { case "ecard_download": @@ -47,7 +58,6 @@ class MainMenuConversation extends Conversation $this->bot->startConversation(new ReimbursementClaimProcessConversation()); break; case "reimbursement_status": - $this->say("Reimbursement Claim Status selected. (Dummy Response)"); $this->bot->startConversation(new ReimbursementClaimStatusConversation()); break; diff --git a/app/Controllers/Chatbot/NetworkHospitalConversation.php b/app/Controllers/Chatbot/NetworkHospitalConversation.php index 10bc3b7d..063a572b 100644 --- a/app/Controllers/Chatbot/NetworkHospitalConversation.php +++ b/app/Controllers/Chatbot/NetworkHospitalConversation.php @@ -51,6 +51,13 @@ class NetworkHospitalConversation extends Conversation // }); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case is_string($answer->getValue()) && is_array(explode('#',$answer->getValue())) && count((explode('#',$answer->getValue()))) == 2: diff --git a/app/Controllers/Chatbot/ReimbursementClaimStatusConversation.php b/app/Controllers/Chatbot/ReimbursementClaimStatusConversation.php index 4c6b58dc..96149cdf 100644 --- a/app/Controllers/Chatbot/ReimbursementClaimStatusConversation.php +++ b/app/Controllers/Chatbot/ReimbursementClaimStatusConversation.php @@ -2,6 +2,7 @@ // namespace App\Conversations; namespace App\Controllers\Chatbot; +use App\Helpers\ChatbotHelper; use BotMan\BotMan\Messages\Conversations\Conversation; use BotMan\BotMan\Messages\Outgoing\Question; @@ -19,29 +20,18 @@ class ReimbursementClaimStatusConversation extends Conversation protected function claimStatus() { - $question = Question::create("Do you Need Anything Else ?") - ->addButtons([ - Button::create("🔹 Yes I need some more Help")->value("yes"), - Button::create("🔹 No, Thank You")->value("no"), - // Button::create("◀️ Go Back")->value("go_back"), - ]); - - $this->bot->ask($question, function ($answer) { - switch ($answer->getValue()) { - case "yes": - - $this->say("Sure, How can I help you "); - $this->bot->startConversation(new MainMenuConversation()); - break; - case "no": - $this->say("Thank you for your time! If you need anything else, feel free to reach out. Goodbye!"); - break; - default: - $this->say("Invalid selection. Please choose an option."); - $this->askQuestion(); - break; - } - }); + $this->say("Fetching Status please wait ..."); + if (sleep(1.5)){ + $data = ChatbotHelper::getReimbursementClaimStatus(); + } + $this->bot->types(); + if ($data){ + $this->say("The claim status for the claim Number {$data['claim_number']} is currently in {$data['claim_status']} status.
More Detailed Information is sent to your mail"); + $this->bot->startConversation(new doYouWantToContinueConversation()); + }else{ + $this->say("No Claim Raised against the user."); + $this->bot->startConversation(new doYouWantToContinueConversation()); + } } } diff --git a/app/Controllers/Chatbot/commonPolicyOptionConversations.php b/app/Controllers/Chatbot/commonPolicyOptionConversations.php index e32c318b..f33b00d2 100644 --- a/app/Controllers/Chatbot/commonPolicyOptionConversations.php +++ b/app/Controllers/Chatbot/commonPolicyOptionConversations.php @@ -11,8 +11,6 @@ use App\Helpers\ChatbotHelper; class commonPolicyOptionConversations extends Conversation { - - public function run() { $this->policyOptions(); @@ -20,14 +18,21 @@ class commonPolicyOptionConversations extends Conversation protected function policyOptions() { - $question = Question::create("Choose Policy Type:") + $question = Question::create("Choose Policy Type:") ->addButtons([ Button::create("🔹 Upload Vehicle Details")->value("upload_vehicle_details"), Button::create("🔹 Talk to our Service Executive")->value("service_executive"), Button::create("◀️ Go Back")->value("go_back"), ]); - $this->bot->ask($question, function ($answer) { + $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case "upload_vehicle_details": // $cityName = $response->getText(); @@ -48,3 +53,5 @@ class commonPolicyOptionConversations extends Conversation } } + + diff --git a/app/Controllers/Chatbot/fourWheelerOptionsConversations.php b/app/Controllers/Chatbot/fourWheelerOptionsConversations.php index 6c850c03..bd5386a6 100644 --- a/app/Controllers/Chatbot/fourWheelerOptionsConversations.php +++ b/app/Controllers/Chatbot/fourWheelerOptionsConversations.php @@ -28,6 +28,13 @@ class fourWheelerOptionsConversations extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case "3p": // $cityName = $response->getText(); diff --git a/app/Controllers/Chatbot/hospitalPolicyConversation.php b/app/Controllers/Chatbot/hospitalPolicyConversation.php index 4a29c918..32cce22b 100644 --- a/app/Controllers/Chatbot/hospitalPolicyConversation.php +++ b/app/Controllers/Chatbot/hospitalPolicyConversation.php @@ -20,23 +20,39 @@ class hospitalPolicyConversation extends Conversation protected function showMediclaimPolicyOptions() { + $path = $this->bot->userStorage()->get('path'); + + if (in_array('individual',$path)){ + $text1 = 'Upload Policy Copy and Individual Details'; + $value = 'individual_upload'; + }else{ + $text1 = 'Upload Policy Copy and Family Details'; + $value = 'family_upload'; + } $question = Question::create("Choose Policy Type:") ->addButtons([ - Button::create("🔹 Individual")->value("individual"), - Button::create("🔹 Floater")->value("floater"), + Button::create("🔹 ".$text1)->value($value), + Button::create("🔹 Talk to our Service Executive")->value("service_executive"), Button::create("◀️ Go Back")->value("go_back"), ]); - $this->bot->ask($question, function ($answer) { + $this->bot->ask($question, function ($answer) use ($value){ + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { - case "individual": - $this->bot->startConversation(new commonPolicyOptionConversations()); + case $value: + $this->bot->startConversation(new medicalClaimFormConversations()); break; - case "floater": - $this->bot->startConversation(new commonPolicyOptionConversations()); + case "service_executive": + $this->bot->startConversation(new serviceExecutiveConversation()); break; case "go_back": - $this->bot->startConversation(new MainMenuConversation()); + $this->bot->startConversation(new medicalClaimOptionConversations()); break; default: $this->say("Invalid selection. Please choose an option."); diff --git a/app/Controllers/Chatbot/medicalClaimFormConversations.php b/app/Controllers/Chatbot/medicalClaimFormConversations.php new file mode 100644 index 00000000..d0d21e7e --- /dev/null +++ b/app/Controllers/Chatbot/medicalClaimFormConversations.php @@ -0,0 +1,313 @@ + null, + 'dob' => null, + 'si' => null, + 'pre_existing_disease' => null + ]; + + public function run() + { + // Initialize state if not exists + if (!$this->bot->userStorage()->get('claim_form_state')) { + $this->bot->userStorage()->save([ + 'claim_form_state' => [ + 'dependency_count' => 0, + 'current_member' => 'primary', + 'dependencies' => [], + 'primary_insurer' => null + ] + ]); + } + + $state = $this->bot->userStorage()->get('claim_form_state'); + $memberType = ($state['current_member'] === 'primary') ? 'primary insured person' : 'dependency'; + + $this->askName($memberType); + } + + private function askName($memberType) + { + $this->ask("Enter the Name of the $memberType?", function($answer) { + $name = $answer->getText(); + + if (empty($name)) { + $this->say('Name Cannot be Empty'); + return $this->run(); + } + + // Get existing state and update only the name + $state = $this->bot->userStorage()->get('claim_form_state'); + if ($state['current_member'] === 'primary') { + if (!isset($state['primary_insurer'])) { + $state['primary_insurer'] = []; + } + $state['primary_insurer']['name'] = $name; + } else { + if (!isset($state['temp_dependency'])) { + $state['temp_dependency'] = []; + } + $state['temp_dependency']['name'] = $name; + } + + $this->bot->userStorage()->save(['claim_form_state' => $state]); + $this->askDOB(); + }); + } + + private function askDOB() + { + $this->ask('Enter Date of Birth (DD/MM/YYYY)?', function($answer) { + $dob = $answer->getText(); + + if (empty($dob)) { + $this->say('Date of Birth Cannot be Empty'); + return $this->askDOB(); + } + + // Get existing state and update only the DOB + $state = $this->bot->userStorage()->get('claim_form_state'); + if ($state['current_member'] === 'primary') { + $state['primary_insurer']['dob'] = $dob; + } else { + $state['temp_dependency']['dob'] = $dob; + } + + $this->bot->userStorage()->save(['claim_form_state' => $state]); + $this->askSumInsured(); + }); + } + + private function askSumInsured() + { + $this->ask('Enter Sum Insured Amount?', function($answer) { + $sum_insured = $answer->getText(); + + if (empty($sum_insured)) { + $this->say('Sum Insured Cannot be Empty'); + return $this->askSumInsured(); + } + + // Get existing state and update only the sum insured + $state = $this->bot->userStorage()->get('claim_form_state'); + if ($state['current_member'] === 'primary') { + $state['primary_insurer']['si'] = $sum_insured; + } else { + $state['temp_dependency']['si'] = $sum_insured; + } + + $this->bot->userStorage()->save(['claim_form_state' => $state]); + $this->askPreExistingDisease(); + }); + } + + private function askPreExistingDisease() + { + $this->ask('Enter Pre-Existing Disease if any (type "none" if none)?', function($answer) { + $pre_existing_disease = $answer->getText(); + + if (empty($pre_existing_disease)) { + $this->say('Please enter none if no pre-existing conditions'); + return $this->askPreExistingDisease(); + } + + // Get existing state and update the disease info + $state = $this->bot->userStorage()->get('claim_form_state'); + if ($state['current_member'] === 'primary') { + $state['primary_insurer']['pre_existing_disease'] = $pre_existing_disease; + $state['primary_insurer']['type'] = 'primary'; + } else { + $state['temp_dependency']['pre_existing_disease'] = $pre_existing_disease; + $state['temp_dependency']['type'] = 'dependency'; + + // Move completed dependency to dependencies array + if (!isset($state['dependencies'])) { + $state['dependencies'] = []; + } + $state['dependencies'][] = $state['temp_dependency']; + $state['temp_dependency'] = null; // Clear temporary dependency + } + + $this->bot->userStorage()->save(['claim_form_state' => $state]); + + // For debugging + log_message('debug', 'Final state after all data collection: ' . json_encode($state)); + + $this->saveMemberAndContinue(); + }); + } + + private function saveMemberAndContinue() + { + $state = $this->bot->userStorage()->get('claim_form_state'); + $memberData = $state['current_member'] === 'primary' + ? $state['primary_insurer'] + : end($state['dependencies']); + + // Show current member info + $memberInfo = "👤 **" . ucfirst($memberData['type']) . " Member Details:**\n"; + $memberInfo .= "🔹 Name: " . $memberData['name'] . "\n"; + $memberInfo .= "🔹 Date of Birth: " . $memberData['dob'] . "\n"; + $memberInfo .= "🔹 Sum Insured: " . $memberData['si'] . "\n"; + $memberInfo .= "🔹 Pre Existing Disease: " . $memberData['pre_existing_disease'] . "\n"; + + $this->say($memberInfo); + + $path = $this->bot->userStorage()->get('path'); + + if (in_array('floater', $path)) { + $this->askAboutDependencies(); + } else { + $this->showSummary(); + } + } + + private function askAboutDependencies() + { + $question = Question::create("Do you want to add a dependency? ") + ->addButtons([ + Button::create("✅ Yes")->value("yes"), + Button::create("❌ No")->value("no"), + Button::create("◀️ Go Back")->value("go_back"), + ]); + + $this->ask($question, function($answer) { + $state = $this->bot->userStorage()->get('claim_form_state'); + + switch ($answer->getValue()) { + case "yes": + $state['dependency_count']++; + $state['current_member'] = 'dependency'; + $this->bot->userStorage()->save(['claim_form_state' => $state]); + + // Reset currentMemberData for new dependency + $this->currentMemberData = [ + 'name' => null, + 'dob' => null, + 'si' => null, + 'pre_existing_disease' => null + ]; + + $this->run(); + break; + + case "no": + $this->showSummary(); + break; + + case "go_back": + $this->bot->startConversation(new hospitalPolicyConversation()); + break; + + default: + $this->say("Invalid selection. Please choose an option."); + $this->askAboutDependencies(); + break; + } + }); + } + + private function showSummary() + { + $state = $this->bot->userStorage()->get('claim_form_state'); + + $finalSummary = '
'; + + // Primary Insurer + if ($state['primary_insurer']) { + $finalSummary .= '
Primary:
' . + $this->formatSingleLineMemberInfo($state['primary_insurer']) . + '
'; + } + + // Dependencies + if (!empty($state['dependencies'])) { + foreach ($state['dependencies'] as $index => $dependency) { + $finalSummary .= '
Dep ' . ($index + 1) . ':
' . + $this->formatSingleLineMemberInfo($dependency) . + '
'; + } + } + + $finalSummary .= '
'; + + $this->say($finalSummary); + + $question = Question::create("Confirm all details:") + ->addButtons([ + Button::create("✅ Confirm")->value("confirm"), + Button::create("❌ Start Over")->value("restart"), + ]); + + $this->ask($question, function ($answer) use ($finalSummary) { + switch ($answer->getValue()) { + case "confirm": + $sent_status = ChatbotHelper::sendQuotationRequestMail($finalSummary); + if ($sent_status) { + $this->say('Our Executive will contact you with the quotation soon.'); + $this->bot->startConversation(new doYouWantToContinueConversation()); + } else { + $this->say("There was a problem while requesting for a quotation. Please try again later."); + } + break; + case "restart": + $this->bot->userStorage()->save([ + 'claim_form_state' => [ + 'dependency_count' => 0, + 'current_member' => 'primary', + 'dependencies' => [], + 'primary_insurer' => null + ] + ]); + $this->run(); + break; + default: + $this->say("Invalid selection. Please choose an option."); + $this->showSummary(); + break; + } + }); + } + + private function formatSingleLineMemberInfo($member) + { + return '🔹 Name: ' . htmlspecialchars($member['name']) . '
' . + '🔹 DOB: ' . htmlspecialchars($member['dob']) . '
' . + '🔹 SI: ' . htmlspecialchars($member['si']) . '
' . + '🔹 PED: ' . htmlspecialchars($member['pre_existing_disease']); + } + + + // private function formatMemberInfo($member) + // { + // // Format each piece of information with proper HTML + // return '
+ //
+ // 🔹 Name: + // ' . htmlspecialchars($member['name']) . ' + //
+ //
+ // 🔹 DOB: + // ' . htmlspecialchars($member['dob']) . ' + //
+ //
+ // 🔹 Sum Insured: + // ' . htmlspecialchars($member['si']) . ' + //
+ //
+ // 🔹 Pre-Existing Conditions: + // ' . htmlspecialchars($member['pre_existing_disease']) . ' + //
+ //
'; + // } +} \ No newline at end of file diff --git a/app/Controllers/Chatbot/medicalClaimOptionConversations.php b/app/Controllers/Chatbot/medicalClaimOptionConversations.php index db66cda3..37ed0354 100644 --- a/app/Controllers/Chatbot/medicalClaimOptionConversations.php +++ b/app/Controllers/Chatbot/medicalClaimOptionConversations.php @@ -28,13 +28,20 @@ class medicalClaimOptionConversations extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case "individual": // $cityName = $response->getText(); - $this->bot->startConversation(new commonPolicyOptionConversations()); + $this->bot->startConversation(new hospitalPolicyConversation()); break; case "floater": - $this->bot->startConversation(new commonPolicyOptionConversations()); + $this->bot->startConversation(new hospitalPolicyConversation()); break; case "go_back": $this->bot->startConversation(new MainMenuConversation()); diff --git a/app/Controllers/Chatbot/policyConversation.php b/app/Controllers/Chatbot/policyConversation.php index 9a3c2669..bcc44070 100644 --- a/app/Controllers/Chatbot/policyConversation.php +++ b/app/Controllers/Chatbot/policyConversation.php @@ -29,6 +29,13 @@ class policyConversation extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]);log_message("error","Path ".json_encode($path)); switch ($answer->getValue()) { case "2_wheeler": // $cityName = $response->getText(); diff --git a/app/Controllers/Chatbot/selectInsurerConversations.php b/app/Controllers/Chatbot/selectInsurerConversations.php new file mode 100644 index 00000000..4d921ccc --- /dev/null +++ b/app/Controllers/Chatbot/selectInsurerConversations.php @@ -0,0 +1,93 @@ +insurerOptions(); + } + + protected function insurerOptions() + { + $question = Question::create("Choose Your Options:") + ->addButtons([ + Button::create("🔹 Select Insurers")->value("insurers"), + Button::create("🔹 Talk to our Service Executive")->value("service_executive"), + Button::create("◀️ Go Back")->value("go_back"), + ]); + + $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); + switch ($answer->getValue()) { + case "insurers": + $data = ChatbotHelper::getInsurersList(); + log_message("error",'data: '.json_encode($data)); + $question = Question::create("Select an Insurer:"); + $page = $this->bot->userStorage()->get('insurer_page') ?? 0; + $perPage = 5; + $totalPages = ceil(count($data) / $perPage); + $insurersToShow = array_slice($data, $page * $perPage, $perPage); + + $buttons = []; + foreach ($insurersToShow as $insurer) { + $buttons[] = Button::create("🔹 " . $insurer['short_name'])->value($insurer['short_name']); + } + + // Add pagination buttons + if ($page > 0) { + $buttons[] = Button::create("⬅️ Previous")->value("previous_page"); + } + if (($page + 1) < $totalPages) { + $buttons[] = Button::create("➡️ Next")->value("next_page"); + } + + $question = Question::create("Choose an Insurer:") + ->addButtons($buttons); + + $this->bot->ask($question, function ($response) { + $selected = $response->getValue(); + + if ($selected == "previous_page") { + $this->bot->userStorage()->save(["insurer_page" => max(0, $this->bot->userStorage()->get('insurer_page') - 1)]); + $this->insurerOptions(); + } elseif ($selected == "next_page") { + $this->bot->userStorage()->save(["insurer_page" => $this->bot->userStorage()->get('insurer_page') + 1]); + $this->insurerOptions(); + } else { + $this->say("You selected: " . $selected); + } + }); + + break; + case "service_executive": + $this->bot->startConversation(new serviceExecutiveConversation()); + break; + case "go_back": + $this->bot->startConversation(new MainMenuConversation()); + break; + default: + $this->say("Invalid selection. Please choose an option."); + $this->policyOptions(); + break; + } + }); + } + +} diff --git a/app/Controllers/Chatbot/serviceExecutiveConversation.php b/app/Controllers/Chatbot/serviceExecutiveConversation.php index 64a3e842..565da65f 100644 --- a/app/Controllers/Chatbot/serviceExecutiveConversation.php +++ b/app/Controllers/Chatbot/serviceExecutiveConversation.php @@ -27,6 +27,13 @@ class serviceExecutiveConversation extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case "yes": $this->say("Our executive will call you at the earliest."); diff --git a/app/Controllers/Chatbot/twoWheelerOptionsConversations.php b/app/Controllers/Chatbot/twoWheelerOptionsConversations.php index 44c1f4da..4b29005a 100644 --- a/app/Controllers/Chatbot/twoWheelerOptionsConversations.php +++ b/app/Controllers/Chatbot/twoWheelerOptionsConversations.php @@ -28,6 +28,13 @@ class twoWheelerOptionsConversations extends Conversation ]); $this->bot->ask($question, function ($answer) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); switch ($answer->getValue()) { case "3p": // $cityName = $response->getText(); diff --git a/app/Controllers/Chatbot/vehicleFormConversation.php b/app/Controllers/Chatbot/vehicleFormConversation.php index aa80c550..37baef1d 100644 --- a/app/Controllers/Chatbot/vehicleFormConversation.php +++ b/app/Controllers/Chatbot/vehicleFormConversation.php @@ -2,9 +2,10 @@ namespace App\Controllers\Chatbot; -use BotMan\BotMan\Messages\Conversations\Conversation; +use App\Helpers\ChatbotHelper; use BotMan\BotMan\Messages\Outgoing\Question; use BotMan\BotMan\Messages\Outgoing\Actions\Button; +use BotMan\BotMan\Messages\Conversations\Conversation; class vehicleFormConversation extends Conversation { @@ -12,10 +13,16 @@ class vehicleFormConversation extends Conversation protected $vehicleYOM; protected $vehicleEngineNo; protected $vehicleInvoiceNo; + protected $userId; + protected $complied_information; public function run() { - $this->askVehicleName(); + // Ensure $this->bot is properly initialized + // $user = $this->bot->getUser(); + // $this->userId = $user->getId(); // Correctly store user ID + + $this->askVehicleName(); // Start asking vehicle questions } protected function askVehicleName() @@ -50,7 +57,21 @@ class vehicleFormConversation extends Conversation $this->say('Vehicle Engine Number Cannot be Empty'); return $this->askVehicleEngineNo(); // Re-ask if empty } - $this->askVehicleInvoiceNo(); // Ask next question + + // Retrieve 'path' from storage + $path = $this->bot->userStorage()->get('path'); + + // Append 'new_policy' to path if not already present + // if (!in_array('new_policy', $path)) { + // array_push($path, 'new_policy'); + // $this->bot->userStorage()->save(['path' => $path]); + // } + log_message('error','Path: ',$path); + if (in_array('new_policy', $path)) { + $this->storeVehicleData(); + } else { + $this->askVehicleInvoiceNo(); // Ask next question + } }); } @@ -68,16 +89,82 @@ class vehicleFormConversation extends Conversation protected function storeVehicleData() { - // Save all collected data to user storage - $this->bot->userStorage()->save([ + // Retrieve 'path' from storage + $path = $this->bot->userStorage()->get('path'); + + // Prepare vehicle details + $vehicleDetails = [ 'vehicle_name' => $this->vehicleName, 'vehicle_yom' => $this->vehicleYOM, 'vehicle_engine_no' => $this->vehicleEngineNo, - 'vehicle_invoice_no' => $this->vehicleInvoiceNo - ]); + ]; + + // Only store 'vehicle_invoice_no' if 'new_policy' is NOT in path + if (!in_array('new_policy', $path)) { + $vehicleDetails['vehicle_invoice_no'] = $this->vehicleInvoiceNo; + } + + // Save vehicle details + $this->bot->userStorage()->save(['vehicle_details' => $vehicleDetails]); + $alldata = $this->bot->userStorage()->all(); + $vehicle_details = $this->bot->userStorage()->get('vehicle_details'); + // Log stored data for debugging + log_message('error', 'All Details: ' . json_encode($alldata)); + + log_message('error', 'Updated Vehicle Details: ' . json_encode($vehicle_details)); $this->say('Vehicle Information Saved!'); - $this->bot->startConversation(new doYouWantToContinueConversation()); + $vehicleInfo = "🚗 **Vehicle Details:**
"; + $vehicleInfo .= "🔹 Name: " . $vehicle_details['vehicle_name'] . "
"; + $vehicleInfo .= "🔹 Year of Manufacture: " . $vehicle_details['vehicle_yom'] . "
"; + $vehicleInfo .= "🔹 Engine No: " . $vehicle_details['vehicle_engine_no'] . "
"; + + if (isset($vehicle_details['vehicle_invoice_no'])) { + $vehicleInfo .= "🔹 Invoice No: " . $vehicle_details['vehicle_invoice_no'] . "
"; + } + $this->complied_information = $vehicleInfo; + // Send the message with vehicle details + $this->say($vehicleInfo); + $this->confirmVehicleDate($vehicleInfo); + + + // $this->bot->startConversation(new selectInsurerConversations()); + } + + protected function confirmVehicleDate($vehicle_info){ + $question = Question::create("Confim your Details:") + ->addButtons([ + Button::create("✅ Confirm")->value("confirm"), + Button::create("❌ No")->value("no"), + ]); + $this->bot->ask($question, function ($answer) use($vehicle_info) { + $path = $this->bot->userStorage()->get('path'); + array_push($path, + $answer->getValue() + ); + $this->bot->userStorage()->save([ + 'path' => $path + ]); + switch ($answer->getValue()) { + case "confirm": + // $cityName = $response->getText(); + $sent_staus = ChatbotHelper::sendQuotationRequestMail($vehicle_info); + if ($sent_staus){ + $this->say('Our Executive will contact you with the quotation soon.'); + $this->bot->startConversation(new doYouWantToContinueConversation()); + }else{ + $this->say("There was a problem while requesting for a quotation please try again later."); + } + break; + case "no": + $this->askVehicleName(); + break; + default: + $this->say("Invalid selection. Please choose an option."); + $this->showHospitalMenu(); + break; + } + }); } } diff --git a/app/Helpers/ChatbotHelper.php b/app/Helpers/ChatbotHelper.php index 9fc63f25..b78f936c 100644 --- a/app/Helpers/ChatbotHelper.php +++ b/app/Helpers/ChatbotHelper.php @@ -9,6 +9,10 @@ use App\Models\EmployeePolicyModel; use App\Models\TPAModel; use App\Helpers\MailHelper; +use App\Models\InsurerModel; +use App\Models\TicketMasterModel; + +use App\Controllers\TicketController; class ChatbotHelper { @@ -41,27 +45,6 @@ class ChatbotHelper return $EmployeeModel->select('mobile')->where('id',$emp_id)->first()['mobile']; } - public static function get_payload_data(string $key = null) - { - // Get the request object using the service helper - $request = service('request'); - - // Get the raw input (JSON or other data) - $rawInput = $request->getBody(); - - // Check if the raw input is valid JSON - $payload = json_decode($rawInput, true); - - if (json_last_error() === JSON_ERROR_NONE) { - // JSON is valid, return the requested key or the entire payload - return $key ? ($payload[$key] ?? null) : $payload; - } else { - // JSON is invalid, fallback to raw input or POST data - $payload = $request->getRawInput() ?: $request->getPost(); - return $key ? ($payload[$key] ?? null) : $payload; - } - } - public static function sendReimbursementProcessOverMail() { $emp_id = 12288; @@ -202,6 +185,70 @@ class ChatbotHelper return $template; } + public static function getInsurersList(){ + $insurer = new InsurerModel(); + $data = $insurer->select('short_name,name')->where('category','general')->where('is_active',1)->findAll(); + return $data; + } + + public static function sendQuotationRequestMail($data){ + + $message = SELF::quotationRequestMailTemplate($data); + + $common = ['mail_type'=>'request_quotation_bot']; + $email_id = 'srinivas.saravanan@venbainfotech.com'; + $res = MailHelper::send_email(['mail' => $email_id, 'subject' => 'Quotation Request Received from bot.', 'message' => $message,'common'=>$common]); + + $res = json_decode($res); + log_message('error','res: '.json_encode($res)); + if($res->status == 'success') + { + return true; + } + else + { + return false; + } + + } + + public static function quotationRequestMailTemplate($data){ + $message = 'A customer has requested for a quotation using bot,Here are all the details for it: + '.$data; + return $message; + } + + public static function getReimbursementClaimStatus(){ + $emp_id = 12052; + $emp_code = 'EMP001-K4'; + $client_id = 12; + $policy_id = 12; + $client_branch_id = 1; + $relationship ='Father'; + + $ticketMaster = new TicketMasterModel(); + $data = $ticketMaster->select('tcs.claim_status,ticket_master.claim_number,ticket_master.id') + ->join('client_policy cp',"cp.client_id = {$client_id} and cp.client_branch_id = {$client_branch_id} and cp.policy_id = {$policy_id} and cp.is_active = 1") + ->join('ticket_claim_status tcs',"ticket_master.claim_status_id = tcs.id and tcs.ticket_type = cp.policy_type_id and tcs.is_active = 1") + ->where('ticket_master.emp_id',$emp_id) + ->where('ticket_master.emp_code',$emp_code) + ->where('ticket_master.is_active',1) + ->orderBy('ticket_master.created_at', 'DESC') + ->first(); + + $ticket_controller = new TicketController(); + + if (!empty($data)){ + $ticket_id = $data['id']; + $mail_content = $ticket_controller->constructMailContent($ticket_id); + $mail_response = $ticket_controller->sendTrigger($mail_content); + return $data; + + }else{ + return false; + } + + } } diff --git a/app/Helpers/sendMailNotification.php b/app/Helpers/sendMailNotification.php index 3ecb7932..98dfacab 100755 --- a/app/Helpers/sendMailNotification.php +++ b/app/Helpers/sendMailNotification.php @@ -49,13 +49,13 @@ class sendMailNotification $nhance_logo = $_ENV['NHANCE_LOGO']; $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; - $mail_content = str_replace("[[client_logo]]", "Client Logo", $mail_content); - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[member_name]]", $employee_name, $mail_content); - $mail_content = str_replace("[[member_mobile]]", $employee_mobile_no, $mail_content); - $mail_content = str_replace("[[client_name]]", $client_data['client_name'], $mail_content); + $mail_content = str_replace("{{client_logo}}", "Client Logo", $mail_content); + $mail_content = str_replace("{{nhance_logo}}", "Nhance Logo", $mail_content); + $mail_content = str_replace("{{member_name}}", $employee_name, $mail_content); + $mail_content = str_replace("{{member_mobile}}", $employee_mobile_no, $mail_content); + $mail_content = str_replace("{{client_name}}", $client_data['client_name'], $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); if ($dataToInsert['relationship'] == 'Self' && $mail != null || $mail != '') { $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content,'bcc'=> $client_data['common_mails'], 'reply_to' => $client_data['reply_to'], 'attachments' => $attachments, 'common' => $common]; } @@ -77,16 +77,16 @@ class sendMailNotification $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); + $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); $employee_name =$emp_data['name']; $employee_mobile_no =$emp_data['mobile']; - $mail_content = str_replace("[[member_name]]", $employee_name, $mail_content); - $mail_content = str_replace("[[member_mobile]]", $employee_mobile_no, $mail_content); + $mail_content = str_replace("{{member_name}}", $employee_name, $mail_content); + $mail_content = str_replace("{{member_mobile}}", $employee_mobile_no, $mail_content); $mail = $emp_data['email_corporate']; $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails'], 'reply_to' => $client_data['reply_to'], 'common' => $common]; @@ -128,16 +128,16 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; // $client_logo = $nhance_logo; - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[client_logo]]", "Client Logo", $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("[[member_name]]", $name, $mail_content); - $mail_content = str_replace("[[member_mobile]]", $employee_mobile_no, $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); - $mail_content = str_replace("[[post_enrollment_app_link]]", "Review Details", $mail_content); - // $mail_content = str_replace("[[tpa_id]]", $tpa_id, $mail_content); - $mail_content = str_replace("[[ecard_download_link]]", "Download Insurance Card", $mail_content); - $mail_content = str_replace("[[client_name]]", $client_data['client_name'], $mail_content); + $mail_content = str_replace("{{member_name}}", $name, $mail_content); + $mail_content = str_replace("{{member_mobile}}", $employee_mobile_no, $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); + $mail_content = str_replace("{{post_enrollment_app_link}}", "Review Details", $mail_content); + // $mail_content = str_replace("{{tpa_id}}", $tpa_id, $mail_content); + $mail_content = str_replace("{{ecard_download_link}}", "Download Insurance Card", $mail_content); + $mail_content = str_replace("{{client_name}}", $client_data['client_name'], $mail_content); $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content,'bcc'=> $client_data['common_mails'], 'reply_to' => $client_data['reply_to'], 'common' => $common]; return $wholeData; @@ -172,11 +172,11 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; // $client_logo = $nhance_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("{{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); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $mail = ''; @@ -518,9 +518,9 @@ class sendMailNotification // dd($payable_employee_array, $Addon_list); // print_r($table_content); die; - $mail_content = str_replace("[[member_name]]", $name . ' (' . $emp_code . ')' , $mail_content); - $mail_content = str_replace("[[member_mobile]]", $employee_mobile_no, $mail_content); - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_name}}", $name . ' (' . $emp_code . ')' , $mail_content); + $mail_content = str_replace("{{member_mobile}}", $employee_mobile_no, $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); // print_r($mail_content); die; @@ -570,11 +570,11 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; // $client_logo = $nhance_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("{{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); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $mail = ''; @@ -816,16 +816,16 @@ class sendMailNotification } - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); $account_manager_mail_list = []; if(isset($user_list)){ foreach ($user_list as $key => $value) { $full_name = $value['first_name'] .' ' .$value['last_name']; - $mail_content = str_replace("[[member_name]]", $full_name , $mail_content); + $mail_content = str_replace("{{member_name}}", $full_name , $mail_content); $wholeData[] = ['mail' => $value['email'], 'subject' => $subject,'message'=> $mail_content, 'reply_to' => $client_data['reply_to'], 'common' => $common]; - // $wholeData[] = ['mail' => $value['email'], 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails']]; + // $wholeData[] = ['mail' => $value['email'], 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails'}}; } return $wholeData; } @@ -868,11 +868,11 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; // $client_logo = $nhance_logo; - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[client_logo]]", "Client Logo", $mail_content); - $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("{{client_name}}", $client_data['client_name'], $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $mail = ''; @@ -1115,7 +1115,7 @@ class sendMailNotification // $table_content .= '
' . $sum_total_words . '
'; } - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); $hr_mails = $client_data['hr_mails']; @@ -1124,7 +1124,7 @@ class sendMailNotification $wholeData = []; foreach ($mail_array as $key => $value) { $wholeData[] = ['mail' => $value, 'subject' => $subject,'message'=> $mail_content, 'reply_to' => $client_data['reply_to'], 'common' => $common]; - // $wholeData[] = ['mail' => $value, 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails']]; + // $wholeData[] = ['mail' => $value, 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails'}}; } return $wholeData; @@ -1173,13 +1173,13 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; - $mail_content = str_replace("[[client_logo]]", "Client Logo", $mail_content); - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[member_name]]", $employee_name, $mail_content); - $mail_content = str_replace("[[member_mobile]]", $mobile, $mail_content); - $mail_content = str_replace("[[client_name]]", $client_data['client_name'], $mail_content); + $mail_content = str_replace("{{client_logo}}", "Client Logo", $mail_content); + $mail_content = str_replace("{{nhance_logo}}", "Nhance Logo", $mail_content); + $mail_content = str_replace("{{member_name}}", $employee_name, $mail_content); + $mail_content = str_replace("{{member_mobile}}", $mobile, $mail_content); + $mail_content = str_replace("{{client_name}}", $client_data['client_name'], $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); if ($mail != null || $mail != '') { $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content,'bcc'=> $client_data['common_mails'], 'reply_to' => $client_data['reply_to'], 'attachments' => $attachments]; @@ -1204,11 +1204,11 @@ class sendMailNotification $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); - $mail_content = str_replace("[[member_mobile]]", $mobile, $mail_content); + $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); + $mail_content = str_replace("{{member_mobile}}", $mobile, $mail_content); if ((isset($notification_data) && $notification_data['enabled'] == 1)) { @@ -1256,15 +1256,15 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[client_logo]]", "Client Logo", $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("[[member_name]]", $name, $mail_content); - $mail_content = str_replace("[[member_mobile]]", $mobile, $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); - $mail_content = str_replace("[[post_enrollment_app_link]]", "Review Details", $mail_content); - $mail_content = str_replace("[[ecard_download_link]]", "Download Insurance Card", $mail_content); - $mail_content = str_replace("[[client_name]]", $client_data['client_name'], $mail_content); + $mail_content = str_replace("{{member_name}}", $name, $mail_content); + $mail_content = str_replace("{{member_mobile}}", $mobile, $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); + $mail_content = str_replace("{{post_enrollment_app_link}}", "Review Details", $mail_content); + $mail_content = str_replace("{{ecard_download_link}}", "Download Insurance Card", $mail_content); + $mail_content = str_replace("{{client_name}}", $client_data['client_name'], $mail_content); $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content,'bcc'=> $client_data['common_mails'],'attachments' => $attachments, 'reply_to' => $client_data['reply_to']]; @@ -1301,11 +1301,11 @@ class sendMailNotification $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("{{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); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $table_content = ''; @@ -1413,9 +1413,9 @@ class sendMailNotification } } - $mail_content = str_replace("[[member_name]]", $name . ' (' . $emp_code . ')' , $mail_content); - $mail_content = str_replace("[[member_mobile]]", $mobile, $mail_content); - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_name}}", $name . ' (' . $emp_code . ')' , $mail_content); + $mail_content = str_replace("{{member_mobile}}", $mobile, $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content, 'bcc'=> $client_data['common_mails'], 'reply_to' => $client_data['reply_to']]; @@ -1453,11 +1453,11 @@ class sendMailNotification $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("{{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); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $table_content = ''; @@ -1563,8 +1563,8 @@ class sendMailNotification } } - $mail_content = str_replace("[[member_name]]", $name . ' (' . $emp_code . ')' , $mail_content); - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_name}}", $name . ' (' . $emp_code . ')' , $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content, 'reply_to' => $client_data['reply_to']]; @@ -1600,11 +1600,11 @@ class sendMailNotification $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; - $mail_content = str_replace("[[nhance_logo]]", "Nhance Logo", $mail_content); - $mail_content = str_replace("[[client_logo]]", "Client Logo", $mail_content); - $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("{{client_name}}", $client_data['client_name'], $mail_content); - $mail_content = str_replace("[[app_link]]", "Review Details", $mail_content); + $mail_content = str_replace("{{app_link}}", "Review Details", $mail_content); // Step 1: Replace the placeholder with an HTML table structure $table_content = ''; @@ -1712,8 +1712,8 @@ class sendMailNotification } } - $mail_content = str_replace("[[member_name]]", $name . ' (' . $emp_code . ')' , $mail_content); - $mail_content = str_replace("[[member_summary]]", $table_content , $mail_content); + $mail_content = str_replace("{{member_name}}", $name . ' (' . $emp_code . ')' , $mail_content); + $mail_content = str_replace("{{member_summary}}", $table_content , $mail_content); $wholeData = ['mail' => $mail, 'subject' => $subject,'message'=> $mail_content, 'reply_to' => $client_data['reply_to']]; From da35bfe8b1df38d6c0c15a18a45c11cc5c2c102e Mon Sep 17 00:00:00 2001 From: velz Date: Mon, 10 Feb 2025 08:56:27 +0530 Subject: [PATCH 2/2] FIX_QUEUE_SERVER_SCRIPT --- phpqueue.sh | 59 +++++------------------------------------------------ 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/phpqueue.sh b/phpqueue.sh index f1e7176b..cc97a2db 100755 --- a/phpqueue.sh +++ b/phpqueue.sh @@ -1,56 +1,7 @@ -!/bin/bash +#!/bin/bash + while true; do echo "Running job at $(date)" - /usr/bin/php /opt/lampp/htdocs/nhance/public/index.php cli/processjob - !/bin/bash -!/bin/bash - -# Read the Job_Queue variable from the temporary file -#!/bin/bash - -#!/bin/bash - -#!/bin/bash - -# Define the root directory for the project and PID file path -#!/bin/bash - -# Define paths -# ROOT_DIR=$(dirname "$(realpath "$0")") -# JOB_QUEUE_FILE="$ROOT_DIR/job_queue" -# PID_FILE="$ROOT_DIR/phpqueue.pid" - - -# # Check if the script is already running -# if [[ -f "$PID_FILE" ]] && kill -0 "$(cat $PID_FILE)" 2>/dev/null; then -# echo "phpqueue.sh is already running. Exiting." -# exit 1 -# fi - -# # Write the current process ID (PID) to the PID file -# echo $$ > "$PID_FILE" - -# # Ensure the PID file is removed on script exit -# trap "rm -f $PID_FILE" EXIT - -# # Main loop -# while true; do -# # Check if the Job_Queue file exists -# if [[ ! -f "$JOB_QUEUE_FILE" ]]; then -# echo "Job Queue file not found." -# exit 1 -# fi - -# # Read the value of Job_Queue from the file -# Job_Queue=$(cat "$JOB_QUEUE_FILE") - -# if [[ "$Job_Queue" -eq 1 ]]; then -# /usr/bin/php /opt/lampp/htdocs/nhance/public/index.php cli/processjob -# else -# echo "No job to process." -# fi - -# # Sleep for 1 second before the next iteration -# sleep 1 -# done - + /usr/bin/php /var/www/nhance/zenith/public/index.php cli/processjob + sleep 1 # Optional: Add a sleep to avoid CPU overload +done