From d193c453976de35b457b3493573b698d03015c8e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Jun 2024 09:41:09 +0530 Subject: [PATCH] CHANGE_WHATSAPP_MAIL_SEND : AADHAVAN --- .env | 6 + app/Config/Routes.php | 3 +- app/Controllers/ClientController.php | 57 +- app/Controllers/Home.php | 4 +- app/Controllers/MasterController.php | 79 +- app/Controllers/StaffController.php | 17 +- app/Helpers/MailHelper.php | 129 +- app/Helpers/NotificationHelper.php | 84 + app/Views/client_login.php | 11 +- app/Views/share_docs.php | 30 + app/Views/staff_form.php | 38 +- composer.json | 1 + composer.lock | 505 ++++- vendor/composer/autoload_classmap.php | 86 + vendor/composer/autoload_files.php | 2 + vendor/composer/autoload_psr4.php | 3 + vendor/composer/autoload_static.php | 106 ++ vendor/composer/installed.json | 382 +++- vendor/composer/installed.php | 60 +- vendor/guzzlehttp/guzzle/CHANGELOG.md | 1633 +++++++++++++++++ vendor/guzzlehttp/guzzle/LICENSE | 27 + vendor/guzzlehttp/guzzle/README.md | 94 + vendor/guzzlehttp/guzzle/UPGRADING.md | 1253 +++++++++++++ vendor/guzzlehttp/guzzle/composer.json | 103 ++ .../guzzlehttp/guzzle/src/BodySummarizer.php | 28 + .../guzzle/src/BodySummarizerInterface.php | 13 + vendor/guzzlehttp/guzzle/src/Client.php | 483 +++++ .../guzzlehttp/guzzle/src/ClientInterface.php | 84 + vendor/guzzlehttp/guzzle/src/ClientTrait.php | 241 +++ .../guzzle/src/Cookie/CookieJar.php | 307 ++++ .../guzzle/src/Cookie/CookieJarInterface.php | 80 + .../guzzle/src/Cookie/FileCookieJar.php | 101 + .../guzzle/src/Cookie/SessionCookieJar.php | 77 + .../guzzle/src/Cookie/SetCookie.php | 488 +++++ .../src/Exception/BadResponseException.php | 39 + .../guzzle/src/Exception/ClientException.php | 10 + .../guzzle/src/Exception/ConnectException.php | 56 + .../guzzle/src/Exception/GuzzleException.php | 9 + .../Exception/InvalidArgumentException.php | 7 + .../guzzle/src/Exception/RequestException.php | 166 ++ .../guzzle/src/Exception/ServerException.php | 10 + .../Exception/TooManyRedirectsException.php | 7 + .../src/Exception/TransferException.php | 7 + .../guzzle/src/Handler/CurlFactory.php | 638 +++++++ .../src/Handler/CurlFactoryInterface.php | 25 + .../guzzle/src/Handler/CurlHandler.php | 49 + .../guzzle/src/Handler/CurlMultiHandler.php | 267 +++ .../guzzle/src/Handler/EasyHandle.php | 112 ++ .../guzzle/src/Handler/HeaderProcessor.php | 42 + .../guzzle/src/Handler/MockHandler.php | 212 +++ .../guzzlehttp/guzzle/src/Handler/Proxy.php | 51 + .../guzzle/src/Handler/StreamHandler.php | 615 +++++++ vendor/guzzlehttp/guzzle/src/HandlerStack.php | 275 +++ .../guzzle/src/MessageFormatter.php | 199 ++ .../guzzle/src/MessageFormatterInterface.php | 18 + vendor/guzzlehttp/guzzle/src/Middleware.php | 268 +++ vendor/guzzlehttp/guzzle/src/Pool.php | 125 ++ .../guzzle/src/PrepareBodyMiddleware.php | 105 ++ .../guzzle/src/RedirectMiddleware.php | 228 +++ .../guzzlehttp/guzzle/src/RequestOptions.php | 274 +++ .../guzzlehttp/guzzle/src/RetryMiddleware.php | 119 ++ .../guzzlehttp/guzzle/src/TransferStats.php | 133 ++ vendor/guzzlehttp/guzzle/src/Utils.php | 384 ++++ vendor/guzzlehttp/guzzle/src/functions.php | 167 ++ .../guzzle/src/functions_include.php | 6 + vendor/guzzlehttp/promises/CHANGELOG.md | 152 ++ vendor/guzzlehttp/promises/LICENSE | 24 + vendor/guzzlehttp/promises/README.md | 559 ++++++ vendor/guzzlehttp/promises/composer.json | 58 + .../promises/src/AggregateException.php | 19 + .../promises/src/CancellationException.php | 12 + vendor/guzzlehttp/promises/src/Coroutine.php | 162 ++ vendor/guzzlehttp/promises/src/Create.php | 79 + vendor/guzzlehttp/promises/src/Each.php | 81 + .../guzzlehttp/promises/src/EachPromise.php | 248 +++ .../promises/src/FulfilledPromise.php | 89 + vendor/guzzlehttp/promises/src/Is.php | 40 + vendor/guzzlehttp/promises/src/Promise.php | 281 +++ .../promises/src/PromiseInterface.php | 91 + .../promises/src/PromisorInterface.php | 16 + .../promises/src/RejectedPromise.php | 95 + .../promises/src/RejectionException.php | 49 + vendor/guzzlehttp/promises/src/TaskQueue.php | 71 + .../promises/src/TaskQueueInterface.php | 24 + vendor/guzzlehttp/promises/src/Utils.php | 259 +++ vendor/guzzlehttp/psr7/CHANGELOG.md | 448 +++++ vendor/guzzlehttp/psr7/LICENSE | 26 + vendor/guzzlehttp/psr7/README.md | 880 +++++++++ vendor/guzzlehttp/psr7/composer.json | 93 + vendor/guzzlehttp/psr7/src/AppendStream.php | 248 +++ vendor/guzzlehttp/psr7/src/BufferStream.php | 147 ++ vendor/guzzlehttp/psr7/src/CachingStream.php | 153 ++ vendor/guzzlehttp/psr7/src/DroppingStream.php | 49 + .../src/Exception/MalformedUriException.php | 14 + vendor/guzzlehttp/psr7/src/FnStream.php | 180 ++ vendor/guzzlehttp/psr7/src/Header.php | 134 ++ vendor/guzzlehttp/psr7/src/HttpFactory.php | 94 + vendor/guzzlehttp/psr7/src/InflateStream.php | 37 + vendor/guzzlehttp/psr7/src/LazyOpenStream.php | 49 + vendor/guzzlehttp/psr7/src/LimitStream.php | 157 ++ vendor/guzzlehttp/psr7/src/Message.php | 246 +++ vendor/guzzlehttp/psr7/src/MessageTrait.php | 265 +++ vendor/guzzlehttp/psr7/src/MimeType.php | 1259 +++++++++++++ .../guzzlehttp/psr7/src/MultipartStream.php | 165 ++ vendor/guzzlehttp/psr7/src/NoSeekStream.php | 28 + vendor/guzzlehttp/psr7/src/PumpStream.php | 179 ++ vendor/guzzlehttp/psr7/src/Query.php | 113 ++ vendor/guzzlehttp/psr7/src/Request.php | 159 ++ vendor/guzzlehttp/psr7/src/Response.php | 161 ++ vendor/guzzlehttp/psr7/src/Rfc7230.php | 23 + vendor/guzzlehttp/psr7/src/ServerRequest.php | 340 ++++ vendor/guzzlehttp/psr7/src/Stream.php | 283 +++ .../psr7/src/StreamDecoratorTrait.php | 156 ++ vendor/guzzlehttp/psr7/src/StreamWrapper.php | 203 ++ vendor/guzzlehttp/psr7/src/UploadedFile.php | 211 +++ vendor/guzzlehttp/psr7/src/Uri.php | 743 ++++++++ vendor/guzzlehttp/psr7/src/UriComparator.php | 52 + vendor/guzzlehttp/psr7/src/UriNormalizer.php | 220 +++ vendor/guzzlehttp/psr7/src/UriResolver.php | 211 +++ vendor/guzzlehttp/psr7/src/Utils.php | 463 +++++ vendor/ralouphie/getallheaders/LICENSE | 21 + vendor/ralouphie/getallheaders/README.md | 27 + vendor/ralouphie/getallheaders/composer.json | 26 + .../getallheaders/src/getallheaders.php | 46 + 124 files changed, 21760 insertions(+), 196 deletions(-) create mode 100644 app/Helpers/NotificationHelper.php create mode 100644 vendor/guzzlehttp/guzzle/CHANGELOG.md create mode 100644 vendor/guzzlehttp/guzzle/LICENSE create mode 100644 vendor/guzzlehttp/guzzle/README.md create mode 100644 vendor/guzzlehttp/guzzle/UPGRADING.md create mode 100644 vendor/guzzlehttp/guzzle/composer.json create mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizer.php create mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/Client.php create mode 100644 vendor/guzzlehttp/guzzle/src/ClientInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/ClientTrait.php create mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php create mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php create mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php create mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ClientException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/RequestException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ServerException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TransferException.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/Proxy.php create mode 100644 vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php create mode 100644 vendor/guzzlehttp/guzzle/src/HandlerStack.php create mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatter.php create mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php create mode 100644 vendor/guzzlehttp/guzzle/src/Middleware.php create mode 100644 vendor/guzzlehttp/guzzle/src/Pool.php create mode 100644 vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php create mode 100644 vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php create mode 100644 vendor/guzzlehttp/guzzle/src/RequestOptions.php create mode 100644 vendor/guzzlehttp/guzzle/src/RetryMiddleware.php create mode 100644 vendor/guzzlehttp/guzzle/src/TransferStats.php create mode 100644 vendor/guzzlehttp/guzzle/src/Utils.php create mode 100644 vendor/guzzlehttp/guzzle/src/functions.php create mode 100644 vendor/guzzlehttp/guzzle/src/functions_include.php create mode 100644 vendor/guzzlehttp/promises/CHANGELOG.md create mode 100644 vendor/guzzlehttp/promises/LICENSE create mode 100644 vendor/guzzlehttp/promises/README.md create mode 100644 vendor/guzzlehttp/promises/composer.json create mode 100644 vendor/guzzlehttp/promises/src/AggregateException.php create mode 100644 vendor/guzzlehttp/promises/src/CancellationException.php create mode 100644 vendor/guzzlehttp/promises/src/Coroutine.php create mode 100644 vendor/guzzlehttp/promises/src/Create.php create mode 100644 vendor/guzzlehttp/promises/src/Each.php create mode 100644 vendor/guzzlehttp/promises/src/EachPromise.php create mode 100644 vendor/guzzlehttp/promises/src/FulfilledPromise.php create mode 100644 vendor/guzzlehttp/promises/src/Is.php create mode 100644 vendor/guzzlehttp/promises/src/Promise.php create mode 100644 vendor/guzzlehttp/promises/src/PromiseInterface.php create mode 100644 vendor/guzzlehttp/promises/src/PromisorInterface.php create mode 100644 vendor/guzzlehttp/promises/src/RejectedPromise.php create mode 100644 vendor/guzzlehttp/promises/src/RejectionException.php create mode 100644 vendor/guzzlehttp/promises/src/TaskQueue.php create mode 100644 vendor/guzzlehttp/promises/src/TaskQueueInterface.php create mode 100644 vendor/guzzlehttp/promises/src/Utils.php create mode 100644 vendor/guzzlehttp/psr7/CHANGELOG.md create mode 100644 vendor/guzzlehttp/psr7/LICENSE create mode 100644 vendor/guzzlehttp/psr7/README.md create mode 100644 vendor/guzzlehttp/psr7/composer.json create mode 100644 vendor/guzzlehttp/psr7/src/AppendStream.php create mode 100644 vendor/guzzlehttp/psr7/src/BufferStream.php create mode 100644 vendor/guzzlehttp/psr7/src/CachingStream.php create mode 100644 vendor/guzzlehttp/psr7/src/DroppingStream.php create mode 100644 vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php create mode 100644 vendor/guzzlehttp/psr7/src/FnStream.php create mode 100644 vendor/guzzlehttp/psr7/src/Header.php create mode 100644 vendor/guzzlehttp/psr7/src/HttpFactory.php create mode 100644 vendor/guzzlehttp/psr7/src/InflateStream.php create mode 100644 vendor/guzzlehttp/psr7/src/LazyOpenStream.php create mode 100644 vendor/guzzlehttp/psr7/src/LimitStream.php create mode 100644 vendor/guzzlehttp/psr7/src/Message.php create mode 100644 vendor/guzzlehttp/psr7/src/MessageTrait.php create mode 100644 vendor/guzzlehttp/psr7/src/MimeType.php create mode 100644 vendor/guzzlehttp/psr7/src/MultipartStream.php create mode 100644 vendor/guzzlehttp/psr7/src/NoSeekStream.php create mode 100644 vendor/guzzlehttp/psr7/src/PumpStream.php create mode 100644 vendor/guzzlehttp/psr7/src/Query.php create mode 100644 vendor/guzzlehttp/psr7/src/Request.php create mode 100644 vendor/guzzlehttp/psr7/src/Response.php create mode 100644 vendor/guzzlehttp/psr7/src/Rfc7230.php create mode 100644 vendor/guzzlehttp/psr7/src/ServerRequest.php create mode 100644 vendor/guzzlehttp/psr7/src/Stream.php create mode 100644 vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php create mode 100644 vendor/guzzlehttp/psr7/src/StreamWrapper.php create mode 100644 vendor/guzzlehttp/psr7/src/UploadedFile.php create mode 100644 vendor/guzzlehttp/psr7/src/Uri.php create mode 100644 vendor/guzzlehttp/psr7/src/UriComparator.php create mode 100644 vendor/guzzlehttp/psr7/src/UriNormalizer.php create mode 100644 vendor/guzzlehttp/psr7/src/UriResolver.php create mode 100644 vendor/guzzlehttp/psr7/src/Utils.php create mode 100644 vendor/ralouphie/getallheaders/LICENSE create mode 100644 vendor/ralouphie/getallheaders/README.md create mode 100644 vendor/ralouphie/getallheaders/composer.json create mode 100644 vendor/ralouphie/getallheaders/src/getallheaders.php diff --git a/.env b/.env index 7e3bd14..b281b3e 100644 --- a/.env +++ b/.env @@ -69,3 +69,9 @@ database.default.port = 3306 #-------------------------------------------------------------------- # logger.threshold = 4 + + + +WAAI_INSTANCE = '666FEE6738696' +WAAI_TOKEN = '666fd862df687' +SEND_WAAI_URL = SEND_WAAI_URL \ No newline at end of file diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 7f52cce..68797ea 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -67,6 +67,7 @@ use CodeIgniter\Router\RouteCollection; $routes->match(['get','post'],'/client_docs_preview','MasterController::client_docs_preview'); $routes->get('client_docs_histroy/(:any)','MasterController::client_docs_histroy/$1'); $routes->match(['get','post'],'/change_doc_status','MasterController::change_doc_status'); + $routes->match(['get','post'],'/rememeber_notification','MasterController::rememeber_notification'); $routes->match(['get','post'],'/test','MasterController::test'); $routes->post('doc_generate_otp','MasterController::doc_generate_otp'); $routes->post('doc_verify_otp','MasterController::doc_verify_otp'); @@ -74,7 +75,7 @@ use CodeIgniter\Router\RouteCollection; $routes->match(['get','post'],'shared_document_edit','MasterController::shared_document_edit'); - + $routes->get('business_list','BusinessController::business_list'); $routes->get('new_business/(:any)','BusinessController::new_business/$1'); $routes->post('add_business','BusinessController::add_business'); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 2448925..4924a84 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -12,6 +12,11 @@ use PhpOffice\PhpSpreadsheet\IOFactory; use App\Models\DocsStatusModel; use CodeIgniter\API\ResponseTrait; +use App\Helpers\NotificationHelper; + + +use GuzzleHttp\Client; +use GuzzleHttp\Exception\RequestException; class ClientController extends BaseController { @@ -161,29 +166,47 @@ class ClientController extends BaseController try { $gst_no = $this->request->getPost('gst_no'); - $client_branch_data = $this->ClientBranchModel->where('gst_no', $gst_no )->first(); - - if($client_branch_data){ - - $id = $client_branch_data['id']; - - $data = [ - 'otp' => '123456' - ]; - $update = $this->ClientBranchModel->update($id , $data); - - if($update){ - return json_encode(true); - } - } else { - return false; + if (empty($gst_no)) { + throw new \Exception('GST number is required'); } + + $client_branch_data = $this->ClientBranchModel->where('gst_no', $gst_no)->first(); + + if (!$client_branch_data) { + throw new \Exception('Client branch not found for GST number: ' . $gst_no); + } + + $id = $client_branch_data['id']; + + $otp = mt_rand(100000, 999999); + $data = ['otp' => $otp]; + $update = $this->ClientBranchModel->update($id, $data); + + if (!$update) { + throw new \Exception('Failed to update OTP in database'); + } + $notificationHelper = new NotificationHelper(); + $number = '91'. $client_branch_data['mobile_no']; // Replace with dynamic recipient number + $message = 'Login OTP is: ' . $otp; + + try { + $notificationHelper->sendWhatsAppMessage($number, $message); + return $this->respond(['success' => true, 'otp' => $otp]); + } catch (\Exception $e) { + return $this->respond(['Error' => $e->getMessage()]); + } + // Return success response with OTP + } catch (\Exception $e) { - // Handle any exceptions that occur during execution + // Log the exception + error_log('Error generating OTP: ' . $e->getMessage()); + + // Return error response return $this->respond(['status' => 'error', 'code' => 500, 'message' => $e->getMessage()], 500); } } + public function verify_otp() diff --git a/app/Controllers/Home.php b/app/Controllers/Home.php index 6e36ee9..83bae19 100644 --- a/app/Controllers/Home.php +++ b/app/Controllers/Home.php @@ -21,8 +21,8 @@ class Home extends BaseController $file_name = $_FILES['file']['tmp_name']; $spreadsheet = IOFactory::load($file_name); $data = $spreadsheet->getActiveSheet()->toArray(); - echo "
";
-                print_r($data);die;
+                // echo "
";
+                // print_r($data);die;
 
                 foreach ($data as $row) {
                     $name = $row[0];
diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php
index af1b32e..2805ff2 100644
--- a/app/Controllers/MasterController.php
+++ b/app/Controllers/MasterController.php
@@ -16,6 +16,7 @@ use App\Models\DocsStatusModel;
 
 use \Mpdf\Mpdf;
 
+use App\Helpers\NotificationHelper;
 
 use CodeIgniter\API\ResponseTrait;
 
@@ -294,6 +295,8 @@ class MasterController extends BaseController
             $data['serviceGroupData'] = $this->ServiceGroupModel->findAll();
     
 		    $staffdata = $this->StaffModel->where('staff_id',$this->session->get('is_staff_logged_in'))->get()->getRow();
+    // echo "
";
+            // print_r($data['doc_list']);die;
             echo view('layout/header', ['Data'=>$staffdata]);
             echo view('share_docs',$data);
             echo view('layout/footer');
@@ -530,20 +533,33 @@ class MasterController extends BaseController
 
                 $MailHelper = new MailHelper();
 
-                $clientData =  $this->ClientDocsModel->select('client.name , client_branch.email')
+                $clientData =  $this->ClientDocsModel->select('client.name , client_branch.email, client_branch.mobile_no')
                                     ->join('client_branch', 'client_docs.client_branch_id = client_branch.id', 'left')
                                     ->join('client', 'client_branch.client_id = client.client_id', 'left')
                                     ->where('client_docs.id', $doc_id)->get()->getRow();
 
-                $url = 'Click here';
+                $documentUrl = base_url();
+                $url = 'Preview and Approve Document';
 
                 $businessData = $this->BranchModel->select('branches.* , business.business_name ')
                                                     ->join('business', 'branches.business_id = business.business_id', 'left')
                                                     ->where('branches.branch_id',$this->session->get('logged_in_staff_branch_id'))
                                                     ->get()->getRow();
-    
-                $MailHelper->send_url_email($clientData->email , $url , $clientData->name , $businessData->business_name, $businessData->email);
+                $subject = 'BB-Sign Verify Document';
+                $message = "Dear " . $clientData->name . ",
" . $businessData->business_name . " has requested your approval for a document. Please click the link below to preview and approve.

" . $url; + $mail_send = $MailHelper->send_url_email($clientData->email , $businessData->email, $subject, $message); + + $notificationHelper = new NotificationHelper(); + $number = '91'.$clientData->mobile_no; // Replace with dynamic recipient number + + try { + $whatsApp_message = "Dear " . $clientData->name . "," . $businessData->business_name . " has requested your approval for a document. Please click the link below to preview and approve." ; + $notificationHelper->sendWhatsAppMessage($number, $whatsApp_message, $url); + // return $this->respond(['success' => true, 'otp' => $otp]); + } catch (\Exception $e) { + return $this->respond(['Error' => $e->getMessage()]); + } $statusData['client_docs_id'] = $doc_id; $statusData['is_staff'] = 1; @@ -570,6 +586,45 @@ class MasterController extends BaseController return $this->response->setJSON(['status' => 'failed','code' => 500,'data' => $exception],500); } } + + + public function rememeber_notification() + { + try { + $doc_id = $this->request->getPost('doc_id'); + + $MailHelper = new MailHelper(); + + $clientData = $this->ClientDocsModel->select('client.name , client_branch.email, client_branch.mobile_no') + ->join('client_branch', 'client_docs.client_branch_id = client_branch.id', 'left') + ->join('client', 'client_branch.client_id = client.client_id', 'left') + ->where('client_docs.id', $doc_id)->get()->getRow(); + + $url = 'Click here'; + + $businessData = $this->BranchModel->select('branches.* , business.business_name ') + ->join('business', 'branches.business_id = business.business_id', 'left') + ->where('branches.branch_id',$this->session->get('logged_in_staff_branch_id')) + ->get()->getRow(); + $subject = 'BB-Sign Verify Document'; + $message = "Dear " . $clientData->name . ",
" . $businessData->business_name . " has requested your approval for a document. Please click the link below to preview and approve.

" . $url; + + $MailHelper->send_url_email($clientData->email , $businessData->email, $subject, $message); + + $notificationHelper = new NotificationHelper(); + $number = '91'.$clientData->mobile_no; // Replace with dynamic recipient number + + try { + $whatsApp_message = "Dear " . $clientData->name . "," . $businessData->business_name . " has requested your approval for a document. Please click the link below to preview and approve." ; + $notificationHelper->sendWhatsAppMessage($number, $whatsApp_message, $url); + return $this->respond(['success' => true, 'data' => 'Remember Send Successfully']); + } catch (\Exception $e) { + return $this->respond(['Error' => $e->getMessage()]); + } + } catch (\Exception $exception) { + return $this->response->setJSON(['status' => 'failed','code' => 500,'data' => $exception],500); + } + } public function doc_generate_otp() @@ -583,13 +638,21 @@ class MasterController extends BaseController if($client_data){ $id = $this->request->getPost('doc_id'); - $data = [ - 'otp' => '123456', - ]; + $otp = mt_rand(100000, 999999); + $data = ['otp' => $otp]; $update = $this->ClientDocsModel->update($id, $data); if($update){ - return json_encode(true); + $notificationHelper = new NotificationHelper(); + $number = '91'.$mobile_no; // Replace with dynamic recipient number + $message = 'Document Verification OTP : ' . $otp; + + try { + $notificationHelper->sendWhatsAppMessage($number, $message); + return $this->respond(['success' => true, 'otp' => $otp]); + } catch (\Exception $e) { + return $this->respond(['Error' => $e->getMessage()]); + } } } else { return false; diff --git a/app/Controllers/StaffController.php b/app/Controllers/StaffController.php index 01475a5..a04dcdb 100644 --- a/app/Controllers/StaffController.php +++ b/app/Controllers/StaffController.php @@ -105,8 +105,6 @@ class StaffController extends BaseController $data['staffList'] = $this->StaffModel->getStaffWithBusinessAndBranch(session()->get('is_staff_logged_in'), $this->session->get('logged_in_staff_branch_id')); - - $staffdata = $this->StaffModel->where('staff_id',$this->session->get('is_staff_logged_in'))->get()->getRow(); echo view('layout/header', ['Data'=>$staffdata]); echo view('staff_list',$data); @@ -118,15 +116,22 @@ class StaffController extends BaseController if($this->request->getmethod() == 'POST') { + $email = $this->request->getVar('email'); + $staff = $this->StaffModel->where('email', $email)->first(); + + if($staff){ + return; + }else{ $staffData = $this->request->getVar(); // print_r($staffData);die; - $staffData['created_by'] = $this->session->get('is_staff_logged_in'); - // $staffData['branch_id'] = $this->session->get('logged_in_staff_branch_id'); + $staffData['created_by'] = $this->session->get('is_staff_logged_in'); + // $staffData['branch_id'] = $this->session->get('logged_in_staff_branch_id'); $insert = $this->StaffModel->save($staffData); if($insert) { return redirect()->to(base_url()."staff_list"); } + } }else{ @@ -246,7 +251,7 @@ class StaffController extends BaseController { //update staff profile $staffData = $this->request->getVar(); - print_r($staffData); + // print_r($staffData); $staffData['updated_by'] = $this->session->get('is_staff_logged_in'); $staff_id = $this->request->getVar('staff_id'); $this->StaffModel->where('staff_id', $staff_id )->set($staffData)->update(); @@ -362,7 +367,7 @@ class StaffController extends BaseController if($this->request->getmethod() == 'POST') { $staffData = $this->request->getVar(); - print_r($staffData);die; + // print_r($staffData);die; $staff_id = $this->request->getVar('staff_id'); $this->StaffModel->where('staff_id', $staff_id )->set($staffData)->update(); $this->session->setTempdata('mail_success', "Password set sucessfully",3); diff --git a/app/Helpers/MailHelper.php b/app/Helpers/MailHelper.php index a5c7426..c448ae5 100644 --- a/app/Helpers/MailHelper.php +++ b/app/Helpers/MailHelper.php @@ -2,91 +2,58 @@ namespace App\Helpers; - - class MailHelper { - protected static $logger; + public static function send_otp_email($email_id, $otp) + { + $subject = 'BB-Sign Verify Document'; + $message = "Hai, +
+ We have a requested forgot password OTP: " . $otp; - public static function initLogger() { - if (self::$logger === null) { - self::$logger = \Config\Services::logger(); + try { + $email = \Config\Services::email(); + $email->setMailType('html'); + $email->setFrom('bbone@venbait.in', 'BB-Sign'); + $email->setTo($email_id); + $email->setSubject($subject); + $email->setMessage($message); + + if ($email->send()) { + return ['status' => 'success', 'code' => 200, 'message' => 'Email Sent Successfully...', 'data' => $email_id]; + } else { + return ['status' => 'failed', 'code' => 404, 'message' => 'Email Sent Failed...', 'data' => $email_id]; + } + } catch (\Exception $e) { + return ['status' => 'failed', 'code' => 500, 'message' => 'Exception: ' . $e->getMessage(), 'data' => $email_id]; + } + } + + public static function send_url_email($email_id, $branch_email, $subject, $message) + { + try { + + + + $email = \Config\Services::email(); + + $email->setMailType('html'); + $email->setFrom('bbone@venbait.in', 'BB-Sign'); + $email->setTo($email_id); + $email->setSubject($subject); + $email->setMessage($message); + + if ($email->send()) { + return ['status' => 'success', 'code' => 200, 'message' => 'Email Sent Successfully...', 'data' => $email_id]; + } else { + log_message('error', 'Email sending failed: ' . $email->printDebugger(['headers'])); + return ['status' => 'failed', 'code' => 404, 'message' => 'Email Sent Failed...', 'data' => $email_id]; + } + } catch (\Exception $e) { + log_message('error', 'Exception occurred while sending email: ' . $e->getMessage()); + return ['status' => 'failed', 'code' => 500, 'message' => 'Exception: ' . $e->getMessage(), 'data' => $email_id]; } } - public static function send_otp_email($email_id,$otp) - { - - - - $subject = 'BB-Sign Verify Document'; - $message = "Hai , -
- We have a requested forgot password OTP :".$otp; - - - - try { - - $email = \Config\Services::email(); - $email->setMailType('html'); - $email->setFrom('bbone@venbait.in', 'BB-Sign'); - - $email->setTo($email_id); - - $email->setSubject($subject); - $email->setMessage($message); - - if ($email->send()) { - return json_encode(['status' => 'success','code' => 200, 'message'=>'Email Sent Successfully...','data' => $email_id,],200); - } else { - return json_encode(['status' => 'failed','code' => 404,'message'=>'Email Sent Failed...','data' => $email_id ],404); - } - - } catch (\Exception $e) { - return json_encode(['status' => 'failed','code' => 500,'data' => $email_id],500); - } - } - - public static function send_url_email($email_id,$url,$client_name,$business_name,$branch_email) - { - - - self::initLogger(); - - - $subject = 'BB-Sign Verify Document'; - - $message = "Dear " . $client_name . ",
" . $business_name . " has requested your approval for a document. Please click the link below to preview and approve.

" . $url; - - - try { - - $email = \Config\Services::email(); - $email->setMailType('html'); - $email->setFrom('bbone@venbait.in', 'BB-Sign'); - - $email->setTo($email_id); - - $email->setSubject($subject); - $email->setMessage($message); - - if ($email->send()) { - self::$logger->info('Email Sent Successfully'); - return json_encode(['status' => 'success','code' => 200, 'message'=>'Email Sent Successfully...','data' => $email_id,],200); - } else { - self::$logger->error('Email Sent Failed'); - return json_encode(['status' => 'failed','code' => 404,'message'=>'Email Sent Failed...','data' => $email_id ],404); - } - - } catch (\Exception $e) { - return json_encode(['status' => 'failed','code' => 500,'data' => $email_id],500); - } - } - - - - - } -?> \ No newline at end of file +?> diff --git a/app/Helpers/NotificationHelper.php b/app/Helpers/NotificationHelper.php new file mode 100644 index 0000000..d496d12 --- /dev/null +++ b/app/Helpers/NotificationHelper.php @@ -0,0 +1,84 @@ +email = service('email'); + $this->logger = service('logger'); + } + + + public function sendWhatsAppMessage($number, $message, $client_login_url = '') + { + // Extract plain text message + $plainTextMessage = strip_tags($message); + + // Extract URL from message + preg_match('/]*?\s+)?href="([^"]*)"/i', $client_login_url, $match); + $client_login_url = isset($match[1]) ? $match[1] : ''; + // Prepare the data to send + $instance_id = $_ENV['WAAI_INSTANCE']; + $access_token = $_ENV['WAAI_TOKEN']; + $url = 'https://waai.in/api/send'; + + // Prepare the text for WhatsApp + if($client_login_url){ + $whatsappMessage = $plainTextMessage . "\n\nClick here - " . $client_login_url; + }else{ + $whatsappMessage = $plainTextMessage ; + } + // Prepare JSON payload + $postdata = json_encode([ + 'number' => $number, + 'type' => 'text', + 'message' => $whatsappMessage, + 'instance_id' => $instance_id, + 'access_token' => $access_token + ]); + + // Initialize cURL session + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json', + 'Content-Length: ' . strlen($postdata) + ]); + + // Execute cURL session + $response = curl_exec($ch); + + // Check for cURL errors + if ($response === false) { + $this->logger->error('Failed to communicate with WhatsApp API: ' . curl_error($ch)); + curl_close($ch); + throw new \Exception('Failed to communicate with WhatsApp API'); + } + + // Get HTTP response code + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + // Check HTTP response code for success + if ($httpCode !== 200) { + $this->logger->error('Failed to send WhatsApp message. HTTP Code: ' . $httpCode); + throw new \Exception('Failed to send WhatsApp message. HTTP Code: ' . $httpCode); + } + + // Log success or handle further + $this->logger->info('WhatsApp message sent successfully to ' . $number); + return true; + } + +} + +?> diff --git a/app/Views/client_login.php b/app/Views/client_login.php index 1cb71d3..f5aa422 100644 --- a/app/Views/client_login.php +++ b/app/Views/client_login.php @@ -159,7 +159,7 @@ gst_no : $('#gst_no').val() }, success: function(response) { - if(response){ + if(response.success){ gst_error.html(''); $('#generate_otp_id').hide(); $('#otp_hide').show(); @@ -218,7 +218,8 @@ }) $('#resend_otp').click(function (params) { - + var gst_error = $('#gst_error') + event.preventDefault(); // Prevent form submission $('.loader').fadeIn(); $('.loader-mask').fadeIn(); @@ -229,15 +230,15 @@ gst_no : $('#gst_no').val() }, success: function(response) { - if(response){ + if(response.success){ $('#gst_error').html(''); $('#generate_otp_id').hide(); $('#otp_hide').show(); $('#verify_otp_hide').show(); $('#otp_sent_success').html('OTP Sent Successfully').css('color','green'); }else{ - - + gst_error.html('GST number mismatch. Please try again.'); + gst_error.css('color','red'); } $('.loader').fadeOut(); $('.loader-mask').fadeOut('slow'); diff --git a/app/Views/share_docs.php b/app/Views/share_docs.php index 1a15165..eefab18 100644 --- a/app/Views/share_docs.php +++ b/app/Views/share_docs.php @@ -105,7 +105,12 @@ Share + + + Remember + + @@ -390,6 +395,7 @@ data: formData, dataType: 'json', success: function(response) { + // console.log(response); if (response.data) { window.location.reload(); } @@ -403,8 +409,32 @@ } + function rememberNotification(params) { + var doc_id = params.getAttribute('data-id'); + + var formData = { + doc_id: doc_id, + }; + $.ajax({ + type: 'POST', + url: '', + data: formData, + dataType: 'json', + success: function(response) { + if (response.data) { + window.location.reload(); + } + }, + error: function(xhr, status, error) { + // Handle error response here + console.error(xhr.responseText); + } + }); + } + + diff --git a/app/Views/staff_form.php b/app/Views/staff_form.php index 363b577..d05b5cb 100644 --- a/app/Views/staff_form.php +++ b/app/Views/staff_form.php @@ -38,8 +38,7 @@
Personal Info
action="" - action="" + class="parsley-examples"> @@ -146,7 +145,7 @@
- @@ -175,6 +174,37 @@