diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 1461a8d5..2f5af3e2 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -17,7 +17,7 @@ $routes->get('/logout', 'LoginController::logout'); $routes->get('/oauth2callback', 'LoginController::receiveGoogleOAuthResponse'); $routes->get('/auth/google', 'LoginController::initiateGoogleOAuth'); $routes->get('/update-emp-policy-status', 'ClientController::updateEmpAndPolicyStatus'); -$routes->get('download-e-card/(:segment)/(:segment)', 'EmployeeController::generateIDCardForEmployee/$1/$2'); +$routes->get('download-e-card/(:segment)', 'EmployeeController::generateIDCardForEmployee/$1'); diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 80095b64..e2e50f9f 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -8,6 +8,7 @@ use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Helpers\DepositHelper; +use App\Helpers\MailHelper; use App\Models\EmployeeModel; @@ -644,7 +645,10 @@ class EmpDataServiceController extends BaseController ]; $this->cashDepositCalculationForInception($depositeData); - + + + $this->sendMailForDownloadingECard($empty_emp_tpa_uh_ids); + } @@ -1586,4 +1590,69 @@ class EmpDataServiceController extends BaseController return true; } + + + public function sendMailForDownloadingECard(array $ids) + { + try { + foreach ($ids as $key => $id) { + + $get_emp_email_and_other_details = $this->employeePolicyModel + ->select('employee_polices.client_policy_id, employees.emp_code, employees.email_corporate, employees.name, employee_polices.rand_string, employee_polices.tpa_id') + ->join('employees', 'employees.id = employee_polices.employee_id') + ->where('employees.emp_status', 'active') + ->where('employees.is_active', '1') + ->where('employee_polices.status', 'active') + ->where('employee_polices.is_active', '1') + ->where('employee_polices.id', $id)->first(); + + if ($get_emp_email_and_other_details != null && $get_emp_email_and_other_details != "") { + + $name = $get_emp_email_and_other_details['name']; + $email = $get_emp_email_and_other_details['email_corporate']; + $rand_string = $get_emp_email_and_other_details['rand_string']; + $tpa_id = $get_emp_email_and_other_details['tpa_id']; + $link = generate_download_link($rand_string); + $subject = 'Download E-Card'; + + $html = ' +

Dear ' .$name .',

+

Your Policy( ' .$tpa_id .' ) has been successfully created. Please click the link below to download the insurance card:

+

Download Insurance Card

+

Thank you,

+ '; + + + + if ($email != null && $email != "") { + + $mail_data = [ + 'mail' => $email, + 'subject' => $subject, + 'message' => $html + ]; + + // dd($mail_data); + + $result = Mailhelper::send_email($mail_data); + $decoded_result = (array) json_decode($result); + + $data = [ + 'status' => $decoded_result['status'], + 'message'=>$decoded_result['message'] ?? 'Internal Server Error', + 'email' => $decoded_result['data'] + ]; + + // dd($data); + $this->myLogger->logme('error', 'status : {status}, message : {message}, email : {email}', $data); + } + } + } + return true; // Email(s) sent successfully + } catch (\Exception $e) { + // Log the error + $this->myLogger->log('error', 'Error occurred while sending email: ' . $e->getMessage()); + return false; // Email(s) sending failed + } + } } diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index bfcc61d9..f5d79461 100644 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -249,13 +249,13 @@ class EmployeeController extends AdminController { $file_id = $this->request->uri->getSegment(3); $empServiceController = new EmployeeServiceController(); - $result['file_id'] = $file_id; // Render views and capture output $result = $empServiceController->getExcelErrorData($file_id); if ($result != 0) { + $result['file_id'] = $file_id; echo view('excel_errors', $result); } else if ($result == 0) { @@ -723,206 +723,170 @@ class EmployeeController extends AdminController } - public function downloadFullExcelErrorFile($file_id = 137, $rowIndex = 1, $colIndex = 1) + public function downloadFullExcelErrorFile($file_id, $rowIndex = 1, $colIndex = 1) { // Get file data from the database $file_data = $this->fileModel->find($file_id); - $error = json_decode($file_data['reason']); - // echo '
';
-        //    print_r($error); die;
-        //    dd($error);
-    
-        // Check if the file exists
-        if (!$file_data) {
-            $error_message = "File not found";
-            $this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
-            return $error_message;
-        }
-    
-        $fileName = $file_data['file_name'];
-        $filePath = WRITEPATH . '/uploads/excel/' . $fileName;
-    
-        // Check if the file exists
-        if (!file_exists($filePath)) {
-            $error_message = "File not found";
-            $this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
-            return $error_message;
-        }
-    
-        // Load the Excel file
-        $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath);
-        $sheet = $spreadsheet->getActiveSheet();
-
-        //  echo '
';
-
-        foreach ($error->error_data as $index => $error_data) {
-
-            $rowIndex = $index+1;
-
-            if( $error->error_type == 1 ){
-
-                foreach ($error_data as $key => $value) {
-               
-                    $colIndex = $value->col_idx+1;
-                    
-                    $originalValue = $sheet->getCell([$colIndex, $rowIndex])->getValue();
+        $error =  json_decode($file_data['reason']);
+            //    echo '
';
+            //    print_r($error); die;
+            //    dd($error);
         
-                    $newValue =  implode(', ',$value->error);
-                    $val = $originalValue . ' ( ' . $newValue . ' )';
-                    $sheet->setCellValue([$colIndex, $rowIndex],  $val);
-                
-                    $style = [
-                        'fill' => [
-                            'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
-                            'startColor' => ['rgb' => 'ffad99'] // Red color
-                        ]
-                    ];
-                    
-                    $sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
-    
-                }
-            }else if( $error->error_type == 2){
-
-
-                foreach ($error_data as $key => $value) {
-               
-                    
-                    $originalValue = $sheet->getCell([1, $rowIndex])->getValue();
-        
-                    $newValue =  implode(', ',$value->error);
-                    $val = $originalValue . ' ( ' . $newValue . ' )';
-                    $sheet->setCellValue([$colIndex, $rowIndex],  $val);
-                
-                    $style = [
-                        'fill' => [
-                            'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
-                            'startColor' => ['rgb' => 'ffad99'] // Red color
-                        ]
-                    ];
-                    $sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
-    
-                }
-
+            // Check if the file exists
+            if (!$file_data) {
+                $error_message = "File not found";
+                $this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
+                return $error_message;
             }
+        
+            $fileName = $file_data['file_name'];
+            $filePath = WRITEPATH . '/uploads/excel/' . $fileName;
+        
+            // Check if the file exists
+            if (!file_exists($filePath)) {
+                $error_message = "File not found";
+                $this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
+                return $error_message;
+            }
+        
+            // Load the Excel file
+            $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath);
+            $sheet = $spreadsheet->getActiveSheet();
 
-       }
-    
+            //  echo '
';
 
-    
-        // Create a new filename for the modified Excel file
-        $newFileName = 'modified_' . $fileName;
-    
-        // Save the modified Excel file to a new location
-        $newFilePath = WRITEPATH . '/uploads/excel/' . $newFileName;
-        $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
-        $writer->save($newFilePath);
-    
-        // Set headers to force download
-        $response = service('response');
-        $response->setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
-        $response->setHeader('Content-Disposition', 'attachment;filename="' . $newFileName . '"');
-        $response->setHeader('Cache-Control', 'max-age=0');
-        $response->setHeader('Content-Length', filesize($newFilePath));
-        $response->setBody(file_get_contents($newFilePath));
-    
-        // Delete the temporary file
-        unlink($newFilePath);
-    
-        // Return the response
-        return $response;
+            foreach ($error->error_data as $index => $error_data) {
+
+                $rowIndex = $index+1;
+
+                if( $error->error_type == 1 ){
+
+                    foreach ($error_data as $key => $value) {
+                
+                        $colIndex = $value->col_idx+1;
+                        
+                        $originalValue = $sheet->getCell([$colIndex, $rowIndex])->getValue();
+            
+                        $newValue =  implode(', ',$value->error);
+                        $val = $originalValue . ' ( ' . $newValue . ' )';
+                        $sheet->setCellValue([$colIndex, $rowIndex],  $val);
+                    
+                        $style = [
+                            'fill' => [
+                                'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
+                                'startColor' => ['rgb' => 'ffad99'] // Red color
+                            ]
+                        ];
+                        
+                        $sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
+        
+                    }
+                }else if( $error->error_type == 2){
+
+
+                    foreach ($error_data as $key => $value) {
+                
+                        
+                        $originalValue = $sheet->getCell([1, $rowIndex])->getValue();
+            
+                        $newValue =  implode(', ',$value->error);
+                        $val = $originalValue . ' ( ' . $newValue . ' )';
+                        $sheet->setCellValue([$colIndex, $rowIndex],  $val);
+                    
+                        $style = [
+                            'fill' => [
+                                'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
+                                'startColor' => ['rgb' => 'ffad99'] // Red color
+                            ]
+                        ];
+                        $sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
+        
+                    }
+
+                }
+
+        }
+        
+
+        
+            // Create a new filename for the modified Excel file
+            $newFileName = 'error_with_highlight_' . $fileName;
+        
+            // Save the modified Excel file to a new location
+            $newFilePath = WRITEPATH . '/uploads/excel/' . $newFileName;
+            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
+            $writer->save($newFilePath);
+        
+            // Set headers to force download
+            $response = service('response');
+            $response->setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+            $response->setHeader('Content-Disposition', 'attachment;filename="' . $newFileName . '"');
+            $response->setHeader('Cache-Control', 'max-age=0');
+            $response->setHeader('Content-Length', filesize($newFilePath));
+            $response->setBody(file_get_contents($newFilePath));
+        
+            // Delete the temporary file
+            unlink($newFilePath);
+        
+            // Return the response
+            return $response;
     }
-    
-    public function generateIDCardForEmployee($emp_code, $client_policy_id)
-    {   
-        $dompdf = new Dompdf();
+
+    public function generateIDCardForEmployee($rand_string)
+    {
+        $get_emp_code_and_client_policy_id = $this->employeePolicyModel
+            ->select('employee_polices.client_policy_id, employees.emp_code')
+            ->join('employees', 'employees.id = employee_polices.employee_id')
+            ->where('employees.emp_status', 'active')
+            ->where('employees.is_active', '1')
+            ->where('employee_polices.status', 'active')
+            ->where('employee_polices.is_active', '1')
+            ->where('employee_polices.rand_string', $rand_string)->first();
+
+        if($get_emp_code_and_client_policy_id == null || $get_emp_code_and_client_policy_id == ""){
+
+            $data['message'] = 'Record Not Found';
+            return view('errors/404', $data);
+
+        }
+
+        $client_policy_id = $get_emp_code_and_client_policy_id['client_policy_id'];
+        $emp_code = $get_emp_code_and_client_policy_id['emp_code'];
 
         $data['data'] = $this->employeePolicyModel->getECardDataUsingMd5($client_policy_id, $emp_code);
-        // $this->loadLayout('id_card_view', $data); exit;
-
+        // $this->loadLayout('id_card_view', $data);exit;
         $html =  view('id_card_view', $data);
-        // $html = str_replace('', '', $html);
 
+        $dompdf = new Dompdf();
         $dompdf->loadHtml($html);
-
-        // (Optional) Setup the paper size and orientation
         $dompdf->setPaper('A4', 'landscape');
-
-        // Render the HTML as PDF
         $dompdf->render();
 
-        // Output the generated PDF to Browser
-        $dompdf->stream();
-        
+        $filename = 'ECard.pdf'; // Default filename
+
+        foreach ($data['data'] as $key => $value) {
+
+            if ($value['relationship'] == "Self") {
+
+                $filename = $value['tpa_id']; // Update filename if relationship is "Self"
+
+            } elseif (!empty($value['tpa_id']) && $filename == 'ECard.pdf') {
+                
+                $filename = $value['tpa_id'];
+            }
+        }
+
+        $dompdf->stream($filename);
     }
 
     public function viewECard()
     {
-        $this->loadLayout('id_card_view');
+
+        $this->loadLayout('id_card_view');      
+
     }
     
-
-    public function truncateFileData() //truncateFileDataIn DB (de activate rows)
-    {
-         $file_id = $this->request->uri->getSegment(3);
-         // $file_id = 112;
-         $file = $this->fileModel->find($file_id);
-         // $file['action'] = 'si_enhancement';
-         // $result = [];
-         // !dd($file);
-         if($file['action'] == 'inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition')
-         {
-            $result = $this->employeeModel->getEmpListByFileId(file_id: $file_id,emp_status: ['active'],policy_status:['active']);
-            // ~dd($result);
-            if(count($result))
-           {
-            return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200);
-           }
-           else
-           {
-
-                //update emp and emp plocies
-                $db = db_connect();
-                $query = "UPDATE employees JOIN employee_polices ON employees.id = employee_polices.employee_id and employees.file_id = $file_id SET employees.emp_status = 'truncated', employee_polices.status = 'truncated', employees.is_active = 0,employee_polices.is_active = 0 WHERE employees.file_id = $file_id";
-                $db->query($query);
-                $affectedRows = $db->affectedRows();
-                // $affectedRows = 10;
-
-                //update file status
-                $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update();
-
-            return $this->respond(['dataStatus' => true,'code' => 200,'data' => round($affectedRows/2)], 200);
-           }
-         }
-         else if($file['action'] == 'si_enhancement' || $file['action'] == 'correction' || $file['action'] == 'deletion')
-         {
-            $res = $this->empEndorsementModel->select(['count(id) as count'])
-                                      ->where('emp_endorsement.file_id',$file_id)
-                                      ->groupStart()
-                                        ->where('emp_endorsement.endorsement_id is not null')
-                                        ->orwhereIn('emp_endorsement.status',['complete'])
-                                      ->groupEnd()
-                                       ->get()
-                                       ->getResult();
-            // print_r($this->empEndorsementModel->getLastQuery());
-             // echo $res[0]->count;die();
-            if($res[0]->count == 0)
-            {
-                //update truncated status to db
-                $this->empEndorsementModel->where('file_id',$file_id)
-                                      ->set(['status' => 'truncated'])
-                                      ->update();
-                //update file status
-                $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update();
-                return $this->respond(['dataStatus' => true,'code' => 200,'data' => 'success'], 200);
-            }
-            else
-            {
-                return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200);
-            }
-         }
-           
-    }
     
     
     
diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php
index 2ac23d6f..7e74234c 100644
--- a/app/Helpers/utility_helper.php
+++ b/app/Helpers/utility_helper.php
@@ -132,5 +132,41 @@ if(!function_exists('check_string_date'))
 
 
 
+if (!function_exists('generate_download_link')) {
+
+    function generate_download_link($rand_string) {
+       
+        // Generate the link using provided emp_code and client_policy_id
+        $link = htmlspecialchars(base_url('download-e-card/' . $rand_string));
+
+        // Return the link wrapped in anchor tag
+        // return 'Click To ';
+        return $link;
+    }
+}
+
+
+
+if (!function_exists('generate_random_alphanumeric')) {
+    function generate_random_alphanumeric($length = 6) {
+        $random_string = '';
+        for ($i = 0; $i < $length; $i++) {
+            $random_ascii = rand(0, 61);
+            if ($random_ascii < 10) {
+                $random_character = chr($random_ascii + 48);
+            } elseif ($random_ascii < 36) {
+                $random_character = chr($random_ascii + 55);
+            } else {
+                $random_character = chr($random_ascii + 61);
+            }
+            $random_string .= $random_character;
+        }
+        return $random_string;
+    }
+}
+
+
+
+
 
 
diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php
index 3198d873..1e67186f 100644
--- a/app/Models/EmployeePolicyModel.php
+++ b/app/Models/EmployeePolicyModel.php
@@ -30,12 +30,13 @@ class EmployeePolicyModel extends Model
         "created_by",
         "updated_by",
         "updated_at",
+        "rand_string",
         "is_active",
     ];
 
     // Callbacks
     protected $allowCallbacks       = true;
