diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 0f128f9..4a21b1c 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -158,6 +158,8 @@ $routes->group("/employee", ["filter" => "authMVC"], function ($routes) { $routes->post("test-rack-rate", "EmployeeController::testRackRate"); $routes->get('test_members_list', 'EmployeeController::test_members_list'); $routes->post('get_emp_history','EmployeeController::getEmpHistory'); + $routes->post('download_inception','EmployeeController::download_inception'); + $routes->get('download_file','EmployeeController::download_file'); }); diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 489ef96..f841d35 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -41,6 +41,10 @@ use CodeIgniter\API\ResponseTrait; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use PhpOffice\PhpSpreadsheet\Style\Alignment; +use PhpOffice\PhpSpreadsheet\Style\Fill; +use PhpOffice\PhpSpreadsheet\Style\Border; +use PhpOffice\PhpSpreadsheet\Cell\Coordinate; use Dompdf\Dompdf; use Dompdf\Options; @@ -2722,4 +2726,100 @@ class EmployeeController extends AdminController } + + +public function download_inception() +{ + $client = $this->request->getPost('client'); + $branch = $this->request->getPost('branch'); + $policies = $this->request->getPost('policies'); + $status = $this->request->getPost('status'); + $empCode = $this->request->getPost('empCode'); + $empName = $this->request->getPost('empName'); + + $result = $this->employeePolicyModel->download_inception( + $client, $branch, $policies, $status, $empCode, $empName + ); + + if (empty($result)) { + return $this->response->setStatusCode(204)->setBody('No data found'); + } + + $formatted = []; + foreach ($result as $index => $row) { + $rowWithSerial = ['S.NO' => $index + 1] + $row; + $formatted[] = $rowWithSerial; + } + $result = $formatted; + + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + + $headers = array_keys($result[0]); + $columnWidth = 20; // standard column width + + $colIndex = 1; + foreach ($headers as $header) { + $columnLetter = Coordinate::stringFromColumnIndex($colIndex); + $cellCoordinate = $columnLetter . '1'; + + $sheet->setCellValue($cellCoordinate, ucfirst(str_replace('_', ' ', $header))); + + $sheet->getColumnDimension($columnLetter)->setWidth($columnWidth); + + $style = $sheet->getStyle($cellCoordinate); + $style->getFont()->setBold(true); + $style->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $style->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN); + + $colIndex++; + } + + $rowNum = 2; + foreach ($result as $row) { + $colIndex = 1; + foreach ($row as $cell) { + $columnLetter = Coordinate::stringFromColumnIndex($colIndex); + $cellCoordinate = $columnLetter . $rowNum; + $sheet->setCellValue($cellCoordinate, $cell); + $colIndex++; + } + $rowNum++; + } + + + $exportDir = WRITEPATH . 'exports'; + if (!is_dir($exportDir)) { + mkdir($exportDir, 0777, true); + } else { + chmod($exportDir, 0777); + } + + $filename = 'inception_export_' . date('Ymd_His') . '.xlsx'; + $filepath = $exportDir . '/' . $filename; + + $writer = new Xlsx($spreadsheet); + $writer->save($filepath); + + return $this->response->setJSON([ + 'status' => 'success', + 'downloadUrl' => base_url('employee/download_file?file=' . urlencode($filename)) + ]); +} + + + public function download_file() + { + $filename = $this->request->getGet('file'); + $filepath = WRITEPATH . 'exports/' . $filename; + + if (!file_exists($filepath)) { + return $this->response->setStatusCode(404)->setBody('File not found.'); + } + + return $this->response->download($filepath, null)->setFileName($filename); + } + + + } diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php index ff80bc7..0ee72b6 100755 --- a/app/Models/EmployeePolicyModel.php +++ b/app/Models/EmployeePolicyModel.php @@ -1849,4 +1849,94 @@ class EmployeePolicyModel extends Model return $result[0]; } + + public function download_inception($client_id = 0, $branch_id = 0, $policy_id = 0, $status = [], $emp_code = "", $emp_name = ""){ + + $result = $this->select([ + + 'emp.emp_code AS `Emp ID`', + 'emp.name AS `Name of Emp/Dep`', + "DATE_FORMAT(emp.dob, '%d-%b-%Y') AS `DOB`", + 'emp.gender As `Gender`', + 'emp.relationship As `Relationship`', + + 'employee_polices.basic_cover_si As `Basic cover SI`', + + "DATE_FORMAT(emp.doj, '%d-%b-%Y') AS `DOJ`", + 'emp.basic_pay As `Basic Pay`', + 'emp.band As `Band/Grade`', + + 'emp.mobile as Phone', + 'emp.email_corporate As Email', + 'emp.change_event', + + 'employee_polices.pre_existing_alignments as `PRE EXISTING AILMENTS`', + 'employee_polices.date_of_exit', + 'employee_polices.reason_for_exit', + + 'emp.unit' + + ]) + ->join('employees emp', 'employee_polices.employee_id = emp.id') + ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') //cp - client policy + ->join('policies pm', 'cp.policy_id = pm.id', 'left') //pm - policy master + ->join('policy_type', 'policy_type.id = cp.policy_type_id') + ->join('insurers im', 'cp.insurer_id = im.id', 'left') //im - insurer master + ->join('insurer_branch ib', 'cp.insurer_branch_id = ib.id', 'left') //ib - insurer branch + ->join('tpa tpam', 'cp.tpa_id = tpam.id', 'left') //tpam - tpa master + ->join('tpa_branch tpab', 'cp.tpa_branch_id = tpab.id', 'left') //tpab - tpa branch + ->join('clients cm', 'cp.client_id = cm.id') //cm - client master + ->join('client_branch', 'emp.client_branch_id = client_branch.id') //cm - client master + ->orderBy('emp.emp_code', 'ASC') + ->orderBy('employee_polices.employee_id', 'ASC'); + + + // Conditionally add where clauses + if ($client_id != 0 && !empty(trim($client_id))) { + $result->where('emp.client_id', $client_id); + } + if ($branch_id != 0 && !empty(trim($branch_id))) { + $result->where('emp.client_branch_id', $branch_id); + } + if ($policy_id != 0 && !empty(trim($policy_id))) { + $result->where('employee_polices.client_policy_id', $policy_id); + } + + if (is_array($status) && count($status) > 0) { + + $result->where('employee_polices.status !=', 'expired'); + + if (in_array("active", $status)) { + + $result->where('employee_polices.tpa_id IS NOT NULL'); + $result->where('employee_polices.uhid IS NOT NULL'); + $result->whereIn('employee_polices.status', $status); + } elseif (in_array("pending", $status)) { + + $result->where('employee_polices.tpa_id IS NULL'); + $result->where('employee_polices.uhid IS NULL'); + $result->whereIn('employee_polices.status', array_merge($status, ['active'])); + } else { + + $result->whereIn('employee_polices.status', $status); + } + } + + if (!empty(trim($emp_code))) { + $result->where('emp.emp_code', $emp_code); + } + if (!empty(trim($emp_name))) { + $result->like('emp.name', $emp_name); + } + + // Always check these conditions + $result->where('employee_polices.is_active', 1) + ->where('emp.is_active', 1); + + $res = $result->findAll(); + + return $res; + } + + } \ No newline at end of file diff --git a/app/Views/employee_data_list.php b/app/Views/employee_data_list.php index b01fd75..292827e 100755 --- a/app/Views/employee_data_list.php +++ b/app/Views/employee_data_list.php @@ -75,6 +75,19 @@ border-radius: 5px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); } +.btn-inception { + background-color: #02a8b5; /* Bootstrap primary blue */ + color: white; + border: none; + padding: 6px 12px; + font-weight: 500; + border-radius: 4px; +} + +.btn-inception:hover { + background-color: #05676eff; +} + @@ -88,6 +101,7 @@

Employees

+ @@ -105,6 +119,8 @@ + + @@ -144,6 +160,8 @@ + + @@ -394,7 +412,8 @@ $(document).ready(function() { extend: 'csv', text: 'CSV', title: 'Member-List', - }, + } + , { extend: 'excelHtml5', text: 'Excel', @@ -428,6 +447,15 @@ $(document).ready(function() { }); } } + , + { + + text: 'Export As Inception', + className: 'btn-inception', + action: function (e, dt, node, config) { + downloadInception(); + } + } ], language: { search: "_INPUT_", @@ -779,4 +807,56 @@ function get_emp_history(input, emp_id) { // modalInstance.hide(); // } // } + +function downloadInception(){ + + let client = $('#clients').val(); + let branch = $('#branch_id').val(); + let policies = $('#policies').val(); + let status = $('#status2').val(); + let empCode = $('#emp_code').val(); + let empName = $('#emp_name').val(); + + $('.loader').fadeIn(); + $('.loader-mask').fadeIn(); + + $.ajax({ + type: 'POST', + url: "", + data: { + client: client, + branch: branch, + policies: policies, + status: status, + empCode: empCode, + empName: empName + }, + success: function(response) { + if (response.status === 'success') { + $('', { + href: response.downloadUrl, + download: '', + style: 'display:none' + }).appendTo('body')[0].click(); + } else { + alert(response.message || 'Download failed'); + } + }, + error: function(xhr, status, error) { + console.error('Error:', error); + }, + complete: function() { + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); + console.log('AJAX request finished.'); + } + }); + + + + + + +} + \ No newline at end of file diff --git a/app/Views/enrollment_dash.php b/app/Views/enrollment_dash.php index c6aa284..21469aa 100755 --- a/app/Views/enrollment_dash.php +++ b/app/Views/enrollment_dash.php @@ -1,4 +1,4 @@ -
+
@@ -6,20 +6,20 @@ style="padding: 0.5rem !important;background-color: white;">
-
-
-
-

Enrolled + style="color: black;font-size: 15px;">Enrolled
diff --git a/public/assets/images/action_on_policies_sb.png b/public/assets/images/action_on_policies_sb.png new file mode 100644 index 0000000..aa07ba5 Binary files /dev/null and b/public/assets/images/action_on_policies_sb.png differ diff --git a/public/assets/images/app_content_mng_sb.png b/public/assets/images/app_content_mng_sb.png new file mode 100644 index 0000000..d2b1372 Binary files /dev/null and b/public/assets/images/app_content_mng_sb.png differ diff --git a/public/assets/images/claims_sb.png b/public/assets/images/claims_sb.png new file mode 100644 index 0000000..e27eeaf Binary files /dev/null and b/public/assets/images/claims_sb.png differ diff --git a/public/assets/images/clients_sb.png b/public/assets/images/clients_sb.png new file mode 100644 index 0000000..1c1983e Binary files /dev/null and b/public/assets/images/clients_sb.png differ diff --git a/public/assets/images/leads_sb.png b/public/assets/images/leads_sb.png new file mode 100644 index 0000000..84c6d6f Binary files /dev/null and b/public/assets/images/leads_sb.png differ diff --git a/public/assets/images/masters_sb.png b/public/assets/images/masters_sb.png new file mode 100644 index 0000000..63e786f Binary files /dev/null and b/public/assets/images/masters_sb.png differ diff --git a/public/assets/images/policy_transactions_sb.png b/public/assets/images/policy_transactions_sb.png new file mode 100644 index 0000000..af24033 Binary files /dev/null and b/public/assets/images/policy_transactions_sb.png differ diff --git a/public/assets/images/user_manual_sb.png b/public/assets/images/user_manual_sb.png new file mode 100644 index 0000000..f36c9f4 Binary files /dev/null and b/public/assets/images/user_manual_sb.png differ
EMP Code Relationship GenderEmailMobile Date of Birth Policy name Insurer name -