diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index e5c6a9ab..2770ea29 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -87,22 +87,31 @@ class EmployeeController extends AdminController { // $model = new UserModel(); $data = []; - $data['status'] = ['draft' => 'Draft', 'active' => 'Active', 'inactive' => 'In-Active', 'pending' => 'Pending']; + $data['status'] = ['draft' => 'Draft', 'enrolled' => 'Enrolled', 'active' => 'Active', 'inactive' => 'In-Active', 'pending' => 'Pending']; + if (count($this->request->getGet())) { $filterData = $this->request->getGet(); + + // Convert the status field to an array if it exists in the request data + if (isset($filterData['status'])) { + $filterData['status'] = explode(",", $filterData['status']); + } + + // Fetch employees with the modified $filterData array $data['employees'] = $this->employeePolicyModel->getEmployeePolicy( - client_id: $filterData['client_id'], - policy_id: $filterData['policy_id'], - branch_id: $filterData['branch_id'], - emp_code : $filterData['emp_code'], - emp_name : $filterData['emp_name'], - status : $filterData['status'], + client_id: $filterData['client_id'] ?? null, + policy_id: $filterData['policy_id'] ?? null, + branch_id: $filterData['branch_id'] ?? null, + emp_code : $filterData['emp_code'] ?? null, + emp_name : $filterData['emp_name'] ?? null, + status : $filterData['status'] ?? [], ); - // dd($this->employeePolicyModel->getLastQuery()); - + + // Set getData in $data array with the processed $filterData $data['getData'] = $filterData; } - + + // dd($this->employeeModel->getLastQuery()); // dd( $data['getData']); // dd($this->request->getGet()); diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 2d4a68ef..9d2c246c 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -500,26 +500,31 @@ class LeadsController extends BaseController $rowNumber++; } - + // Leave two blank rows $rowNumber += 2; - + // Set headers and subheaders starting from current row $headers = $data['table_data']['headers']; $subHeaderRow = $rowNumber + 1; $columnLetter = 'A'; - - // Add headers in the first row and subheaders in the second row + + // Set column width and apply word wrap to headers and subheaders foreach ($headers as $header) { if ($header['parentHeader'] === 'Item Key' || $header['parentHeader'] == 'Action') { continue; // Skip "Item Key" and "Action" columns } - - if($header['parentHeader'] === 'Sno'){ + + if ($header['parentHeader'] === 'Sno') { $header['parentHeader'] = 'S.No.'; } - + + // Set the header cell value $sheet->setCellValue("{$columnLetter}{$rowNumber}", $header['parentHeader']); + + // Set column width for header + $sheet->getColumnDimension($columnLetter)->setWidth(20); // Adjust width as needed + $sheet->getStyle("{$columnLetter}{$rowNumber}")->getAlignment()->setWrapText(true); // Apply bold style to the header $sheet->getStyle("{$columnLetter}{$rowNumber}")->applyFromArray([ @@ -528,9 +533,13 @@ class LeadsController extends BaseController ], ]); + // Add subheaders in the second row foreach ($header['subHeaders'] as $subHeader) { $sheet->setCellValue("{$columnLetter}{$subHeaderRow}", $subHeader); + // Enable word wrap for subheaders + $sheet->getStyle("{$columnLetter}{$subHeaderRow}")->getAlignment()->setWrapText(true); + // Apply bold style to the subheader $sheet->getStyle("{$columnLetter}{$subHeaderRow}")->applyFromArray([ 'font' => [ @@ -541,11 +550,11 @@ class LeadsController extends BaseController $columnLetter++; } } - + // Move to next row for data entries $rowNumber = $subHeaderRow + 1; - - // Add data rows + + // Add data rows and enable word wrap for data cells foreach ($data['table_data']['data'] as $dataRow) { $columnLetter = 'A'; foreach ($dataRow['data'] as $cellData) { @@ -553,11 +562,20 @@ class LeadsController extends BaseController continue; // Skip "Item Key" data } $sheet->setCellValue("{$columnLetter}{$rowNumber}", $cellData['value']); + + // Enable word wrap for data cells + $sheet->getStyle("{$columnLetter}{$rowNumber}")->getAlignment()->setWrapText(true); + $columnLetter++; } $rowNumber++; } - + + // Auto-size all columns after data is entered + foreach ($sheet->getColumnIterator() as $column) { + $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true); + } + // Set filename based on type $string = ($type == 2) ? 'QCR' : 'RFQ'; $filename = $string . '_' . $rfq_data['client_short_name'] . '_' . $rfq_data['policy_type'] . '_' . date('Ymdhis') . '.xlsx'; @@ -586,7 +604,8 @@ class LeadsController extends BaseController $recipient_type = $params['recipient_type'];//insurer or client $recipient_mail = $params['recipient_mail'];// - only primary key of contacts $recipient_mail = json_decode($params['recipient_mail'], true);;// - only primary key of contacts - $cc = 'velz1990@gmail.com,vitvelz@gmail.com'; + // $cc = 'velz1990@gmail.com,vitvelz@gmail.com'; + $cc = ""; $result_data = []; // dd($recipient_mail); diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php index 5eabd0bb..00dff6ca 100755 --- a/app/Models/EmployeePolicyModel.php +++ b/app/Models/EmployeePolicyModel.php @@ -78,6 +78,7 @@ class EmployeePolicyModel extends Model // ---------------------------------------------------------------------------------------------------------- public function getEmployeePolicy($client_id = 0, $policy_id=0, $status=0, $branch_id=0, $emp_code="", $emp_name="") { + // dd($status); $result = $this->select([ 'employee_polices.*', @@ -132,17 +133,39 @@ class EmployeePolicyModel extends Model if ($policy_id !=0 && !empty($policy_id)) { $result->where('employee_polices.client_policy_id', $policy_id); } - if ($status !=0 && !empty($status)) { - if($status == 'active'){ + + 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'); - }else if($status == 'pending'){ - $status = 'active'; - $result->where('employee_polices.status', $status); - }else{ - $result->where('employee_polices.status', $status); + $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($status == 'active'){ + // $result->where('employee_polices.tpa_id IS NOT NULL'); + // $result->where('employee_polices.uhid IS NOT NULL'); + // }else if($status == 'pending'){ + // $status = 'active'; + // $result->where('employee_polices.status', $status); + // }else{ + // $result->where('employee_polices.status', $status); + // } } + if (!empty($emp_code)) { $result->where('emp.emp_code', $emp_code); } diff --git a/app/Views/employee_list.php b/app/Views/employee_list.php index fed29d5d..b6d77d34 100755 --- a/app/Views/employee_list.php +++ b/app/Views/employee_list.php @@ -7,6 +7,17 @@ table.dataTable tbody td { padding: 4px 4px !important; } + +.select2-selection__choice { + background-color: #0a8794 !important; + color: white !important; + font-weight: bold; +} + +.select2-selection__choice__remove { + color: white !important; + margin-right: 5px; +}
@@ -48,17 +59,22 @@ table.dataTable tbody td {

- $value) { ?>
+

@@ -106,6 +122,13 @@ $(document).ready(function() { $("#policies").select2(); $("#branch_id").select2(); + $("#status2").select2({ + placeholder : 'Select Status' + }); + + $("textarea.select2-search__field").attr('rows', '1'); + $("textarea.select2-search__field").css('resize', 'none'); + // if ($('.select2-selection__arrow').length > 0) { // $('.select2-selection__arrow').removeClass('select2-selection__arrow').addClass('fa fa-chevron-down'); // } @@ -119,11 +142,22 @@ var clientPoliciesWithBranch = { var client_id = ''; var client_branch_id = ''; +var statusData = ; + +$(document).ready(function() { + // Loop through each item in statusData and set the option as selected. + statusData.forEach(function(status) { + $('#status2 option[value="' + status + '"]').prop('selected', true); + }); + + // Refresh the select element (necessary if you are using a plugin like Select2). + $('#status2').trigger('change'); +}); + $(document).ready(function() { console.log("document loaded"); //fetchClientPolicies(); - }); $(window).on("load", function() { @@ -330,6 +364,11 @@ function fetchEmpolyeeList(event) { var emp_code = $('#emp_code').val(); var emp_name = $('#emp_name').val(); + var statusArray = []; + $('#status2 option:selected').each(function() { + statusArray.push($(this).val()); + }); + // console.log(client_id + '-' + policy_id); // if (client_id == '0' || policy_id == '0') { // alert('Please select values in both dropdowns.'); @@ -343,7 +382,7 @@ function fetchEmpolyeeList(event) { branch_id: branch_id, emp_code : emp_code, emp_name : emp_name, - status : status, + status : statusArray, }; const queryString = objectToQueryString(queryParams); diff --git a/app/Views/view_rfq.php b/app/Views/view_rfq.php index 95b5297e..65f88a5f 100644 --- a/app/Views/view_rfq.php +++ b/app/Views/view_rfq.php @@ -216,6 +216,7 @@ body { +
@@ -765,6 +766,7 @@ function moveAddRowButton() { // Event listener to handle row removal rfqTable.addEventListener('click', function(e) { + if (e.target.classList.contains('removeRow')) { const row = e.target.closest('tr'); // Get the row to be removed const rowKey = row.getAttribute('id'); @@ -778,6 +780,7 @@ rfqTable.addEventListener('click', function(e) { moveAddRowButton(); // Move the add row button to the last row realignSpecialConditions(); } + }); // Function to add new columns @@ -1670,8 +1673,16 @@ function changeInsurer(event) { function changeState(event) { - var type = event.target.className; - console.log(type); + let type = event.target.className; + console.log('1 : ', type); + + // if (type.includes('sendClientProposal') && type.includes('fa fa-check-square')) { + // type = 'sendClientProposal'; + // } else if (type.includes('qcrProposal') && type.includes('fa fa-check-square')) { + // type = 'qcrProposal'; + // } + + // console.log('2 : ',type); if (['qcrProposal', 'sendClientProposal'].includes(type)) { @@ -2175,6 +2186,7 @@ function showModal(){ } function ajaxRequestForGetMailData(url){ + $.ajax({ url: url, type: "GET", @@ -2212,7 +2224,7 @@ function appendInput(data) { if (!data.contact_person_email) { html += ` `; } @@ -2282,36 +2294,49 @@ function constructURL() { } function ajaxRequest(url){ + console.log(url); + + $('.loader').fadeIn(); + $('.loader-mask').fadeIn(); + $.ajax({ - url: url, - type: "GET", - dataType: 'json', - success: function (res) { + url: url, + type: "GET", + dataType: 'json', + success: function (res) { - console.log(res); - if(res.status == 'success' && res.code == 200){ - toastr.success('Mail send Successfully', 'SUCCESS') + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); + + console.log(res); + if(res.status == 'success' && res.code == 200){ + toastr.success('Mail send Successfully', 'SUCCESS') + }else{ + if(res.messgae){ + toastr.error(res.messgae, 'ERROR') }else{ - if(res.messgae){ - toastr.error(res.messgae, 'ERROR') - }else{ - toastr.error('Mail send failed', 'ERROR') - } + toastr.error('Mail send failed', 'ERROR') } + } - $('.close').click() - }, - error: function (xhr, status, error) { - console.error(xhr.responseText); - console.error(status, error); - } + $('.close').click() + }, + error: function (xhr, status, error) { + + $('.loader').fadeOut(); + $('.loader-mask').delay(350).fadeOut('slow'); + + console.error(xhr.responseText); + console.error(status, error); + } }); } //-------------------------------------------------------------------------------------------------------------------------------------------- +// not in use do not remove this function function tableToJson() { const headers = []; @@ -2522,14 +2547,14 @@ function jsonToTable(json) { proposel_count++; // Extract qcr and stc status for the main headers - const dropdown_data_qcr = proposels[header.parentHeader]?.qcr === 1 ? + const dropdown_data_qcr = proposels[header.parentHeader]?.qcr == 1 ? 'style="background-color: rgb(221, 221, 221);"' : ''; - const dropdown_data_stc = proposels[header.parentHeader]?.stc === 1 ? + const dropdown_data_stc = proposels[header.parentHeader]?.stc == 1 ? 'style="background-color: rgb(221, 221, 221);"' : ''; - const check_icon_qcr = proposels[header.parentHeader]?.qcr === 1 ? + const check_icon_qcr = proposels[header.parentHeader]?.qcr == 1 ? `` : ''; - const check_icon_stc = proposels[header.parentHeader]?.stc === 1 ? + const check_icon_stc = proposels[header.parentHeader]?.stc == 1 ? `` : ''; @@ -2539,7 +2564,7 @@ function jsonToTable(json) { `; @@ -2603,15 +2628,15 @@ function jsonToTable(json) { const insurerData = proposels[header.parentHeader]?.insurers[index - 1] || {}; - dropdownDataQCRForInsurer = insurerData.qcr === 1 ? + dropdownDataQCRForInsurer = insurerData.qcr == 1 ? 'style="background-color: rgb(221, 221, 221);"' : ''; - dropdownDataSTCForInsurer = insurerData.stc === 1 ? + dropdownDataSTCForInsurer = insurerData.stc == 1 ? 'style="background-color: rgb(221, 221, 221);"' : ''; - checkDropdownDataQCRForInsurer = insurerData.qcr === 1 ? + checkDropdownDataQCRForInsurer = insurerData.qcr == 1 ? `` : ''; - checkDropdownDataSTCForInsurer = insurerData.stc === 1 ? + checkDropdownDataSTCForInsurer = insurerData.stc == 1 ? `` : ''; @@ -2814,57 +2839,72 @@ function jsonToTable(json) { console.log(over_all_column_data); - try { + let qcr_count = $('#qcr_count').val() + let lead_id = $('#lead_id').val() - $('.loader').fadeIn(); - $('.loader-mask').fadeIn(); + if(qcr_count != 0){ - const jsonData = await convertJsonForQCR(); // Construct the JSON data + console.log('qcr found') - // Create a FormData object - const formData = new FormData(); + url = '' + lead_id + '/' + 2; + window.location.href = url; - let lead_id = $('#lead_id').val(); + }else{ - formData.append('json', JSON.stringify(jsonData)); - formData.append('lead_id', lead_id); + console.log('qcr not found') - const postUrl = ''; - console.log(postUrl); + try { - const response = await $.ajax({ - url: postUrl, - type: 'POST', - data: formData, - processData: false, // Important to prevent jQuery from processing the data - contentType: false, // Important to set this to false to let jQuery set the content type correctly - }); + $('.loader').fadeIn(); + $('.loader-mask').fadeIn(); - console.log('Data sent successfully:', response); - if(response.status == true){ - toastr.success(response.message, 'SUCCESS'); - }else{ - toastr.warning(response.message, 'WARNING'); - } + const jsonData = await convertJsonForQCR(); // Construct the JSON data - window.location.href = '' + lead_id + '/' + 2; + // Create a FormData object + const formData = new FormData(); - } catch (error) { - console.error('An error occurred during the AJAX request:'); - - if (error.responseText) { - try { - const errorResponse = JSON.parse(error.responseText); - console.error('Server Response:', errorResponse); - } catch (parseError) { - console.error('Error Message:', error.message); - console.error('Could not parse error response:', error.responseText); + let lead_id = $('#lead_id').val(); + + formData.append('json', JSON.stringify(jsonData)); + formData.append('lead_id', lead_id); + + const postUrl = ''; + console.log(postUrl); + + const response = await $.ajax({ + url: postUrl, + type: 'POST', + data: formData, + processData: false, // Important to prevent jQuery from processing the data + contentType: false, // Important to set this to false to let jQuery set the content type correctly + }); + + console.log('Data sent successfully:', response); + if(response.status == true){ + toastr.success(response.message, 'SUCCESS'); + }else{ + toastr.warning(response.message, 'WARNING'); } - } else { - console.error('Error Message:', error.message); - } - console.error('Full Error Object:', error); + window.location.href = '' + lead_id + '/' + 2; + + } catch (error) { + console.error('An error occurred during the AJAX request:'); + + if (error.responseText) { + try { + const errorResponse = JSON.parse(error.responseText); + console.error('Server Response:', errorResponse); + } catch (parseError) { + console.error('Error Message:', error.message); + console.error('Could not parse error response:', error.responseText); + } + } else { + console.error('Error Message:', error.message); + } + + console.error('Full Error Object:', error); + } } }); }); @@ -2882,15 +2922,21 @@ function jsonToTable(json) { let headerIndex = 0; parentHeaders.forEach((header) => { + + console.log('header names', header); + console.log('header header.innerText', header.innerText); + const colspan = header.getAttribute('colspan') || 1; const subHeaderArray = []; for (let i = 0; i < colspan; i++) { - subHeaderArray.push(subHeaders[headerIndex].innerText.replace('⋮', '').trim()); + const cleanedText = subHeaders[headerIndex].innerText.split('⋮')[0].trim(); + subHeaderArray.push(cleanedText); headerIndex++; } + headers.push({ - parentHeader: header.innerText.replace('⋮', '').trim(), + parentHeader: header.innerText.split('⋮')[0].trim(), subHeaders: subHeaderArray }); });