-    protected $beforeInsert         = ["checkAndADDCreatedByValue"];
+    protected $beforeInsert         = ["checkAndADDCreatedByValue", "addRandomNumberBeforeInsert"];
     protected $afterInsert          = [];
     protected $beforeUpdate         = ["checkAndUpdateUpdatedByValue"];
     protected $afterUpdate          = [];
@@ -66,6 +67,14 @@ class EmployeePolicyModel extends Model
         return $data;
     }
 
+    protected function addRandomNumberBeforeInsert(array $data)
+    {   
+        $random_number = generate_random_alphanumeric();
+        $data['data']['rand_string'] = $random_number;
+
+        return $data;
+    }
+
 // -----------------------------------------------------------------------------------------------------
    public function getEmployeePolicy($client_id,$policy_id,$status)
    {
@@ -175,66 +184,66 @@ class EmployeePolicyModel extends Model
     public function getCorrectionEmployeesDataForExportExcel($ref_data)
     {
 
-        $client_id = $ref_data['client_id'];
-        $client_policy_id = $ref_data['client_policy_id'];
-        $insurer_or_tpa = $ref_data['insurer_or_tpa'];
+            $client_id = $ref_data['client_id'];
+            $client_policy_id = $ref_data['client_policy_id'];
+            $insurer_or_tpa = $ref_data['insurer_or_tpa'];
 
-        $sql = "
-                SELECT DISTINCT
-                       emp_endorsement.id, 
-                       emp_endorsement.pk, 
-                       emp_endorsement.emp_code, 
-                       emp_endorsement.endorsement_id, 
-                       emp_endorsement.old_value, 
-                       emp_endorsement.new_value, 
-                       emp_endorsement.field_name, 
-                       emp_endorsement.remarks, 
-                       emp_endorsement.actions, 
-                       employees.id AS primaryKey, 
-                       employees.name AS emp_name, 
-                       employees.dob AS emp_dob, 
-                       employees.gender AS emp_gender, 
-                       employees.client_id AS emp_client_id, 
-                       'Has Define' AS emp_type,
-                       employee_polices.uhid,
-                       employees.relationship_code,
-                       batch_data.emp_policy_id, 
-                       batch_data.bl AS batch_list_batch_code, 
-                       batch_data.bf AS batch_files_batch_code
+            $sql = "
+                    SELECT DISTINCT
+                        emp_endorsement.id, 
+                        emp_endorsement.pk, 
+                        emp_endorsement.emp_code, 
+                        emp_endorsement.endorsement_id, 
+                        emp_endorsement.old_value, 
+                        emp_endorsement.new_value, 
+                        emp_endorsement.field_name, 
+                        emp_endorsement.remarks, 
+                        emp_endorsement.actions, 
+                        employees.id AS primaryKey, 
+                        employees.name AS emp_name, 
+                        employees.dob AS emp_dob, 
+                        employees.gender AS emp_gender, 
+                        employees.client_id AS emp_client_id, 
+                        'Has Define' AS emp_type,
+                        employee_polices.uhid,
+                        employees.relationship_code,
+                        batch_data.emp_policy_id, 
+                        batch_data.bl AS batch_list_batch_code, 
+                        batch_data.bf AS batch_files_batch_code
 
-                FROM 
-                    emp_endorsement
-                LEFT JOIN
-                    employees ON employees.id = emp_endorsement.pk
-                LEFT JOIN 
-                    employee_polices ON employees.id = employee_polices.employee_id
-                LEFT JOIN (
-                    SELECT batch_list.emp_policy_id, 
-                           batch_list.batch_code AS bl, 
-                           batch_files.batch_code AS bf 
                     FROM 
-                        batch_files 
+                        emp_endorsement
+                    LEFT JOIN
+                        employees ON employees.id = emp_endorsement.pk
                     LEFT JOIN 
-                        batch_list ON batch_files.batch_code = batch_list.batch_code 
-                    WHERE batch_files.event_type = 'correction' 
-                    AND batch_files.actions = 'export' 
-                    AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
-                ) AS batch_data ON emp_endorsement.pk = batch_data.emp_policy_id
+                        employee_polices ON employees.id = employee_polices.employee_id
+                    LEFT JOIN (
+                        SELECT batch_list.emp_policy_id, 
+                            batch_list.batch_code AS bl, 
+                            batch_files.batch_code AS bf 
+                        FROM 
+                            batch_files 
+                        LEFT JOIN 
+                            batch_list ON batch_files.batch_code = batch_list.batch_code 
+                        WHERE batch_files.event_type = 'correction' 
+                        AND batch_files.actions = 'export' 
+                        AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
+                    ) AS batch_data ON emp_endorsement.pk = batch_data.emp_policy_id
 
-                WHERE batch_data.bf IS NULL
-                AND batch_data.bl IS NULL
-                AND employees.client_id = '{$client_id}'
-                AND employee_polices.client_policy_id = '{$client_policy_id}'
-                AND emp_endorsement.actions = 'c'
-                AND (emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = '')";
+                    WHERE batch_data.bf IS NULL
+                    AND batch_data.bl IS NULL
+                    AND employees.client_id = '{$client_id}'
+                    AND employee_polices.client_policy_id = '{$client_policy_id}'
+                    AND emp_endorsement.actions = 'c'
+                    AND (emp_endorsement.endorsement_id IS NULL OR emp_endorsement.endorsement_id = '')";
 
-        // Execute the raw query
-        $query = $this->db->query($sql);
+                // Execute the raw query
+                $query = $this->db->query($sql);
 
-        // Get the result set
-        $result = $query->getResult();
+                // Get the result set
+                $result = $query->getResult();
 
-        return $result;
+                return $result;
 
     }
 
@@ -242,106 +251,106 @@ class EmployeePolicyModel extends Model
     public function getSIEnhancementEmployeesDataForExportExcel($ref_data)
     {
 
-        $client_id = $ref_data['client_id'];
-        $client_policy_id = $ref_data['client_policy_id'];
-        $insurer_or_tpa = $ref_data['insurer_or_tpa'];
+            $client_id = $ref_data['client_id'];
+            $client_policy_id = $ref_data['client_policy_id'];
+            $insurer_or_tpa = $ref_data['insurer_or_tpa'];
 
-        $query = $this->db->query("
-                SELECT 
-                    a.id as endorsement_primarykey,
-                    employee_polices.id AS primaryKey,
-                    employees.name AS emp_name,
-                    employees.emp_code AS emp_code,
-                    employees.dob AS emp_dob,
-                    employees.gender AS emp_gender,
-                    employees.relationship_code AS emp_relationship_code,
-                    'Has Define' AS emp_type,
-                    employee_polices.uhid AS risk_id,
-                    employee_polices.pre_existing_alignments,
-                    employee_polices.policy_end_date,
-                    employee_polices.basic_cover_si as old_basic_cover_si,
-                    employee_polices.rata_premimum as old_si_premium,                
-                    batch_data.emp_policy_id,
-                    batch_data.bl AS batch_list_batch_code,
-                    batch_data.bf AS batch_files_batch_code,
-                    sidata.new_basic_cover_si, 
-                    sidata.new_si_premium,
-                    sidata.date_of_coverage,
-                    DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1 AS no_of_days,
-                    sidata.new_si_premium - employee_polices.rata_premimum AS difference_premium,
-                    ROUND((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365, 2) AS pro_rata_premimum,
-                    ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS gst,
-                    ((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) + ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS total
-
-                FROM 
-                    emp_endorsement a
-                LEFT JOIN 
-                    employees ON employees.emp_code = a.emp_code
-                LEFT JOIN 
-                    employee_polices ON employees.id = employee_polices.employee_id 
-                LEFT JOIN (
+            $query = $this->db->query("
                     SELECT 
-                        aa.emp_code, 
-                        aa.new_value as 'new_basic_cover_si', 
-                        bb.new_value as 'new_si_premium', 
-                        cc.new_value as 'date_of_coverage' 
-                    FROM (
-                        SELECT  
-                            a1.emp_code, 
-                            a1.field_name, 
-                            a1.new_value 
-                        FROM 
-                            emp_endorsement as a1 
-                        WHERE 
-                            a1.field_name = 'basic_cover_si'
-                    ) aa 
-                    LEFT JOIN (
-                        SELECT  
-                            b1.emp_code, 
-                            b1.field_name, 
-                            b1.new_value 
-                        FROM 
-                            emp_endorsement as b1 
-                        WHERE 
-                            b1.field_name = 'premium'
-                    ) bb ON aa.emp_code = bb.emp_code 
-                    LEFT JOIN (
-                        SELECT  
-                            c1.emp_code, 
-                            c1.field_name, 
-                            c1.new_value 
-                        FROM 
-                            emp_endorsement as c1  
-                        WHERE 
-                            c1.field_name = 'si_enhancement_date'
-                    ) cc ON aa.emp_code = cc.emp_code
-                ) as sidata ON a.emp_code = sidata.emp_code 
-                LEFT JOIN (
-                    SELECT DISTINCT 
-                        batch_list.emp_policy_id, 
-                        batch_list.batch_code AS bl, 
-                        batch_files.batch_code AS bf 
-                    FROM 
-                        batch_files 
-                    LEFT JOIN 
-                        batch_list ON batch_files.batch_code = batch_list.batch_code 
-                    WHERE 
-                        batch_files.event_type = 'si_enhancement' 
-                        AND batch_files.actions = 'export' 
-                        AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
-                ) AS batch_data ON employee_polices.id = batch_data.emp_policy_id
-                WHERE 
-                    batch_data.bf IS NULL 
-                    AND batch_data.bl IS NULL 
-                    AND employee_polices.client_policy_id = '{$client_policy_id}'
-                    AND employee_polices.is_active = '1'
-                    AND (a.endorsement_id IS NULL OR a.endorsement_id = '') 
-                    AND a.field_name = 'si_enhancement_date'
-            ");
+                        a.id as endorsement_primarykey,
+                        employee_polices.id AS primaryKey,
+                        employees.name AS emp_name,
+                        employees.emp_code AS emp_code,
+                        employees.dob AS emp_dob,
+                        employees.gender AS emp_gender,
+                        employees.relationship_code AS emp_relationship_code,
+                        'Has Define' AS emp_type,
+                        employee_polices.uhid AS risk_id,
+                        employee_polices.pre_existing_alignments,
+                        employee_polices.policy_end_date,
+                        employee_polices.basic_cover_si as old_basic_cover_si,
+                        employee_polices.rata_premimum as old_si_premium,                
+                        batch_data.emp_policy_id,
+                        batch_data.bl AS batch_list_batch_code,
+                        batch_data.bf AS batch_files_batch_code,
+                        sidata.new_basic_cover_si, 
+                        sidata.new_si_premium,
+                        sidata.date_of_coverage,
+                        DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1 AS no_of_days,
+                        sidata.new_si_premium - employee_polices.rata_premimum AS difference_premium,
+                        ROUND((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365, 2) AS pro_rata_premimum,
+                        ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS gst,
+                        ((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) + ROUND(((sidata.new_si_premium - employee_polices.rata_premimum) * (DATEDIFF(employee_polices.policy_end_date, sidata.date_of_coverage) + 1) / 365) * 0.18, 2) AS total
 
-            // Get the result set
-            $results = $query->getResult();
-            return $results;
+                    FROM 
+                        emp_endorsement a
+                    LEFT JOIN 
+                        employees ON employees.emp_code = a.emp_code
+                    LEFT JOIN 
+                        employee_polices ON employees.id = employee_polices.employee_id 
+                    LEFT JOIN (
+                        SELECT 
+                            aa.emp_code, 
+                            aa.new_value as 'new_basic_cover_si', 
+                            bb.new_value as 'new_si_premium', 
+                            cc.new_value as 'date_of_coverage' 
+                        FROM (
+                            SELECT  
+                                a1.emp_code, 
+                                a1.field_name, 
+                                a1.new_value 
+                            FROM 
+                                emp_endorsement as a1 
+                            WHERE 
+                                a1.field_name = 'basic_cover_si'
+                        ) aa 
+                        LEFT JOIN (
+                            SELECT  
+                                b1.emp_code, 
+                                b1.field_name, 
+                                b1.new_value 
+                            FROM 
+                                emp_endorsement as b1 
+                            WHERE 
+                                b1.field_name = 'premium'
+                        ) bb ON aa.emp_code = bb.emp_code 
+                        LEFT JOIN (
+                            SELECT  
+                                c1.emp_code, 
+                                c1.field_name, 
+                                c1.new_value 
+                            FROM 
+                                emp_endorsement as c1  
+                            WHERE 
+                                c1.field_name = 'si_enhancement_date'
+                        ) cc ON aa.emp_code = cc.emp_code
+                    ) as sidata ON a.emp_code = sidata.emp_code 
+                    LEFT JOIN (
+                        SELECT DISTINCT 
+                            batch_list.emp_policy_id, 
+                            batch_list.batch_code AS bl, 
+                            batch_files.batch_code AS bf 
+                        FROM 
+                            batch_files 
+                        LEFT JOIN 
+                            batch_list ON batch_files.batch_code = batch_list.batch_code 
+                        WHERE 
+                            batch_files.event_type = 'si_enhancement' 
+                            AND batch_files.actions = 'export' 
+                            AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
+                    ) AS batch_data ON employee_polices.id = batch_data.emp_policy_id
+                    WHERE 
+                        batch_data.bf IS NULL 
+                        AND batch_data.bl IS NULL 
+                        AND employee_polices.client_policy_id = '{$client_policy_id}'
+                        AND employee_polices.is_active = '1'
+                        AND (a.endorsement_id IS NULL OR a.endorsement_id = '') 
+                        AND a.field_name = 'si_enhancement_date'
+                ");
+
+                // Get the result set
+                $results = $query->getResult();
+                return $results;
 
     }
 
@@ -737,12 +746,14 @@ class EmployeePolicyModel extends Model
         ->where('e.is_active', '1')
         ->where('ep.status', 'active')
         ->where('ep.is_active', '1')
-        ->where('MD5(e.emp_code)', $emp_code)
-        ->where('MD5(ep.client_policy_id)', $client_policy_id)
+        ->where('e.emp_code', $emp_code)
+        ->where('ep.client_policy_id', $client_policy_id)
         ->get()
         ->getResultArray();
     
        return $result;
     }
     
+
+
 }
\ No newline at end of file
diff --git a/app/Views/id_card_view.php b/app/Views/id_card_view.php
index b646bb87..7c781b31 100644
--- a/app/Views/id_card_view.php
+++ b/app/Views/id_card_view.php
@@ -2,9 +2,15 @@
 
 
 
-    
-    
-    Driving License ID Card
+        
+        NHANCE
+        
+        
+        
+        
+        
+        
+        /assets/images/Nhance_Favi.svg">
 
 
 
@@ -66,15 +72,11 @@
                 
             
         
+        
- - button - - \ No newline at end of file