From efd3c419c04ebad422f3a62a8a3d47a6ffd0eb74 Mon Sep 17 00:00:00 2001 From: bitbucket Date: Thu, 27 Jun 2024 16:03:36 +0530 Subject: [PATCH] change sms --- app/Config/Routes.php | 2 +- app/Controllers/TestController.php | 131 ++++++++++++++++++++++++- app/Models/ClientDocsModel.php | 2 +- public/assets/images/dox2apprv-fav.png | Bin 0 -> 20288 bytes 4 files changed, 128 insertions(+), 7 deletions(-) create mode 100644 public/assets/images/dox2apprv-fav.png diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 27402f5..d794876 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -99,5 +99,5 @@ use CodeIgniter\Router\RouteCollection; $routes->get('sendSms','TestController::sendSms'); - $routes->get('protected-page', 'TestController::protectedPage', ['filter' => 'signedUrl']); + $routes->get('preview', 'TestController::protectedPage', ['filter' => 'signedUrl']); $routes->get('sendUrl', 'TestController::sendUrl'); \ No newline at end of file diff --git a/app/Controllers/TestController.php b/app/Controllers/TestController.php index b2ee8e6..393c2b2 100644 --- a/app/Controllers/TestController.php +++ b/app/Controllers/TestController.php @@ -1,16 +1,57 @@ ServiceModel = new ServiceModel(); + $this->TemplateModel = new TemplateModel(); + $this->StaffModel = new StaffModel(); + $this->ClientDocsModel = new ClientDocsModel(); + $this->ClientModel = new ClientModel(); + $this->BusinessModel = new BusinessModel(); + $this->BranchModel = new BranchModel(); + $this->ServiceGroupModel = new ServiceGroupModel(); + $this->ClientBranchModel = new ClientBranchModel(); + $this->DocsStatusModel = new DocsStatusModel(); + + + + + } + public function sendSms() { $apiKey = 'HgvlULWCIrs'; // Your API key - $mobileNumbers = '9894638731'; // Recipient mobile numbers - $DLTTemplateID = '1107171922342349877'; // DLT Template ID + $mobileNumbers = '919894638731'; // Recipient mobile numbers + $DLTTemplateID = '1105171896608602869'; // DLT Template ID $senderId = 'LDRAJ'; // Sender ID $message = 'Dear Gowtham, 986532 is OTP to approve Service group for service name purposes.'; $serviceName = 'TEMPLATE_BASED'; // Service name @@ -38,12 +79,92 @@ class TestController extends Controller public function sendUrl() { helper('url'); - $signedUrl = generate_signed_url('protected-page', [], 36000); + $signedUrl = generate_signed_url('preview', ['doc_id'=>md5(7)], 60); // Send the $signedUrl to your client (e.g., via email) return $this->response->setJSON(['url' => $signedUrl]); } + public function protectedPage(){ - echo "This is protectedPage"; + $doc_id = $this->request->getVar('doc_id'); + $data['docData'] = $this->ClientDocsModel->docPreview($doc_id); + + $data['clientData'] = $this->ClientBranchModel->select('client.name , client.pan_no ,client_branch.gst_no , client_branch.mobile_no , client_branch.email , client_branch.address , client_branch.country , client_branch.state , client_branch.city , client_branch.pin_code ') + ->join('client', 'client_branch.client_id = client.client_id', 'left') + ->where('client_branch.id',$data['docData']->client_branch_id) + ->get()->getRow(); + + + + + $data['header_html'] = $data['docData']->header_html; + $data['footer_html'] = $data['docData']->footer_html; + $data['body_html'] = $data['docData']->body_html; + //replace client details in template content + foreach ($data['clientData'] as $key => $value) { + $placeHolder = '%'.$key.'%'; + $data['body_html'] = str_replace($placeHolder,$value,$data['body_html']); + } + + if($data['docData']->is_active == 1){ + $DateAndYears = $data['docData']->place_holder_object; + }else{ + $DateAndYears = $this->dateAndYearPlaceholder(); + } + //replace Date and Year values in template content + foreach (json_decode($DateAndYears,true) as $key => $value) { + $placeHolder = '%'.$key.'%'; + $data['body_html'] = str_replace($placeHolder,$value,$data['body_html']); + } + + + + + echo view('client_docs_preview',$data); + + } + + + public function dateAndYearPlaceholder() + { + $currentDate = date('d-m-Y'); + $currentYear = date('Y'); + $currentMonth = date('m'); + + + if ($currentMonth >= 4) { + $financialYearStart = $currentYear . '-04-01'; + $financialYearEnd = ($currentYear + 1) . '-03-31'; + $financialYear = $currentYear . '-' . ($currentYear + 1); + $assessmentYear = ($currentYear + 1) . '-' . ($currentYear + 2); + $q1 = '01-04-' . $currentYear . ' to ' . '30-06-' . $currentYear; + $q2 = '01-07-' . $currentYear . ' to ' . '30-09-' . $currentYear; + $q3 = '01-10-' . $currentYear . ' to ' . '31-12-' . $currentYear; + $q4 = '01-01-' . ($currentYear + 1) . ' to ' . '31-03-' . ($currentYear + 1); + + } else { + $financialYearStart = ($currentYear - 1) . '-04-01'; + $financialYearEnd = $currentYear . '-03-31'; + $financialYear = ($currentYear - 1) . '-' . $currentYear; + $assessmentYear = $currentYear . '-' . ($currentYear + 1); + $q1 = '01-04-' . ($currentYear - 1) . ' to ' . '30-06-' . ($currentYear - 1); + $q2 = '01-07-' . ($currentYear - 1) . ' to ' . '30-09-' . ($currentYear - 1); + $q3 = '01-10-' . ($currentYear - 1) . ' to ' . '31-12-' . ($currentYear - 1); + $q4 = '01-01-' . $currentYear . ' to ' . '31-03-' . $currentYear; + } + + $DateAndYears = [ + "CD" => $currentDate, + "CY" => $currentYear, + "FY" => $financialYear, + "AY" => $assessmentYear, + "Q1" => $q1, + "Q2" => $q2, + "Q3" => $q3, + "Q4" => $q4, + ]; + + return json_encode($DateAndYears); + } } diff --git a/app/Models/ClientDocsModel.php b/app/Models/ClientDocsModel.php index 5b9345f..27c3b69 100644 --- a/app/Models/ClientDocsModel.php +++ b/app/Models/ClientDocsModel.php @@ -41,7 +41,7 @@ class ClientDocsModel extends Model $this->join('template', 'template.template_id = client_docs.template_id','left'); $this->join('services', 'services.service_id = template.service_id','left'); $this->join('business', 'business.business_id = template.template_header_business','left'); - $this->where('client_docs.id', $doc_id); + $this->where('md5(client_docs.id)', $doc_id); return $this->get()->getRow(); diff --git a/public/assets/images/dox2apprv-fav.png b/public/assets/images/dox2apprv-fav.png new file mode 100644 index 0000000000000000000000000000000000000000..3c42f514a9bcf871b5bdff12725787e5d5e0c6bd GIT binary patch literal 20288 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 PE2e}rL|v~kaF6;I)&GVV literal 0 HcmV?d00001