Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev
This commit is contained in:
commit
9d5dbbcfb7
@ -386,6 +386,8 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
|
|||||||
$routes->get('getClaimDumpFileErrorData', 'TicketController::getClaimDumpFileErrorData');
|
$routes->get('getClaimDumpFileErrorData', 'TicketController::getClaimDumpFileErrorData');
|
||||||
$routes->get("claim_dump_excel_error/(:any)", "TicketController::getClaimDumpExcelFileErrors/$1");
|
$routes->get("claim_dump_excel_error/(:any)", "TicketController::getClaimDumpExcelFileErrors/$1");
|
||||||
$routes->get("download_claim_dump_file/(:any)", "TicketController::downloadClaimDumpFile/$1");
|
$routes->get("download_claim_dump_file/(:any)", "TicketController::downloadClaimDumpFile/$1");
|
||||||
|
$routes->post('uploadMultiFileFromRfq', 'LeadsController::uploadMultiFileFromRfq');
|
||||||
|
$routes->get('downloadMemberFile/(:any)', 'LeadsController::downloadMemberFile/$1');
|
||||||
});
|
});
|
||||||
|
|
||||||
$routes->post("policy_tranction/sendInstallmentRemainderMail","PolicyTransactionController::sendInstallmentRemainderMail");
|
$routes->post("policy_tranction/sendInstallmentRemainderMail","PolicyTransactionController::sendInstallmentRemainderMail");
|
||||||
@ -695,6 +697,9 @@ $routes->group('test', function($routes) {
|
|||||||
$routes->get('viewPDF', 'TestingController::viewPDF');
|
$routes->get('viewPDF', 'TestingController::viewPDF');
|
||||||
$routes->get('generate-pdf-view', 'TestingController::generatePDFWithView');
|
$routes->get('generate-pdf-view', 'TestingController::generatePDFWithView');
|
||||||
$routes->get('param/(:any)', 'TestingController::ptedfitdata/$1');
|
$routes->get('param/(:any)', 'TestingController::ptedfitdata/$1');
|
||||||
|
$routes->get('viewrfq', 'TestingController::viewRFQNonEb');
|
||||||
|
$routes->get('exportexcel', 'TestingController::exportExcel');
|
||||||
|
$routes->post('saverfq', 'TestingController::saverfq');
|
||||||
});
|
});
|
||||||
$routes->cli('cli/testcli', 'TestingController::testcli');
|
$routes->cli('cli/testcli', 'TestingController::testcli');
|
||||||
|
|
||||||
|
|||||||
@ -4564,11 +4564,11 @@ class ClientController extends AdminController
|
|||||||
// Additional logic for non-individual clients (client_type != 2)
|
// Additional logic for non-individual clients (client_type != 2)
|
||||||
$branch_insert = null;
|
$branch_insert = null;
|
||||||
if ($client_type != 2) {
|
if ($client_type != 2) {
|
||||||
$unit[] = $postData['short_name'] . '-' . 001;
|
$unit[] = $postData['short_name'] . '-' . $postData['branch_code'] ?? 001;
|
||||||
$branch_data = [
|
$branch_data = [
|
||||||
'client_id' => $client_insert,
|
'client_id' => $client_insert,
|
||||||
'branch_name' => $postData['branch_name'],
|
'branch_name' => $postData['branch_name'],
|
||||||
'branch_code' => 001,
|
'branch_code' => $postData['branch_code'] ?? 001,
|
||||||
'gst' => $postData['gst'],
|
'gst' => $postData['gst'],
|
||||||
'units' => json_encode($unit) ?? null,
|
'units' => json_encode($unit) ?? null,
|
||||||
];
|
];
|
||||||
@ -4580,6 +4580,7 @@ class ClientController extends AdminController
|
|||||||
'contact_type' => 'client',
|
'contact_type' => 'client',
|
||||||
'name' => $postData['name'],
|
'name' => $postData['name'],
|
||||||
'email' => $postData['email'],
|
'email' => $postData['email'],
|
||||||
|
'mobile' => $postData['mobile'] ?? null,
|
||||||
];
|
];
|
||||||
$this->levelContactModel->insert($contact_data);
|
$this->levelContactModel->insert($contact_data);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -529,7 +529,7 @@ class LeadsController extends BaseController
|
|||||||
return $this->respond(['status' => false, 'lead_id' => $id, 'message' => "Failed to update Lead", 'data' => $data], 200);
|
return $this->respond(['status' => false, 'lead_id' => $id, 'message' => "Failed to update Lead", 'data' => $data], 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the Single Lead data for edit uisng ajax ( do not delete)
|
// Get the Single Lead data for edit uisng ajax (do not delete)
|
||||||
public function getLeadDataForEdit($id)
|
public function getLeadDataForEdit($id)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -697,38 +697,172 @@ class LeadsController extends BaseController
|
|||||||
|
|
||||||
//--------RFQ-----------------------------------------------------------------------------------------------
|
//--------RFQ-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// public function viewRFQ($id, $type = 1)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// $data['rfq_data'] = $this->RFQModel
|
||||||
|
// ->where('lead_id', $id)
|
||||||
|
// // ->where('type', $type)
|
||||||
|
// ->where('is_active', 1)
|
||||||
|
// ->orderBy('id', 'desc')
|
||||||
|
// ->first();
|
||||||
|
// // dd($data);
|
||||||
|
|
||||||
|
// $data['rfq_count'] = $this->RFQModel
|
||||||
|
// ->where('lead_id', $id)
|
||||||
|
// // ->where('type', 1)
|
||||||
|
// ->where('is_active', 1)
|
||||||
|
// ->countAllResults();
|
||||||
|
|
||||||
|
// $data['qcr_count'] = $this->RFQModel
|
||||||
|
// ->where('lead_id', $id)
|
||||||
|
// ->where('type', 2)
|
||||||
|
// ->where('is_active', 1)
|
||||||
|
// ->countAllResults();
|
||||||
|
|
||||||
|
// // dd(count($data['rfq_data']));
|
||||||
|
|
||||||
|
// $data['lead_id'] = $id;
|
||||||
|
// $lead_data = $this->leadsModel
|
||||||
|
// ->select('
|
||||||
|
// leads.*,
|
||||||
|
// policy_type.question_json,
|
||||||
|
// policy_type.policy_type,
|
||||||
|
// policy_type.long_name,
|
||||||
|
// user_profiles.email as created_person_email
|
||||||
|
// ')
|
||||||
|
// ->join('policy_type', 'leads.policy_type_id = policy_type.id')
|
||||||
|
// ->join('user_profiles', 'leads.created_by = user_profiles.id', 'left')
|
||||||
|
// ->where('leads.id', $id)
|
||||||
|
// ->where('leads.is_active', 1)
|
||||||
|
// ->first();
|
||||||
|
|
||||||
|
// // dd($lead_data);
|
||||||
|
|
||||||
|
// if ($lead_data['lead_type'] != 1) {
|
||||||
|
// $client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $lead_data['source_policy_id'])->first();
|
||||||
|
// if (isset($client_policy_data)) {
|
||||||
|
// $data['policy_terms'] = $client_policy_data['policy_terms'];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// $data['question_json'] = $lead_data['question_json'];
|
||||||
|
// $data['page_name'] = $type == 2 ? 'QCR' : 'RFQ';
|
||||||
|
// $data['insurer'] = $this->insurerBranchModel->getInsurerBranchesWithInsurerNames();
|
||||||
|
// $data['userList'] = $this->userModel->getUserListForRFQ();
|
||||||
|
// $data['exclusiveUserList'] = $this->userModel->getexclusiveUserListForRFQ();
|
||||||
|
// $data['lead_data'] = $lead_data;
|
||||||
|
// $data['tpa_list'] = $this->tpaBranchModel->getTpaBranchesWithTpaNames();
|
||||||
|
// $data['account_manager'] = $this->userModel->where('is_active', 1)->where('role', 3)->findAll();
|
||||||
|
|
||||||
|
|
||||||
|
// $mail_content = '
|
||||||
|
// <p>Dear Sir,</p>
|
||||||
|
// <p>Greetings From Nhance India!</p>
|
||||||
|
// <p>Please find attached the {{RFQ_OR_QCR}} for <strong>{{POLICY_TYPE}}</strong> policy pertaining to <strong>{{CLIENT_NAME}}</strong>.</p>
|
||||||
|
// <p>Kindly request you to share the competitive quotes at the earliest.</p>
|
||||||
|
// <p>In case of any query, please feel free to contact us.</p>
|
||||||
|
// <p>Thank You!</p><br>
|
||||||
|
// <p>Best regards,</p>
|
||||||
|
|
||||||
|
// <div style=\"margin: 0; padding: 0; line-height: 1.2;\">
|
||||||
|
// <div>{{LOGGED_USER_NAME}}</div>
|
||||||
|
// <div>Mobile: {{LOGGED_USER_MOBILE}}</div>
|
||||||
|
// </div>
|
||||||
|
|
||||||
|
// <img src="{{LOGO_PATH}}" alt="Nhance Logo" width="100" style="margin-top:10px;">
|
||||||
|
// ';
|
||||||
|
|
||||||
|
// if ($data['lead_data']['policy_end_date'] != null) {
|
||||||
|
// $subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}} {{POLICY_END_DATE}}";
|
||||||
|
// } else {
|
||||||
|
// $subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}";
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($lead_data['policy_type_id'] == 1) {
|
||||||
|
// $data['totalSumAssured'] = $this->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => $id]);
|
||||||
|
// } else {
|
||||||
|
// $data['totalSumAssured'] = [];
|
||||||
|
// }
|
||||||
|
|
||||||
|
// $data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']);
|
||||||
|
// $data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']);
|
||||||
|
|
||||||
|
// $data['placement_mail_content'] = $this->transformMailContent($lead_data, $mail_content, 'Placement');
|
||||||
|
// $data['placement_subject'] = $this->transformMailContent($lead_data, $subject, 'Placement');
|
||||||
|
|
||||||
|
// $data['multi_file_data'] = $this->leadFilesModel->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null;
|
||||||
|
// $installment_data['installments'] = $this->leadInstallmentPaymentDetails->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null;
|
||||||
|
// $data['lead_data']['installment_data'] = view('rfq/installment_fields', $installment_data) ?? null;
|
||||||
|
// $data['attachment_html'] = view('rfq/attachment_files', $data) ?? "";
|
||||||
|
// $data['user_team'] = $this->userModel->select("ut.team_id")->join("user_teams ut", "ut.user_id = user_profiles.id and ut.is_active = 1")->where("user_profiles.is_active", 1)->first()['team_id'];
|
||||||
|
// $data['multi_file_data_html'] = $this->renderFileFields($data['multi_file_data']);
|
||||||
|
// // dd($data);
|
||||||
|
|
||||||
|
// if ($data['lead_data']['lead_form_type'] == 1) {
|
||||||
|
// $data['demogrphy_html_data'] = $this->generateDemographyDataTable(['lead_id' => $id]);
|
||||||
|
// $this->loadLayout('view_rfq.php', $data);
|
||||||
|
// } else if ($data['lead_data']['lead_form_type'] == 2) {
|
||||||
|
|
||||||
|
// $data['occupancy'] = $this->occupancyModel->findAll();
|
||||||
|
// // dd($data['occupancy']);
|
||||||
|
|
||||||
|
// if ($lead_data['lead_type'] != 1 && $data['rfq_count'] == 0) {
|
||||||
|
// $client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $lead_data['source_policy_id'])->first();
|
||||||
|
// if (isset($client_policy_data)) {
|
||||||
|
|
||||||
|
// $data['rfq_data']['json'] = $client_policy_data['placement_json'];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (!empty($data['question_json'])) {
|
||||||
|
// $data['policies'] = json_decode($data['question_json'], true)['policies'];
|
||||||
|
// $data["child_table_data"] = json_decode($data['question_json'], true)['child_table_data'];
|
||||||
|
// }
|
||||||
|
|
||||||
|
// $data['product'] = $this->leadsModel->select("policy_type.policy_type")->join('policy_type', 'leads.policy_type_id = policy_type.id')->where('leads.id', $id)->first()['policy_type'];
|
||||||
|
// // $data['lead_register_data'] = json_decode($data['lead_data']['custom_fields']);
|
||||||
|
// // dd($data['lead_register_data']);
|
||||||
|
// // $data['entity_type'] = $this->kycEntityTypeModel->where('is_active', 1)->findAll();
|
||||||
|
// $data['buisness_type'] = $this->buisnessType;
|
||||||
|
|
||||||
|
// // dd($data);
|
||||||
|
// $data['client_type'] = $this->clientType;
|
||||||
|
// $this->loadLayout('view_rfq_non_eb', $data);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
public function viewRFQ($id, $type = 1)
|
public function viewRFQ($id, $type = 1)
|
||||||
{
|
{
|
||||||
|
// 1. Combine RFQ queries into a single query
|
||||||
|
$rfqStats = $this->RFQModel
|
||||||
|
->select('
|
||||||
|
COUNT(*) as total_count,
|
||||||
|
SUM(CASE WHEN type != 2 THEN 1 ELSE 0 END) as rfq_count,
|
||||||
|
SUM(CASE WHEN type = 2 THEN 1 ELSE 0 END) as qcr_count
|
||||||
|
')
|
||||||
|
->where('lead_id', $id)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$data['rfq_count'] = $rfqStats['rfq_count'] ?? 0;
|
||||||
|
$data['qcr_count'] = $rfqStats['qcr_count'] ?? 0;
|
||||||
|
|
||||||
|
// 2. Get RFQ data separately (only if needed)
|
||||||
$data['rfq_data'] = $this->RFQModel
|
$data['rfq_data'] = $this->RFQModel
|
||||||
->where('lead_id', $id)
|
->where('lead_id', $id)
|
||||||
// ->where('type', $type)
|
|
||||||
->where('is_active', 1)
|
->where('is_active', 1)
|
||||||
->orderBy('id', 'desc')
|
->orderBy('id', 'desc')
|
||||||
->first();
|
->first();
|
||||||
// dd($data);
|
|
||||||
|
|
||||||
$data['rfq_count'] = $this->RFQModel
|
|
||||||
->where('lead_id', $id)
|
|
||||||
// ->where('type', 1)
|
|
||||||
->where('is_active', 1)
|
|
||||||
->countAllResults();
|
|
||||||
|
|
||||||
$data['qcr_count'] = $this->RFQModel
|
|
||||||
->where('lead_id', $id)
|
|
||||||
->where('type', 2)
|
|
||||||
->where('is_active', 1)
|
|
||||||
->countAllResults();
|
|
||||||
|
|
||||||
// dd(count($data['rfq_data']));
|
|
||||||
|
|
||||||
$data['lead_id'] = $id;
|
$data['lead_id'] = $id;
|
||||||
|
|
||||||
|
// 3. Optimize lead data query with specific field selection
|
||||||
$lead_data = $this->leadsModel
|
$lead_data = $this->leadsModel
|
||||||
->select('
|
->select('
|
||||||
leads.*,
|
leads.id, leads.policy_type_id, leads.lead_type, leads.source_policy_id,
|
||||||
policy_type.question_json,
|
leads.policy_end_date, leads.lead_form_type, leads.created_by, leads.client_name,
|
||||||
policy_type.policy_type,
|
policy_type.question_json, policy_type.policy_type, policy_type.long_name,
|
||||||
policy_type.long_name,
|
|
||||||
user_profiles.email as created_person_email
|
user_profiles.email as created_person_email
|
||||||
')
|
')
|
||||||
->join('policy_type', 'leads.policy_type_id = policy_type.id')
|
->join('policy_type', 'leads.policy_type_id = policy_type.id')
|
||||||
@ -737,24 +871,114 @@ class LeadsController extends BaseController
|
|||||||
->where('leads.is_active', 1)
|
->where('leads.is_active', 1)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
// dd($lead_data);
|
if (!$lead_data) {
|
||||||
|
// Handle case where lead doesn't exist
|
||||||
|
throw new \Exception('Lead not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Conditional query - only fetch if needed
|
||||||
if ($lead_data['lead_type'] != 1) {
|
if ($lead_data['lead_type'] != 1) {
|
||||||
$client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $lead_data['source_policy_id'])->first();
|
$client_policy_data = $this->clientPolicyModel
|
||||||
if (isset($client_policy_data)) {
|
->select('policy_terms, placement_json')
|
||||||
|
->where('is_active', 1)
|
||||||
|
->where('id', $lead_data['source_policy_id'])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($client_policy_data) {
|
||||||
$data['policy_terms'] = $client_policy_data['policy_terms'];
|
$data['policy_terms'] = $client_policy_data['policy_terms'];
|
||||||
|
|
||||||
|
// Store for later use in lead_form_type == 2 condition
|
||||||
|
if ($lead_data['lead_form_type'] == 2 && $data['rfq_count'] == 0) {
|
||||||
|
$data['rfq_data']['json'] = $client_policy_data['placement_json'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Cache decoded JSON to avoid multiple decodes
|
||||||
|
$question_json_decoded = !empty($lead_data['question_json'])
|
||||||
|
? json_decode($lead_data['question_json'], true)
|
||||||
|
: null;
|
||||||
|
|
||||||
$data['question_json'] = $lead_data['question_json'];
|
$data['question_json'] = $lead_data['question_json'];
|
||||||
$data['tab_name'] = $type == 2 ? 'QCR' : 'RFQ';
|
$data['tab_name'] = $type == 2 ? 'QCR' : 'RFQ';
|
||||||
$data['page_name'] = $type == 2 ? 'QCR' : 'RFQ';
|
$data['page_name'] = $type == 2 ? 'QCR' : 'RFQ';
|
||||||
|
$data['lead_data'] = $lead_data;
|
||||||
|
|
||||||
|
// 6. Parallel/batch data fetching for independent queries
|
||||||
$data['insurer'] = $this->insurerBranchModel->getInsurerBranchesWithInsurerNames();
|
$data['insurer'] = $this->insurerBranchModel->getInsurerBranchesWithInsurerNames();
|
||||||
$data['userList'] = $this->userModel->getUserListForRFQ();
|
$data['userList'] = $this->userModel->getUserListForRFQ();
|
||||||
$data['exclusiveUserList'] = $this->userModel->getexclusiveUserListForRFQ();
|
$data['exclusiveUserList'] = $this->userModel->getexclusiveUserListForRFQ();
|
||||||
$data['lead_data'] = $lead_data;
|
$data['tpa_list'] = $this->tpaBranchModel->getTpaBranchesWithTpaNames();
|
||||||
|
$data['account_manager'] = $this->userModel
|
||||||
|
->where('is_active', 1)
|
||||||
|
->where('role', 3)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
$mail_content = '
|
// 7. Define mail templates as constants or config
|
||||||
|
$mail_content = $this->getMailTemplate();
|
||||||
|
$subject = $this->getSubjectTemplate($lead_data);
|
||||||
|
|
||||||
|
// 8. Pre-calculate sum assured only for GPA
|
||||||
|
$data['totalSumAssured'] = ($lead_data['policy_type_id'] == 1) ? $this->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => $id]) : [];
|
||||||
|
|
||||||
|
// 9. Transform mail content once
|
||||||
|
$data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']);
|
||||||
|
$data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']);
|
||||||
|
$data['placement_mail_content'] = $this->transformMailContent($lead_data, $mail_content, 'Placement');
|
||||||
|
$data['placement_subject'] = $this->transformMailContent($lead_data, $subject, 'Placement');
|
||||||
|
|
||||||
|
// 10. Combine related queries
|
||||||
|
$data['multi_file_data'] = $this->leadFilesModel
|
||||||
|
->where('lead_id', $id)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$installment_data['installments'] = $this->leadInstallmentPaymentDetails
|
||||||
|
->where('lead_id', $id)
|
||||||
|
->where('is_active', 1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
// 11. Generate views efficiently
|
||||||
|
$data['lead_data']['installment_data'] = !empty($installment_data['installments'])
|
||||||
|
? view('rfq/installment_fields', $installment_data)
|
||||||
|
: null;
|
||||||
|
|
||||||
|
$data['attachment_html'] = view('rfq/attachment_files', $data);
|
||||||
|
|
||||||
|
$user_team = $this->userModel
|
||||||
|
->select("ut.team_id")
|
||||||
|
->join("user_teams ut", "ut.user_id = user_profiles.id and ut.is_active = 1")
|
||||||
|
->where("user_profiles.is_active", 1)
|
||||||
|
->first();
|
||||||
|
$data['user_team'] = $user_team['team_id'] ?? null;
|
||||||
|
|
||||||
|
$data['multi_file_data_html'] = $this->renderFileFields($data['multi_file_data']);
|
||||||
|
|
||||||
|
// 12. Conditional rendering based on lead_form_type
|
||||||
|
if ($lead_data['lead_form_type'] == 1) {
|
||||||
|
$data['demogrphy_html_data'] = $this->generateDemographyDataTable(['lead_id' => $id]);
|
||||||
|
$this->loadLayout('view_rfq.php', $data);
|
||||||
|
} else if ($lead_data['lead_form_type'] == 2) {
|
||||||
|
$data['occupancy'] = $this->occupancyModel->findAll();
|
||||||
|
|
||||||
|
// Use cached decoded JSON
|
||||||
|
if ($question_json_decoded) {
|
||||||
|
$data['policies'] = $question_json_decoded['policies'] ?? [];
|
||||||
|
$data["child_table_data"] = $question_json_decoded['child_table_data'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['product'] = $lead_data['policy_type'];
|
||||||
|
$data['buisness_type'] = $this->buisnessType;
|
||||||
|
$data['client_type'] = $this->clientType;
|
||||||
|
|
||||||
|
$this->loadLayout('view_rfq_non_eb', $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 13. Extract mail template to separate method for reusability
|
||||||
|
private function getMailTemplate()
|
||||||
|
{
|
||||||
|
return '
|
||||||
<p>Dear Sir,</p>
|
<p>Dear Sir,</p>
|
||||||
<p>Greetings From Nhance India!</p>
|
<p>Greetings From Nhance India!</p>
|
||||||
<p>Please find attached the {{RFQ_OR_QCR}} for <strong>{{POLICY_TYPE}}</strong> policy pertaining to <strong>{{CLIENT_NAME}}</strong>.</p>
|
<p>Please find attached the {{RFQ_OR_QCR}} for <strong>{{POLICY_TYPE}}</strong> policy pertaining to <strong>{{CLIENT_NAME}}</strong>.</p>
|
||||||
@ -763,70 +987,21 @@ class LeadsController extends BaseController
|
|||||||
<p>Thank You!</p><br>
|
<p>Thank You!</p><br>
|
||||||
<p>Best regards,</p>
|
<p>Best regards,</p>
|
||||||
|
|
||||||
<div style=\"margin: 0; padding: 0; line-height: 1.2;\">
|
<div style="margin: 0; padding: 0; line-height: 1.2;">
|
||||||
<div>{{LOGGED_USER_NAME}}</div>
|
<div>{{LOGGED_USER_NAME}}</div>
|
||||||
<div>Mobile: {{LOGGED_USER_MOBILE}}</div>
|
<div>Mobile: {{LOGGED_USER_MOBILE}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<img src="{{LOGO_PATH}}" alt="Nhance Logo" width="100" style="margin-top:10px;">
|
<img src="{{LOGO_PATH}}" alt="Nhance Logo" width="100" style="margin-top:10px;">
|
||||||
';
|
';
|
||||||
|
|
||||||
if ($data['lead_data']['policy_end_date'] != null) {
|
|
||||||
$subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}} {{POLICY_END_DATE}}";
|
|
||||||
} else {
|
|
||||||
$subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($lead_data['policy_type_id'] == 1) {
|
// 14. Extract subject template to separate method
|
||||||
$data['totalSumAssured'] = $this->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => $id]);
|
private function getSubjectTemplate($lead_data)
|
||||||
} else {
|
{
|
||||||
$data['totalSumAssured'] = [];
|
return $lead_data['policy_end_date'] != null
|
||||||
}
|
? "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}} {{POLICY_END_DATE}}"
|
||||||
|
: "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}";
|
||||||
$data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']);
|
|
||||||
$data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']);
|
|
||||||
|
|
||||||
$data['placement_mail_content'] = $this->transformMailContent($lead_data, $mail_content, 'Placement');
|
|
||||||
$data['placement_subject'] = $this->transformMailContent($lead_data, $subject, 'Placement');
|
|
||||||
|
|
||||||
$data['multi_file_data'] = $this->leadFilesModel->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null;
|
|
||||||
$installment_data['installments'] = $this->leadInstallmentPaymentDetails->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null;
|
|
||||||
$data['lead_data']['installment_data'] = view('rfq/installment_fields', $installment_data) ?? null;
|
|
||||||
$data['attachment_html'] = view('rfq/attachment_files', $data) ?? "";
|
|
||||||
$data['user_team'] = $this->userModel->select("ut.team_id")->join("user_teams ut", "ut.user_id = user_profiles.id and ut.is_active = 1")->where("user_profiles.is_active", 1)->first()['team_id'];
|
|
||||||
// dd($data);
|
|
||||||
|
|
||||||
if ($data['lead_data']['lead_form_type'] == 1) {
|
|
||||||
$data['demogrphy_html_data'] = $this->generateDemographyDataTable(['lead_id' => $id]);
|
|
||||||
$this->loadLayout('view_rfq.php', $data);
|
|
||||||
} else if ($data['lead_data']['lead_form_type'] == 2) {
|
|
||||||
|
|
||||||
$data['occupancy'] = $this->occupancyModel->findAll();
|
|
||||||
// dd($data['occupancy']);
|
|
||||||
|
|
||||||
if ($lead_data['lead_type'] != 1 && $data['rfq_count'] == 0) {
|
|
||||||
$client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $lead_data['source_policy_id'])->first();
|
|
||||||
if (isset($client_policy_data)) {
|
|
||||||
|
|
||||||
$data['rfq_data']['json'] = $client_policy_data['placement_json'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($data['question_json'])) {
|
|
||||||
$data['policies'] = json_decode($data['question_json'], true)['policies'];
|
|
||||||
$data["child_table_data"] = json_decode($data['question_json'], true)['child_table_data'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['product'] = $this->leadsModel->select("policy_type.policy_type")->join('policy_type', 'leads.policy_type_id = policy_type.id')->where('leads.id', $id)->first()['policy_type'];
|
|
||||||
// $data['lead_register_data'] = json_decode($data['lead_data']['custom_fields']);
|
|
||||||
// dd($data['lead_register_data']);
|
|
||||||
// $data['entity_type'] = $this->kycEntityTypeModel->where('is_active', 1)->findAll();
|
|
||||||
$data['buisness_type'] = $this->buisnessType;
|
|
||||||
|
|
||||||
// dd($data);
|
|
||||||
$data['client_type'] = $this->clientType;
|
|
||||||
$this->loadLayout('view_rfq_non_eb', $data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function savePolicyInfo()
|
public function savePolicyInfo()
|
||||||
@ -1454,20 +1629,22 @@ class LeadsController extends BaseController
|
|||||||
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (in_array($rfq_data['policy_type_id'], [2, 3, 4, 5])) {
|
if (in_array($rfq_data['policy_type_id'], [2, 3, 4, 5])) {
|
||||||
$lead_data = [
|
$lead_data = [
|
||||||
|
|
||||||
'Insured' => $rfq_data['client_name'],
|
'Insured' => $rfq_data['client_name'],
|
||||||
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
||||||
|
|
||||||
'No of Employees at Inception' => $rfq_data['incept_emp_count'],
|
// 'No of Employees at Inception' => $rfq_data['incept_emp_count'],
|
||||||
'No of Dependents at Inception' => $rfq_data['incept_dept_count'],
|
// 'No of Dependents at Inception' => $rfq_data['incept_dept_count'],
|
||||||
'Total Lives at Inception ' => $rfq_data['incept_no_of_lives'],
|
// 'Total Lives at Inception ' => $rfq_data['incept_no_of_lives'],
|
||||||
|
|
||||||
'No of Employees at Expiry' => $rfq_data['exp_emp_count'],
|
// 'No of Employees at Expiry' => $rfq_data['exp_emp_count'],
|
||||||
'No of Dependents at Expiry' => $rfq_data['exp_dept_count'],
|
// 'No of Dependents at Expiry' => $rfq_data['exp_dept_count'],
|
||||||
'Total Lives at Expiry ' => $rfq_data['exp_no_of_lives'],
|
// 'Total Lives at Expiry ' => $rfq_data['exp_no_of_lives'],
|
||||||
|
|
||||||
'No of Employees at Renewal' => $rfq_data['renewal_emp_count'],
|
'No of Employees at Renewal' => $rfq_data['renewal_emp_count'],
|
||||||
'No of Dependents at Renewal' => $rfq_data['renewal_dept_count'],
|
'No of Dependents at Renewal' => $rfq_data['renewal_dept_count'],
|
||||||
@ -1476,30 +1653,32 @@ class LeadsController extends BaseController
|
|||||||
'Period of Insurance ' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d-m-Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d-m-Y', strtotime($rfq_data['policy_end_date'])) : "To be decided",
|
'Period of Insurance ' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d-m-Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d-m-Y', strtotime($rfq_data['policy_end_date'])) : "To be decided",
|
||||||
'Insurer' => $rfq_data['insurer_name'] ?? " - ",
|
'Insurer' => $rfq_data['insurer_name'] ?? " - ",
|
||||||
'TPA' => $rfq_data['tpa_name'] ?? " - ",
|
'TPA' => $rfq_data['tpa_name'] ?? " - ",
|
||||||
'Policy Run Days' => $rfq_data['policy_run_days'],
|
|
||||||
'Inception Premium' => formatIndianCurrency($rfq_data['premium_at_inception']),
|
// 'Policy Run Days' => $rfq_data['policy_run_days'],
|
||||||
'Premium as on (' . date('d-m-Y', strtotime($rfq_data['incurred_claims_date'])) . ')' => formatIndianCurrency($rfq_data['premium_date']),
|
// 'Inception Premium' => formatIndianCurrency($rfq_data['premium_at_inception']),
|
||||||
'Earned Premium' => formatIndianCurrency(intval($rfq_data['earned_premium'])),
|
// 'Premium as on (' . date('d-m-Y', strtotime($rfq_data['incurred_claims_date'])) . ')' => formatIndianCurrency($rfq_data['premium_date']),
|
||||||
'Incurred Claims as on (' . date('d-m-Y', strtotime($rfq_data['incurred_claims_date'])) . ')' => formatIndianCurrency($rfq_data['incurred_claims']),
|
// 'Earned Premium' => formatIndianCurrency(intval($rfq_data['earned_premium'])),
|
||||||
'Annualised Claims' => formatIndianCurrency(intval($rfq_data['annualised_claims'])),
|
// 'Incurred Claims as on (' . date('d-m-Y', strtotime($rfq_data['incurred_claims_date'])) . ')' => formatIndianCurrency($rfq_data['incurred_claims']),
|
||||||
'Incurred Claims Ratio' => $rfq_data['incurred_claims_ratio'] . " %",
|
// 'Annualised Claims' => formatIndianCurrency(intval($rfq_data['annualised_claims'])),
|
||||||
'Earned Claims Ratio' => $rfq_data['earned_claims_ratio'] . " %",
|
// 'Incurred Claims Ratio' => $rfq_data['incurred_claims_ratio'] . " %",
|
||||||
|
// 'Earned Claims Ratio' => $rfq_data['earned_claims_ratio'] . " %",
|
||||||
];
|
];
|
||||||
} else if (in_array($rfq_data['policy_type_id'], [1, 6, 7])) {
|
} else if (in_array($rfq_data['policy_type_id'], [1, 6, 7])) {
|
||||||
|
|
||||||
$lead_data = [
|
$lead_data = [
|
||||||
'Insured' => $rfq_data['client_name'],
|
'Insured' => $rfq_data['client_name'],
|
||||||
'No of Employees at Inception' => $rfq_data['incept_emp_count'],
|
'No of Employees at Inception' => $rfq_data['incept_emp_count'],
|
||||||
'Total Lives at Inception' => $rfq_data['total_lives_at_incept'],
|
|
||||||
'Total Sum Insured at Inception' => $rfq_data['total_si_at_incept'],
|
'Total Sum Insured at Inception' => $rfq_data['total_si_at_incept'],
|
||||||
'Premium at inception' => $rfq_data['premium_at_incept'],
|
'Premium at inception' => $rfq_data['premium_at_incept'],
|
||||||
'No of Employees at Renewal' => $rfq_data['renewal_emp_count'],
|
|
||||||
'Total Sum Insured at Renewal ' => $rfq_data['total_si_at_renewal'],
|
|
||||||
'Policy Period' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d-m-Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d-m-Y', strtotime($rfq_data['policy_end_date'])) : "To be decided",
|
'Policy Period' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d-m-Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d-m-Y', strtotime($rfq_data['policy_end_date'])) : "To be decided",
|
||||||
// 'Insurer' => $rfq_data['insurer_name'] ?? " - ",
|
|
||||||
// 'TPA' => $rfq_data['tpa_name'] ?? " - ",
|
|
||||||
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "",
|
||||||
'Existing Insurer' => $rfq_data['insurer_name'],
|
'Existing Insurer' => $rfq_data['insurer_name'],
|
||||||
// 'TPA ' => $rfq_data['tpa_name'],
|
'No of Employees at Renewal' => $rfq_data['renewal_emp_count'],
|
||||||
|
'Total Sum Insured at Renewal' => $rfq_data['total_si_at_renewal'],
|
||||||
|
'Claims Experience for last 3 years' => "Mentioned in Claims sheet",
|
||||||
|
// 'Insurer' => $rfq_data['insurer_name'] ?? " - ",
|
||||||
|
// 'TPA' => $rfq_data['tpa_name'] ?? " - ",
|
||||||
|
// 'Total Lives at Inception' => $rfq_data['total_lives_at_incept'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2827,6 +3006,22 @@ class LeadsController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($recipient_type == 'placement' && isset($params['acm_email']) && !empty($params['acm_email'])){
|
||||||
|
|
||||||
|
$common['mail_type'] = "internal acm";
|
||||||
|
$acm_mail_content = '
|
||||||
|
<p>Dear Sir,</p>
|
||||||
|
<p>The placement for the <strong>{{POLICY_TYPE}}</strong> policy pertaining to <strong>{{CLIENT_NAME}}</strong> has been successfully won.</p>
|
||||||
|
<p>Please proceed with the next steps accordingly.</p>
|
||||||
|
<p>Thank You!</p><br>
|
||||||
|
<p>Best regards,</p>
|
||||||
|
|
||||||
|
<img src="{{LOGO_PATH}}" alt="Nhance Logo" width="100" style="margin-top:10px;">
|
||||||
|
';
|
||||||
|
$acm_mail_content = $this->transformMailContent($lead_data, $acm_mail_content, $data['page_name'] = 'QCR');
|
||||||
|
$res = MailHelper::send_email(['from_mail' => $from_mail, 'mail' => $params['acm_email'], 'subject' => $subject, 'message' => $acm_mail_content, 'attachments' => $attachments, 'common' => $common]);
|
||||||
|
}
|
||||||
|
|
||||||
$is_placement = false;
|
$is_placement = false;
|
||||||
if ($recipient_type == 'placement') {
|
if ($recipient_type == 'placement') {
|
||||||
|
|
||||||
@ -2852,8 +3047,16 @@ class LeadsController extends BaseController
|
|||||||
'cd_amount' => $params['cd_amount'] ?? null,
|
'cd_amount' => $params['cd_amount'] ?? null,
|
||||||
'no_of_installment' => $params['no_of_installment'] ?? null,
|
'no_of_installment' => $params['no_of_installment'] ?? null,
|
||||||
'is_installment' => $params['is_installment'] ?? null,
|
'is_installment' => $params['is_installment'] ?? null,
|
||||||
|
'is_installment' => $params['is_installment'] ?? null,
|
||||||
|
'acm_id' => $params['acm_pk'] ?? null,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if(isset($params['tpa_id']) && !empty($params['tpa_id'])){
|
||||||
|
list($tpaBranchId, $tpaId) = explode('-', $params['tpa_id']);
|
||||||
|
$data['tpa_branch_id'] = $tpaBranchId;
|
||||||
|
$data['tpa_id'] = $tpaId;
|
||||||
|
}
|
||||||
|
|
||||||
$this->leadsModel->where('id', $lead_id)->set($data)->update();
|
$this->leadsModel->where('id', $lead_id)->set($data)->update();
|
||||||
|
|
||||||
if (isset($params['installments']) && !empty($params['installments'])) {
|
if (isset($params['installments']) && !empty($params['installments'])) {
|
||||||
@ -3641,7 +3844,7 @@ class LeadsController extends BaseController
|
|||||||
$this->loadLayout('view_rfq_non_eb');
|
$this->loadLayout('view_rfq_non_eb');
|
||||||
}
|
}
|
||||||
|
|
||||||
// get lead data for edit bot EB and NON-EB
|
// get lead data for edit both EB and NON-EB
|
||||||
public function getLeadNonEB($type, $id = null)
|
public function getLeadNonEB($type, $id = null)
|
||||||
{
|
{
|
||||||
// Set basic data
|
// Set basic data
|
||||||
@ -4901,7 +5104,7 @@ class LeadsController extends BaseController
|
|||||||
|
|
||||||
$lower_headers = array_map('strtolower', $members_heading);
|
$lower_headers = array_map('strtolower', $members_heading);
|
||||||
foreach ($lower_headers as $index => $header) {
|
foreach ($lower_headers as $index => $header) {
|
||||||
if (preg_match('/^sa\s*-\s*option\s*\d*$/i', $header)) {
|
if (preg_match('/^(sa\s*-\s*option|proposed\s+sum\s+insured)\s+\d+$/i', $header)) {
|
||||||
$column_name = $members_heading[$index];
|
$column_name = $members_heading[$index];
|
||||||
$sum = 0;
|
$sum = 0;
|
||||||
|
|
||||||
@ -5168,5 +5371,182 @@ class LeadsController extends BaseController
|
|||||||
return ['status' => true, "data" => $reminder_sended_lead];
|
return ['status' => true, "data" => $reminder_sended_lead];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function uploadMultiFileFromRfq()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "uploadMultiFileFromRfq START");
|
||||||
|
$this->myLogger->logme('error', "Files received: " . json_encode($this->request->getPost() ?? []));
|
||||||
|
|
||||||
|
$lead_id = $this->request->getPost('lead_id');
|
||||||
|
$lead_form_type = $this->request->getPost('lead_form_type');
|
||||||
|
$leads_file_primary_key = $this->request->getPost('leads_file_id') ?? [];
|
||||||
|
$docs_name = $this->request->getPost('docs_name') ?? [];
|
||||||
|
$files = $this->request->getFileMultiple('file_name');
|
||||||
|
|
||||||
|
if (empty($files) || empty($docs_name)) {
|
||||||
|
$this->myLogger->logme('error', "No files or document names provided");
|
||||||
|
return $this->respond([
|
||||||
|
'status' => false,
|
||||||
|
'code' => 400,
|
||||||
|
'message' => 'No files or document names provided'
|
||||||
|
], 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload process
|
||||||
|
$multi_file_data = $this->uploadMultiFiles($files, $docs_name, $leads_file_primary_key) ?? [];
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "uploadMultiFiles result: " . json_encode($multi_file_data ?? []));
|
||||||
|
|
||||||
|
if (!empty($multi_file_data)) {
|
||||||
|
$this->insertMultiFilesData($multi_file_data, $lead_id, $lead_form_type);
|
||||||
|
$this->myLogger->logme('error', "Files inserted successfully into DB");
|
||||||
|
|
||||||
|
// update lead file name if change
|
||||||
|
if(isset($multi_file_data[0]['file_name']) && !empty($multi_file_data[0]['file_name'])){
|
||||||
|
$this->leadsModel->where('id', $lead_id)->set('file_name', $multi_file_data[0]['file_name'])->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->myLogger->logme('error', "uploadMultiFiles returned empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get the updated lead file data
|
||||||
|
$lead_file_data = $this->leadFilesModel
|
||||||
|
->where('is_active', 1)
|
||||||
|
->where('lead_id', $lead_id)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "Fetched " . count($lead_file_data) . " lead file records");
|
||||||
|
|
||||||
|
$document_data = $this->renderFileFields($lead_file_data);
|
||||||
|
$attch_data['multi_file_data'] = $lead_file_data;
|
||||||
|
$attachment_html = view('rfq/attachment_files', $attch_data) ?? "";
|
||||||
|
|
||||||
|
$this->myLogger->logme('error', "uploadMultiFileFromRfq END");
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'code' => 200,
|
||||||
|
'message' => "File uploaded Successfully",
|
||||||
|
'document_data' => $document_data,
|
||||||
|
'attachment_html' => $attachment_html,
|
||||||
|
], 200);
|
||||||
|
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
|
||||||
|
$errorDetails = [
|
||||||
|
'error_message' => $e->getMessage(),
|
||||||
|
'file' => $e->getFile(),
|
||||||
|
'line' => $e->getLine(),
|
||||||
|
'stack_trace' => $e->getTraceAsString(),
|
||||||
|
];
|
||||||
|
|
||||||
|
// Catch any error/exception and log with trace
|
||||||
|
$this->myLogger->logme('error', "Exception in uploadMultiFileFromRfq: " . json_encode($errorDetails));
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'status' => false,
|
||||||
|
'code' => 500,
|
||||||
|
'message' => "File upload failed: " . $e->getMessage(),
|
||||||
|
'errorDetails' => $errorDetails,
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function renderFileFields($multi_file_data = [])
|
||||||
|
{
|
||||||
|
$uploadFilePath = WRITEPATH . 'uploads/lead_files/';
|
||||||
|
$html = '';
|
||||||
|
|
||||||
|
// If data exists (edit mode)
|
||||||
|
if (!empty($multi_file_data)) {
|
||||||
|
|
||||||
|
foreach ($multi_file_data as $index => $value) {
|
||||||
|
|
||||||
|
$sample_dwn_link = ' [ <a href="' . base_url("util/downloadMemberFile/") . $value['file_name'] . '" data-toggle="tooltip" data-placement="top" title="Download Member List" target="_blank">Download</a> ]';
|
||||||
|
$isFirstField = ($index === 0);
|
||||||
|
$placeholder = $isFirstField ? 'First file must be Demography.' : '';
|
||||||
|
$first_file_name = $isFirstField ? 'Member List' : '';
|
||||||
|
$member_data_link = $isFirstField ? $sample_dwn_link : '';
|
||||||
|
$read_only = $isFirstField ? 'readonly' : '';
|
||||||
|
$accept = $isFirstField ? '.xls,.xlsx' : '';
|
||||||
|
$displayIndex = $index + 1;
|
||||||
|
|
||||||
|
$html .= '
|
||||||
|
<div class="form-row d-flex align-items-end" id="fileField_' . $displayIndex . '">
|
||||||
|
<input type="hidden" name="leads_file_id[]" value="' . htmlspecialchars($value['id']) . '" id="file_id_' . $displayIndex . '">
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Document Name</label>
|
||||||
|
<input type="text" class="form-control" name="docs_name[]"
|
||||||
|
placeholder="' . $placeholder . '"
|
||||||
|
value="' . htmlspecialchars(!empty($first_file_name) ? $first_file_name : $value['docs_name']) . '" id="docs_name_' . $displayIndex . '" '.$read_only.'>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>
|
||||||
|
File Upload<br>
|
||||||
|
<small id="file_name_display_' . $displayIndex . '" class="text-muted">' .
|
||||||
|
(!empty($value['file_name']) ? htmlspecialchars($value['file_name']) : 'No file chosen') .
|
||||||
|
'</small> '.$member_data_link.'
|
||||||
|
</label>
|
||||||
|
<input type="file" class="form-control" id="file_name_' . $displayIndex . '"
|
||||||
|
name="file_name[]" accept="' . $accept . '"
|
||||||
|
onchange="showFileName(this, ' . $displayIndex . ')">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2" style="position: relative; bottom: 16px;">
|
||||||
|
<button type="button" class="btn btn-danger" onclick="removeFileField(' . $displayIndex . ', ' . htmlspecialchars($value['id']) . ')">x</button>
|
||||||
|
<button type="button" class="btn btn-primary" onclick="addFileField()">+</button>
|
||||||
|
</div>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Default (add mode)
|
||||||
|
$html .= '
|
||||||
|
<div class="form-row d-flex align-items-end" id="fileField_1">
|
||||||
|
<input type="hidden" name="leads_file_id[]" value="">
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Document Name</label>
|
||||||
|
<input type="text" class="form-control" name="docs_name[]"
|
||||||
|
placeholder="First file must be Demography." id="docs_name_1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>
|
||||||
|
File Upload<br>
|
||||||
|
<small id="file_name_display_1" class="text-muted">No file chosen</small>
|
||||||
|
</label>
|
||||||
|
<input type="file" class="form-control" id="file_name_1"
|
||||||
|
name="file_name[]" accept=".xls,.xlsx" onchange="showFileName(this, 1)">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2" style="position: relative; bottom: 16px;">
|
||||||
|
<button type="button" class="btn btn-danger" onclick="removeFileField(1, \'\')">x</button>
|
||||||
|
<button type="button" class="btn btn-primary" onclick="addFileField()">+</button>
|
||||||
|
</div>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function downloadMemberFile($fileName)
|
||||||
|
{
|
||||||
|
$filePath = WRITEPATH . 'uploads/lead_files/' . $fileName;
|
||||||
|
|
||||||
|
if (!file_exists($filePath)) {
|
||||||
|
$data['message'] = 'The Physical File Not Found';
|
||||||
|
echo view('errors/404', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// force download
|
||||||
|
return $this->response->download($filePath, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1243,7 +1243,8 @@ class PolicyTransactionController extends BaseController
|
|||||||
$issue_type = $this->policyTransactionModel
|
$issue_type = $this->policyTransactionModel
|
||||||
->where('action_type', 'inception')
|
->where('action_type', 'inception')
|
||||||
->where('client_id', $this->request->getPost('client_id'))
|
->where('client_id', $this->request->getPost('client_id'))
|
||||||
->where('client_policy_id', $this->request->getPost('client_policy_id'))
|
// ->where('client_policy_id', $this->request->getPost('client_policy_id'))
|
||||||
|
->where('id', $this->request->getPost('client_policy_id'))
|
||||||
->where('policy_transaction.is_active', 1)
|
->where('policy_transaction.is_active', 1)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
@ -3062,9 +3063,28 @@ class PolicyTransactionController extends BaseController
|
|||||||
|
|
||||||
$clientIds = array_column($clients, 'id');
|
$clientIds = array_column($clients, 'id');
|
||||||
|
|
||||||
$policies = $this->clientPolicyModel
|
// $policies = $this->clientPolicyModel
|
||||||
|
// ->select("
|
||||||
|
// client_policy.*,
|
||||||
|
// policy_type.policy_type,
|
||||||
|
// policy_type.ebp,
|
||||||
|
// policy_type.etp,
|
||||||
|
// policy_type.iep,
|
||||||
|
// policy_type.itp,
|
||||||
|
// policy_type.bap,
|
||||||
|
// policy_type.allocg,
|
||||||
|
// DATE_FORMAT(client_policy.policy_start_date, '%d/%m/%Y') as policy_start_date,
|
||||||
|
// DATE_FORMAT(client_policy.policy_end_date, '%d/%m/%Y') as policy_end_date
|
||||||
|
// ")
|
||||||
|
// ->join('policy_type', 'policy_type.id = client_policy.policy_type_id')
|
||||||
|
// ->join('policy_transaction pt', 'pt.client_policy_id = client_policy.id and pt.action_type = "inception" and pt.is_active = 1 and pt.client_policy_id is not null')
|
||||||
|
// ->whereIn('client_policy.client_id', $clientIds)
|
||||||
|
// ->where('client_policy.is_active', 1)
|
||||||
|
// ->findAll();
|
||||||
|
|
||||||
|
$policies = $this->policyTransactionModel
|
||||||
->select("
|
->select("
|
||||||
client_policy.*,
|
policy_transaction.*,
|
||||||
policy_type.policy_type,
|
policy_type.policy_type,
|
||||||
policy_type.ebp,
|
policy_type.ebp,
|
||||||
policy_type.etp,
|
policy_type.etp,
|
||||||
@ -3072,13 +3092,13 @@ class PolicyTransactionController extends BaseController
|
|||||||
policy_type.itp,
|
policy_type.itp,
|
||||||
policy_type.bap,
|
policy_type.bap,
|
||||||
policy_type.allocg,
|
policy_type.allocg,
|
||||||
DATE_FORMAT(client_policy.policy_start_date, '%d/%m/%Y') as policy_start_date,
|
DATE_FORMAT(policy_transaction.policy_start_date, '%d/%m/%Y') as policy_start_date,
|
||||||
DATE_FORMAT(client_policy.policy_end_date, '%d/%m/%Y') as policy_end_date
|
DATE_FORMAT(policy_transaction.policy_end_date, '%d/%m/%Y') as policy_end_date
|
||||||
")
|
")
|
||||||
->join('policy_type', 'policy_type.id = client_policy.policy_type_id')
|
->join('policy_type', 'policy_type.id = policy_transaction.policy_type_id')
|
||||||
->join('policy_transaction pt', 'pt.client_policy_id = client_policy.id and pt.action_type = "inception" and pt.is_active = 1 and pt.client_policy_id is not null')
|
->whereIn('policy_transaction.client_id', $clientIds)
|
||||||
->whereIn('client_policy.client_id', $clientIds)
|
->where('policy_transaction.is_active', 1)
|
||||||
->where('client_policy.is_active', 1)
|
->where('policy_transaction.action_type', "inception")
|
||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
foreach ($policies as $policy) {
|
foreach ($policies as $policy) {
|
||||||
|
|||||||
@ -503,14 +503,14 @@ class RestAuthenticationController extends AdminController
|
|||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', '************************ POST END ********************************');
|
log_message('error', '************************ POST END ********************************');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'failed','code' => 404,'data' => []],200);
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'message' => 'No data found'],200);
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - getVerifiedUserData: Exception: " . $e->getMessage() . " --- Line: " . $e->getLine() . " --- Trace: " . $e->getTraceAsString());
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'failed','code' => 500,'data' =>[], 'error' => $e->getMessage()],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $e->getMessage()],500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -862,7 +862,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -966,7 +966,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $th],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $th],500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1200,13 +1200,13 @@ class RestAuthenticationController extends AdminController
|
|||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'success','code' => 200,'data' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"], 'is_mpin_skipped' => $employeeData['is_mpin_skipped'], 'is_biometric_enabled' => $employeeData['is_biometric_enabled']],200);
|
return $this->respond(['status' => 'success','code' => 200,'data' => "", 'message' => "Mpin - exist" , 'Mpin' =>$employeeData["mpin"], 'is_mpin_skipped' => $employeeData['is_mpin_skipped'], 'is_biometric_enabled' => $employeeData['is_biometric_enabled']],200);
|
||||||
} else {
|
} else {
|
||||||
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - not found");
|
$this->myLogger->logme("error", "REST-AUTH-CONTROLLER - checkMpin: Mpin - not found");
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
return $this->respond(['status' => 'failed','code' => 404,'data' => "Mpin - not found", 'Mpin' =>null],200);
|
return $this->respond(['status' => 'failed','code' => 404,'data' => "", 'message' => "Mpin - not found", 'Mpin' =>null],200);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
@ -1215,7 +1215,7 @@ class RestAuthenticationController extends AdminController
|
|||||||
log_message('error', ' ************************************* POST END **************************************** ');
|
log_message('error', ' ************************************* POST END **************************************** ');
|
||||||
log_message('error', ' ');
|
log_message('error', ' ');
|
||||||
|
|
||||||
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()],500);
|
return $this->respond(['status' => 'failed','code' => 500,'data' => "", 'message' => $e->getMessage()],500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ namespace App\Controllers;
|
|||||||
use App\Controllers\BaseController;
|
use App\Controllers\BaseController;
|
||||||
use App\Models\EmployeePolicyModel;
|
use App\Models\EmployeePolicyModel;
|
||||||
use App\Models\InsurerBranchModel;
|
use App\Models\InsurerBranchModel;
|
||||||
|
use App\Models\RFQModel;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use CodeIgniter\API\ResponseTrait;
|
use CodeIgniter\API\ResponseTrait;
|
||||||
use Dompdf\Dompdf;
|
use Dompdf\Dompdf;
|
||||||
@ -313,4 +314,36 @@ class TestingController extends BaseController
|
|||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function viewRFQNonEb()
|
||||||
|
{
|
||||||
|
$insurerBranchModel = new InsurerBranchModel();
|
||||||
|
$data['page_name'] = "RFQ NON EB";
|
||||||
|
$data['insurer'] = $insurerBranchModel->getInsurerBranchesWithInsurerNames();
|
||||||
|
// dd($data);
|
||||||
|
return $this->loadLayout('view_rfq_non_eb_new', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saverfq(){
|
||||||
|
$json = $this->request->getPost('json');
|
||||||
|
$json = json_encode($json);
|
||||||
|
print_r($json);
|
||||||
|
|
||||||
|
// $data['lead_id'] = 10000;
|
||||||
|
// $data['json'] = $json;
|
||||||
|
// $rfq = new RFQModel();
|
||||||
|
|
||||||
|
// $rfq->insert($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function exportExcel()
|
||||||
|
{
|
||||||
|
$rfq = new RFQModel();
|
||||||
|
$policy_data = $rfq->where('lead_id', 10000)->first();
|
||||||
|
// print_rr($policy_data['json']); die;
|
||||||
|
$policy_data = json_decode($policy_data['json'], true);
|
||||||
|
$policy_data = array_slice($policy_data, 0, -2);
|
||||||
|
print_rr($policy_data); die;
|
||||||
|
dd($policy_data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,6 +105,7 @@ class LeadsModel extends Model
|
|||||||
'next_reminder_date',
|
'next_reminder_date',
|
||||||
'is_insurer_auto_mail',
|
'is_insurer_auto_mail',
|
||||||
'quote_received_insurer',
|
'quote_received_insurer',
|
||||||
|
'acm_id',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1752,7 +1752,7 @@
|
|||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<!-- Masters -->
|
<!-- Masters -->
|
||||||
<?php if (get_role_id() == 1 || get_role_id() == 5) { ?>
|
<?php if (get_role_id() == 1 || get_role_id() == 5 || get_role_id() == 4) { ?>
|
||||||
|
|
||||||
<li class="li-seperate" id="masters-li">
|
<li class="li-seperate" id="masters-li">
|
||||||
<a href="#sidebarPolicies" data-toggle="collapse" class=" img-inactive">
|
<a href="#sidebarPolicies" data-toggle="collapse" class=" img-inactive">
|
||||||
@ -1760,11 +1760,20 @@
|
|||||||
src="<?= base_url() . "public"; ?>/assets/images/masters_sb.png" alt="Logo" height="20">
|
src="<?= base_url() . "public"; ?>/assets/images/masters_sb.png" alt="Logo" height="20">
|
||||||
<span> Masters </span>
|
<span> Masters </span>
|
||||||
</a>
|
</a>
|
||||||
<div class="collapse" id="sidebarPolicies">
|
<div class="collapse" id="sidebarDashboards">
|
||||||
<ul class="nav-second-level">
|
<ul class="nav-second-level">
|
||||||
|
|
||||||
|
<?php if (get_role_id() == 1 || get_role_id() == 5 || ( get_role_id() == 4 && (in_array(BUSINESS_SUPPORT_TEAM_ID, user_team()) || in_array(SALES_TEAM_ID, user_team())))) { ?>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="<?= base_url('/master/insurer/list') ?>">Insurer</a>
|
<a href="<?= base_url('/master/insurer/list') ?>">Insurer</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
|
||||||
|
<?php if (get_role_id() == 1 || get_role_id() == 5) { ?>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="<?= base_url('/master/tpa/list') ?>">TPA</a>
|
<a href="<?= base_url('/master/tpa/list') ?>">TPA</a>
|
||||||
</li>
|
</li>
|
||||||
@ -1783,6 +1792,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="<?= base_url('/user/list') ?>"> Users </a>
|
<a href="<?= base_url('/user/list') ?>"> Users </a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -189,7 +189,7 @@ if (isset($selected_lead_type)) {
|
|||||||
$('#leads_form').hide()
|
$('#leads_form').hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClientAndBranchAndPolicy() {
|
function getClientAndBranchAndPolicy(append = true) {
|
||||||
|
|
||||||
console.log('getClientAndBranchAndPolicy function called')
|
console.log('getClientAndBranchAndPolicy function called')
|
||||||
|
|
||||||
@ -204,7 +204,9 @@ if (isset($selected_lead_type)) {
|
|||||||
client_list = res.client_data;
|
client_list = res.client_data;
|
||||||
branch_list = res.branch_data;
|
branch_list = res.branch_data;
|
||||||
policy_list = res.policy_data;
|
policy_list = res.policy_data;
|
||||||
|
if(append == true){
|
||||||
appendClients(res.client_data);
|
appendClients(res.client_data);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log('No data found');
|
console.log('No data found');
|
||||||
}
|
}
|
||||||
@ -217,7 +219,7 @@ if (isset($selected_lead_type)) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendClients(data) {
|
function appendClients(data, client_id = null) {
|
||||||
// console.log("lead_type",lead_type.value);
|
// console.log("lead_type",lead_type.value);
|
||||||
|
|
||||||
$('#client_id').empty();
|
$('#client_id').empty();
|
||||||
@ -238,6 +240,7 @@ if (isset($selected_lead_type)) {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
$.each(data, function(index, item) {
|
$.each(data, function(index, item) {
|
||||||
|
if(item.client_type == 1){
|
||||||
var option = $('<option>', {
|
var option = $('<option>', {
|
||||||
value: item.id,
|
value: item.id,
|
||||||
text: item.client_name,
|
text: item.client_name,
|
||||||
@ -248,12 +251,17 @@ if (isset($selected_lead_type)) {
|
|||||||
class: (item.client_type == 1) ? 'group' : (item.client_type == 2) ? 'individual' : ''
|
class: (item.client_type == 1) ? 'group' : (item.client_type == 2) ? 'individual' : ''
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (client_id == item.id) {
|
||||||
|
option.attr('selected', true);
|
||||||
|
}
|
||||||
|
|
||||||
$('#client_id').append(option);
|
$('#client_id').append(option);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function appendBranch(data) {
|
function appendBranch(data, branch_id = null) {
|
||||||
|
|
||||||
$('#client_branch_id').empty();
|
$('#client_branch_id').empty();
|
||||||
|
|
||||||
@ -268,6 +276,11 @@ if (isset($selected_lead_type)) {
|
|||||||
value: item.id,
|
value: item.id,
|
||||||
text: item.branch_name
|
text: item.branch_name
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (branch_id == item.id) {
|
||||||
|
option.attr('selected', true);
|
||||||
|
}
|
||||||
|
|
||||||
$('#client_branch_id').append(option);
|
$('#client_branch_id').append(option);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -334,6 +347,8 @@ if (isset($selected_lead_type)) {
|
|||||||
$("#client_short_name").val(shortName);
|
$("#client_short_name").val(shortName);
|
||||||
|
|
||||||
if (client_id == 'add_client') {
|
if (client_id == 'add_client') {
|
||||||
|
|
||||||
|
$(this).val("").select2();
|
||||||
// alert("Hello");
|
// alert("Hello");
|
||||||
var myModal = new bootstrap.Modal(document.getElementById('upload_enrollment_model'));
|
var myModal = new bootstrap.Modal(document.getElementById('upload_enrollment_model'));
|
||||||
myModal.show();
|
myModal.show();
|
||||||
|
|||||||
312
app/Views/newClientModal-old.php
Normal file
312
app/Views/newClientModal-old.php
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
<!-- Client form content modal-->
|
||||||
|
<div class="modal fade" id="upload_enrollment_model" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" data-backdrop="static">
|
||||||
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title" id="myCenterModalLabel">Add New Client</h4>
|
||||||
|
<button type="button" id="close_btn" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" style="overflow-y: auto;height: 90vh;">
|
||||||
|
<form class="parsley-examples" method="post" id="client_form" enctype="multipart/form-data">
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="client_name">Client Name<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="client_name" name="client_name" required>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="short_name">Client Short name<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="short_name" name="short_name" onkeyup="validateInputForClient(this, 'clients', 'short_name')" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="cost_center">PAN</label>
|
||||||
|
<input type="text" class="form-control" id="pan" placeholder="Enter PAN No" name="pan" onchange="validateInputForClient(this, 'clients', 'pan')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<!-- Client Type -->
|
||||||
|
<div class="form-row clienttypediv" style="display: none;">
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="dob">Date of Birth<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="dob" placeholder="DD/MM/YYYY" name="dob" >
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="cost_center">Mobile<span class="text-danger"></span></label>
|
||||||
|
<input type="text" class="form-control" id="phone" placeholder="Enter Mobile Number" maxlength="10" name="phone"
|
||||||
|
onkeypress="return onlyNumbers(event)" onchange="validateInputForClient(this, 'clients', 'phone')">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="email2">Email<span class="text-danger">*</span></label>
|
||||||
|
<input type="email" class="form-control" id="email2" placeholder="Enter Email" name="email2">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="aadhar">Aadhar</label>
|
||||||
|
<input type="text" class="form-control" id="aadhar" placeholder="Enter Aadher No" name="aadhar" maxlength="12" onchange="validateInputForClient(this, 'clients', 'aadhar')">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- branch -->
|
||||||
|
<div class="form-row branchdiv">
|
||||||
|
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="short_name">Entity Type<span class="text-danger"></span></label>
|
||||||
|
<select class="form-control" id="entity_type_id_for_client" name="entity_type_id">
|
||||||
|
<option value="" selected>Select Entity</option>
|
||||||
|
<?php
|
||||||
|
if (isset($entity) && count($entity)) {
|
||||||
|
foreach ($entity as $key => $value) {
|
||||||
|
echo "<option value=" . $value['id'] . ">" . $value['name'] . "</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="client_name">Branch Name<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="branch_name" name="branch_name" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="branch_code">Branch Code<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="branch_code" name="branch_code" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="branch_code">Name<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="name" name="name" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="branch_code">Mobile<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="mobile" maxlength="10" name="mobile" onkeypress="return onlyNumbers(event)" required>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="email">Email<span class="text-danger">*</span></label>
|
||||||
|
<input type="email" class="form-control" id="email" placeholder="Enter Email" name="email" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="gst">GST<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="gst" placeholder="Enter GST Number" oninput="validateInputForClient(this, 'client_branch', 'gst')"
|
||||||
|
data-parsley-error-message="Invalid GST Number. Example: 12ABCDE1234F5Z6" name="gst" data-parsley-trigger="change" data-parsley-pattern="^\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}[Z]{1}[A-Z\d]{1}$" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="form-group text-right m-b-0" id="hide_smbt_btn">
|
||||||
|
<button type="submit" id="client_add_modal_submit_btn" class="btn btn-primary waves-effect waves-light mr-1 your">Submit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div><!-- /.modal-content -->
|
||||||
|
</div><!-- /.modal-dialog -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let isGSTValidating = false;
|
||||||
|
let isGSTValid = false;
|
||||||
|
|
||||||
|
function validateInputForClient(input, table, field) {
|
||||||
|
|
||||||
|
let owner_type = $('#Owner_type').val();
|
||||||
|
let client_type = $('#client_type').val();
|
||||||
|
|
||||||
|
console.log('owner_type', owner_type);
|
||||||
|
console.log('client_type', client_type);
|
||||||
|
|
||||||
|
if((client_type == 2 || owner_type == 2) && field == 'short_name'){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let value = $(input).val();
|
||||||
|
if (!value) return;
|
||||||
|
|
||||||
|
let label = $(input).closest('.form-group').find('label').text().replace('*', '').trim();
|
||||||
|
let message = label ? label + " already exists!" : "Value is duplicate!";
|
||||||
|
|
||||||
|
// Set validating state
|
||||||
|
isGSTValidating = true;
|
||||||
|
isGSTValid = false;
|
||||||
|
$('#hide_smbt_btn button').prop('disabled', true);
|
||||||
|
|
||||||
|
checkDuplicateTableFieldValue(table, field, value, function(isDuplicate) {
|
||||||
|
isGSTValidating = false;
|
||||||
|
if (isDuplicate) {
|
||||||
|
toastr.warning(message, 'WARNING');
|
||||||
|
// $(input).val('');
|
||||||
|
isGSTValid = false;
|
||||||
|
$('#client_add_modal_submit_btn').prop('disabled', true);
|
||||||
|
} else {
|
||||||
|
isGSTValid = true;
|
||||||
|
$('#client_add_modal_submit_btn').prop('disabled', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#hide_smbt_btn button').prop('disabled', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$("#client_form").submit(function(event) {
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// If GST is currently validating, wait for it to complete
|
||||||
|
if (isGSTValidating) {
|
||||||
|
if($('#Owner_type').val() == 1){
|
||||||
|
toastr.info('Please wait while we validate your GST number...', 'Validating');
|
||||||
|
return;
|
||||||
|
}else if ($('#client_type').val() == 1){
|
||||||
|
toastr.info('Please wait while we validate your GST number...', 'Validating');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If GST validation failed, prevent submission
|
||||||
|
if ($('#gst').val() && !isGSTValid) {
|
||||||
|
toastr.warning('Please fix the GST number before submitting', 'Validation Error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let form_type = $(this).data('id') || 0;
|
||||||
|
|
||||||
|
console.log('onsubmit event', this);
|
||||||
|
console.log('onsubmit event get data value',form_type);
|
||||||
|
console.log('client_type', $('#client_type').val());
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
|
||||||
|
$('#aadhar').attr('data-parsley-required', 'false');
|
||||||
|
$('#aadhar').removeAttr('required');
|
||||||
|
|
||||||
|
if($('#Owner_type').val() == 2){
|
||||||
|
$('#gst').removeAttr('required');
|
||||||
|
}
|
||||||
|
|
||||||
|
var isValid = $('#client_form').parsley().validate();
|
||||||
|
|
||||||
|
if (!isValid) {
|
||||||
|
var emptyFieldIds = [];
|
||||||
|
|
||||||
|
$('#client_form').parsley().fields.forEach(function(field) {
|
||||||
|
if (!field.isValid()) {
|
||||||
|
var elem = field.$element;
|
||||||
|
var id = elem.attr('id') || elem.attr('name');
|
||||||
|
emptyFieldIds.push(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Empty/Invalid Fields:', emptyFieldIds);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
isClientFormSubmitting = true;
|
||||||
|
|
||||||
|
form_action = '<?= base_url("util/createClientWithMinimalData"); ?>';
|
||||||
|
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
var client_type = $('#client_type').val() || $('#Owner_type').val() || 1;
|
||||||
|
console.log('client_type:', client_type);
|
||||||
|
|
||||||
|
//FORM Data
|
||||||
|
var formData = new FormData($('#client_form')[0]);
|
||||||
|
formData.append('client_type', client_type);
|
||||||
|
console.log("formData : ",formData);
|
||||||
|
// return
|
||||||
|
$.ajax({
|
||||||
|
data:formData,
|
||||||
|
url: form_action,
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'json',
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success: function(res) {
|
||||||
|
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
|
console.log('create_Client_With_Minimal_Data', res)
|
||||||
|
|
||||||
|
if(res.status == true){
|
||||||
|
getClientAndBranchAndPolicy(res.client_id, res.branch_id);
|
||||||
|
|
||||||
|
if(form_type != 1){
|
||||||
|
|
||||||
|
setTimeout(function(){
|
||||||
|
|
||||||
|
$('#client_id').val(res.client_id).change();
|
||||||
|
$('#client_id').prepend($('<option>', {
|
||||||
|
value: 'add_client',
|
||||||
|
text: '+ Add Client'
|
||||||
|
}));
|
||||||
|
|
||||||
|
setTimeout(function(){
|
||||||
|
|
||||||
|
$('#client_branch_id').val(res.branch_id).change();
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
|
}, 3000)
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
console.log("Couldn't Add Client","Error");
|
||||||
|
}
|
||||||
|
|
||||||
|
toastr.success(res.message, 'Success');
|
||||||
|
|
||||||
|
}else{
|
||||||
|
toastr.error(res.message, 'Error');
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#client_form')[0].reset();
|
||||||
|
$('.close').click();
|
||||||
|
|
||||||
|
if(form_type == 1){
|
||||||
|
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('vehicle_modal'));
|
||||||
|
myModal.show();
|
||||||
|
|
||||||
|
$('#client_form').removeAttr('data-id');
|
||||||
|
|
||||||
|
// Load form data into #vehicle_form from localStorage
|
||||||
|
setFormDataFromLocalStorage("#vehicle_form", "vehicleFormData", res.client_id);
|
||||||
|
|
||||||
|
setTimeout(function(){
|
||||||
|
$('#owner').val(res.client_id).change();
|
||||||
|
$('#owner_branch').val(res.branch_id).change();
|
||||||
|
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
|
||||||
|
isClientFormSubmitting = false;
|
||||||
|
},
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
console.error(xhr.responseText);
|
||||||
|
console.error(status, error);
|
||||||
|
isClientFormSubmitting = false;
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -57,7 +57,7 @@
|
|||||||
<div class="form-row branchdiv">
|
<div class="form-row branchdiv">
|
||||||
|
|
||||||
<div class="form-group col-md-12">
|
<div class="form-group col-md-12">
|
||||||
<label for="short_name">Entity Type<span class="text-danger">*</span></label>
|
<label for="short_name">Entity Type<span class="text-danger"></span></label>
|
||||||
<select class="form-control" id="entity_type_id_for_client" name="entity_type_id">
|
<select class="form-control" id="entity_type_id_for_client" name="entity_type_id">
|
||||||
<option value="" selected>Select Entity</option>
|
<option value="" selected>Select Entity</option>
|
||||||
<?php
|
<?php
|
||||||
@ -72,22 +72,22 @@
|
|||||||
|
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label for="client_name">Branch Name<span class="text-danger">*</span></label>
|
<label for="client_name">Branch Name<span class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="branch_name" name="branch_name">
|
<input type="text" class="form-control" id="branch_name" name="branch_name" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label for="branch_code">Branch Code<span class="text-danger">*</span></label>
|
<label for="branch_code">Branch Code<span class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="branch_code" name="branch_code">
|
<input type="text" class="form-control" id="branch_code" name="branch_code" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label for="branch_code">Name<span class="text-danger">*</span></label>
|
<label for="branch_code">Name<span class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="name" name="name">
|
<input type="text" class="form-control" id="name" name="name" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label for="branch_code">Mobile<span class="text-danger"></span></label>
|
<label for="branch_code">Mobile<span class="text-danger">*</span></label>
|
||||||
<input type="text" class="form-control" id="mobile" maxlength="10" name="mobile" onkeypress="return onlyNumbers(event)">
|
<input type="text" class="form-control" id="mobile" maxlength="10" name="mobile" onkeypress="return onlyNumbers(event)" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-12">
|
<div class="form-group col-md-12">
|
||||||
<label for="email">Email<span class="text-danger">*</span></label>
|
<label for="email">Email<span class="text-danger">*</span></label>
|
||||||
@ -113,6 +113,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
let isGSTValidating = false;
|
let isGSTValidating = false;
|
||||||
let isGSTValid = false;
|
let isGSTValid = false;
|
||||||
|
|
||||||
@ -155,8 +156,6 @@
|
|||||||
$('#hide_smbt_btn button').prop('disabled', false);
|
$('#hide_smbt_btn button').prop('disabled', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$("#client_form").submit(function(event) {
|
$("#client_form").submit(function(event) {
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@ -224,7 +223,7 @@
|
|||||||
//FORM Data
|
//FORM Data
|
||||||
var formData = new FormData($('#client_form')[0]);
|
var formData = new FormData($('#client_form')[0]);
|
||||||
formData.append('client_type', client_type);
|
formData.append('client_type', client_type);
|
||||||
console.log("formData : ",formData);
|
|
||||||
// return
|
// return
|
||||||
$.ajax({
|
$.ajax({
|
||||||
data:formData,
|
data:formData,
|
||||||
@ -235,37 +234,38 @@
|
|||||||
contentType: false,
|
contentType: false,
|
||||||
success: function(res) {
|
success: function(res) {
|
||||||
|
|
||||||
$('.loader').fadeOut();
|
|
||||||
$('.loader-mask').delay(350).fadeOut('slow');
|
|
||||||
|
|
||||||
console.log('create_Client_With_Minimal_Data', res)
|
console.log('create_Client_With_Minimal_Data', res)
|
||||||
|
|
||||||
if(res.status == true){
|
if(res.status == true){
|
||||||
getClientAndBranchAndPolicy(res.client_id, res.branch_id);
|
|
||||||
|
|
||||||
if(form_type != 1){
|
getClientAndBranchAndPolicy(false);
|
||||||
|
|
||||||
setTimeout(function(){
|
appendClients(res.clients, res.client_id);
|
||||||
|
appendBranch(res.branches, res.branch_id);
|
||||||
|
|
||||||
$('#client_id').val(res.client_id).change();
|
$('#gst').val(res.data.gst);
|
||||||
$('#client_id').prepend($('<option>', {
|
$('#branch_name').val(res.data.branch_name);
|
||||||
value: 'add_client',
|
$('#branch_code').val(res.data.branch_code);
|
||||||
text: '+ Add Client'
|
$('#contact_person_mobile').val(res.data.mobile);
|
||||||
|
$('#contact_person_email').val(res.data.email);
|
||||||
|
|
||||||
|
$('#contact_person_summary').empty();
|
||||||
|
$('#contact_person_summary').append($('<option>', {
|
||||||
|
value: "",
|
||||||
|
text: "Select a Contact"
|
||||||
}));
|
}));
|
||||||
|
|
||||||
setTimeout(function(){
|
if (res.data.name && res.data.email) {
|
||||||
|
|
||||||
$('#client_branch_id').val(res.branch_id).change();
|
// let display_value = `${res.data.name} - ${res.data.email} - ${res.data.mobile}`;
|
||||||
$('.loader').fadeOut();
|
let display_value = res.data.name;
|
||||||
$('.loader-mask').delay(350).fadeOut('slow');
|
|
||||||
|
|
||||||
}, 1000)
|
$('#contact_person_summary').append($('<option>', {
|
||||||
|
value: 0, // index or key in array/object
|
||||||
|
text: display_value,
|
||||||
|
selected: true
|
||||||
|
}));
|
||||||
|
|
||||||
}, 3000)
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
console.log("Couldn't Add Client","Error");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toastr.success(res.message, 'Success');
|
toastr.success(res.message, 'Success');
|
||||||
@ -277,26 +277,9 @@
|
|||||||
$('#client_form')[0].reset();
|
$('#client_form')[0].reset();
|
||||||
$('.close').click();
|
$('.close').click();
|
||||||
|
|
||||||
if(form_type == 1){
|
|
||||||
|
|
||||||
var myModal = new bootstrap.Modal(document.getElementById('vehicle_modal'));
|
|
||||||
myModal.show();
|
|
||||||
|
|
||||||
$('#client_form').removeAttr('data-id');
|
|
||||||
|
|
||||||
// Load form data into #vehicle_form from localStorage
|
|
||||||
setFormDataFromLocalStorage("#vehicle_form", "vehicleFormData", res.client_id);
|
|
||||||
|
|
||||||
setTimeout(function(){
|
|
||||||
$('#owner').val(res.client_id).change();
|
|
||||||
$('#owner_branch').val(res.branch_id).change();
|
|
||||||
|
|
||||||
$('.loader').fadeOut();
|
$('.loader').fadeOut();
|
||||||
$('.loader-mask').delay(350).fadeOut('slow');
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
}, 2000)
|
|
||||||
}
|
|
||||||
|
|
||||||
isClientFormSubmitting = false;
|
isClientFormSubmitting = false;
|
||||||
},
|
},
|
||||||
error: function (xhr, status, error) {
|
error: function (xhr, status, error) {
|
||||||
|
|||||||
@ -339,6 +339,7 @@
|
|||||||
<?php } ?>
|
<?php } ?>
|
||||||
<button id="submitPlacement" class="btn btn-primary" onclick="checkTheTableDataChanged(6)">Placement</button>
|
<button id="submitPlacement" class="btn btn-primary" onclick="checkTheTableDataChanged(6)">Placement</button>
|
||||||
<button id="viewDemography" class="btn btn-primary" onclick="viewDemography()">Demography</button>
|
<button id="viewDemography" class="btn btn-primary" onclick="viewDemography()">Demography</button>
|
||||||
|
<button id="viewDocs" class="btn btn-primary" onclick="viewDocs()">Docs</button>
|
||||||
<input type="hidden" id="lead_id" name="lead_id" value="<?= isset($lead_id) ? $lead_id : '' ?>">
|
<input type="hidden" id="lead_id" name="lead_id" value="<?= isset($lead_id) ? $lead_id : '' ?>">
|
||||||
<input type="hidden" id="rfq_primaryKey" name="rfq_primaryKey" value="<?= isset($rfq_data['id']) ? $rfq_data['id'] : '' ?>">
|
<input type="hidden" id="rfq_primaryKey" name="rfq_primaryKey" value="<?= isset($rfq_data['id']) ? $rfq_data['id'] : '' ?>">
|
||||||
<input type="hidden" id="qcr_count" value="<?= isset($qcr_count) ? $qcr_count : 0 ?>">
|
<input type="hidden" id="qcr_count" value="<?= isset($qcr_count) ? $qcr_count : 0 ?>">
|
||||||
@ -492,7 +493,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="form-group" id="insurer_or_clinet_mail_attachment">
|
<div class="form-group" id="insurer_or_clinet_mail_attachment">
|
||||||
<div class="form-row" >
|
<div class="form-row attachmet_row">
|
||||||
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -565,7 +566,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="form-group" id="internal_mail_attachment">
|
<div class="form-group" id="internal_mail_attachment">
|
||||||
<div class="form-row" >
|
<div class="form-row attachmet_row">
|
||||||
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -600,6 +601,22 @@
|
|||||||
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
|
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label for="tpa">TPA <span class="text-danger"></span></label>
|
||||||
|
<select class="form-control" id="tpa_id" name="tpa">
|
||||||
|
<option value="">Select TPA</option>
|
||||||
|
<?php if (isset($tpa_list)) {
|
||||||
|
$tpa_id = isset($lead_data['tpa_id']) ? $lead_data['tpa_id'] : "";
|
||||||
|
$tpa_branch_id = isset($lead_data['tpa_branch_id']) ? $lead_data['tpa_branch_id'] : "";
|
||||||
|
foreach ($tpa_list as $value) { ?>
|
||||||
|
<option value="<?= $value['id'] . '-' . $value['tpa_id'] ?>"
|
||||||
|
<?= ($tpa_id == $value['tpa_id'] && $tpa_branch_id == $value['id']) ? 'selected' : '' ?>>
|
||||||
|
<?= $value['tpa_short_name'] . '-' . $value['branch_code'] ?>
|
||||||
|
</option>
|
||||||
|
<?php } } ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="policy_start_date">Policy Start Date</label>
|
<label for="policy_start_date">Policy Start Date</label>
|
||||||
<input type="text" class="form-control" id="policy_start_date" name="policy_start_date" placeholder="DD/MM/YYY" value="<?= isset($lead_data['policy_start_date']) ? date('d-m-Y', strtotime($lead_data['policy_start_date'])) : "" ?>">
|
<input type="text" class="form-control" id="policy_start_date" name="policy_start_date" placeholder="DD/MM/YYY" value="<?= isset($lead_data['policy_start_date']) ? date('d-m-Y', strtotime($lead_data['policy_start_date'])) : "" ?>">
|
||||||
@ -617,15 +634,15 @@
|
|||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="is_cd_switch">CD Entry</label>
|
<label for="is_cd_switch">CD Entry</label>
|
||||||
<input id="is_cd_switch" type="checkbox" name = "is_cd" value = "1" data-toggle="toggle" data-on="With CD" data-off="Without CD" data-onstyle="info" data-offstyle="primary" data-style="border" data-width="218" <?= isset($lead_data['is_cd']) && $lead_data['is_cd'] != 1 ? '' : 'checked' ?>>
|
<input id="is_cd_switch" type="checkbox" name = "is_cd" value = "1" data-toggle="toggle" data-on="With CD" data-off="Without CD" data-onstyle="info" data-offstyle="primary" data-style="border" data-width="219" <?= isset($lead_data['is_cd']) && $lead_data['is_cd'] != 1 ? '' : 'checked' ?>>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="premium_amount">Premium Amount</label>
|
<label for="premium_amount">Pre Amount include GST</label>
|
||||||
<input type="text" class="form-control" id="premium_amount" name="premium_amount" placeholder="Enter Premium Amount" value="<?= isset($lead_data['premium_amount']) ? $lead_data['premium_amount'] : "" ?>">
|
<input type="text" class="form-control" id="premium_amount" name="premium_amount" placeholder="Enter Premium Amount" value="<?= isset($lead_data['premium_amount']) ? $lead_data['premium_amount'] : "" ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if (isset($lead_data['is_cd']) && $lead_data['is_cd'] == 1 || !isset($lead_data['is_cd'])) { ?>
|
<?php if (isset($lead_data['is_cd']) && $lead_data['is_cd'] == 1 || !isset($lead_data['is_cd']) || $lead_data['is_cd'] == null) { ?>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="cd_amount">CD Amount</label>
|
<label for="cd_amount">CD Amount</label>
|
||||||
@ -706,6 +723,22 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="acm_id">Account Manager</label>
|
||||||
|
<select class="form-control" id="acm_id" name="acm_id" required>
|
||||||
|
<option value="">Select Account Manager Mail</option>
|
||||||
|
<?php if (isset($account_manager)) { ?>
|
||||||
|
<?= $acm_id = isset($lead_data['acm_id']) ? $lead_data['acm_id'] : ""; ?>
|
||||||
|
<?php foreach ($account_manager as $user) { ?>
|
||||||
|
<option value="<?= $user['email'];?>" data-id="<?= $user['id'] ?>"
|
||||||
|
<?= ($acm_id == $user['id']) ? 'selected' : '' ?>>
|
||||||
|
<?= $user['first_name'].' - '.$user['email'];?>
|
||||||
|
</option>
|
||||||
|
<?php } ?>
|
||||||
|
<?php } ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-12">
|
<div class="form-group col-md-12">
|
||||||
<label for="subject">Subject</label>
|
<label for="subject">Subject</label>
|
||||||
<input type="text" class="form-control" id="placement_subject" name="placement_subject" value="<?= isset($placement_subject) ? $placement_subject : " " ?>" placeholder="Enter Subject">
|
<input type="text" class="form-control" id="placement_subject" name="placement_subject" value="<?= isset($placement_subject) ? $placement_subject : " " ?>" placeholder="Enter Subject">
|
||||||
@ -727,7 +760,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="form-group" id="placement_mail_attachment">
|
<div class="form-group" id="placement_mail_attachment">
|
||||||
<div class="form-row" >
|
<div class="form-row attachmet_row" >
|
||||||
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -741,7 +774,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal -->
|
</div><!-- /.modal -->
|
||||||
|
|
||||||
<!-- Modal content for View Demography Mail -->
|
<!-- Modal content for View Demography Modal -->
|
||||||
<div class="modal fade" id="view_demography_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
<div class="modal fade" id="view_demography_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||||||
aria-hidden="false">
|
aria-hidden="false">
|
||||||
<div class="modal-dialog modal-full-width">
|
<div class="modal-dialog modal-full-width">
|
||||||
@ -765,6 +798,31 @@
|
|||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal -->
|
</div><!-- /.modal -->
|
||||||
|
|
||||||
|
<!-- Modal content for Other Docs Upload Modal -->
|
||||||
|
<div class="modal fade" id="other_docs_upload_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||||||
|
aria-hidden="false">
|
||||||
|
<div class="modal-dialog modal-full-width">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title" id="docsCenterModalLabel">Documents</h4>
|
||||||
|
<button type="button" id="close_btn" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form id="multiFileForm" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="lead_id" value="<?= isset($lead_id) ? $lead_id : '' ?>">
|
||||||
|
<input type="hidden" name="lead_form_type" value="1">
|
||||||
|
<div id="multiFileAppendArea">
|
||||||
|
<?php echo isset($multi_file_data_html) && !empty($multi_file_data_html) ? $multi_file_data_html : ''; ?>
|
||||||
|
</div>
|
||||||
|
<div class="form-group text-right m-b-0 mt-3">
|
||||||
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div><!-- /.modal-content -->
|
||||||
|
</div>
|
||||||
|
</div><!-- /.modal -->
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
var isFormDataModified = false;
|
var isFormDataModified = false;
|
||||||
@ -948,6 +1006,8 @@
|
|||||||
placeholder: 'Select CC Mail',
|
placeholder: 'Select CC Mail',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#acm_id').select2();
|
||||||
|
|
||||||
$('#proposals').select2({
|
$('#proposals').select2({
|
||||||
placeholder: 'Select proposal',
|
placeholder: 'Select proposal',
|
||||||
});
|
});
|
||||||
@ -1031,6 +1091,11 @@ $(document).ready(function () {
|
|||||||
} else {
|
} else {
|
||||||
console.log("Lead status is 'won', submitData will not be called");
|
console.log("Lead status is 'won', submitData will not be called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<?php if (!isset($multi_file_data_html) || empty($multi_file_data_html)) : ?>
|
||||||
|
addFileField();
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function startInterval() {
|
function startInterval() {
|
||||||
@ -3964,8 +4029,10 @@ function constructURL_ForPlacementMailSend() {
|
|||||||
let insurer_and_branch = $('#proposals').val();
|
let insurer_and_branch = $('#proposals').val();
|
||||||
let cc = $('#placement_cc').val();
|
let cc = $('#placement_cc').val();
|
||||||
let no_of_installment = $('#no_of_installment').val();
|
let no_of_installment = $('#no_of_installment').val();
|
||||||
|
let tpa_id = $('#tpa_id').val();
|
||||||
|
let acm_email = $('#acm_id').val();
|
||||||
|
let acm_pk = $('#acm_id option:selected').data('id');
|
||||||
let is_installment = $("#is_installment_switch").is(":checked") ? 1 : 0;
|
let is_installment = $("#is_installment_switch").is(":checked") ? 1 : 0;
|
||||||
console.log("cc1", cc);
|
|
||||||
|
|
||||||
// Process `to` field
|
// Process `to` field
|
||||||
to = to.split(',').map(email => email.trim());
|
to = to.split(',').map(email => email.trim());
|
||||||
@ -4025,6 +4092,9 @@ function constructURL_ForPlacementMailSend() {
|
|||||||
formData.append('installments', JSON.stringify(data));
|
formData.append('installments', JSON.stringify(data));
|
||||||
formData.append('no_of_installment', no_of_installment);
|
formData.append('no_of_installment', no_of_installment);
|
||||||
formData.append('is_installment', is_installment);
|
formData.append('is_installment', is_installment);
|
||||||
|
formData.append('tpa_id', tpa_id);
|
||||||
|
formData.append('acm_email', acm_email);
|
||||||
|
formData.append('acm_pk', acm_pk);
|
||||||
|
|
||||||
|
|
||||||
ajaxRequest(formData);
|
ajaxRequest(formData);
|
||||||
@ -6806,6 +6876,12 @@ function appendMultiFileData(data) {
|
|||||||
myModal.show();
|
myModal.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function viewDocs(){
|
||||||
|
// Show the modal
|
||||||
|
const myModal = new bootstrap.Modal(document.getElementById('other_docs_upload_modal'));
|
||||||
|
myModal.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -6820,3 +6896,177 @@ function appendMultiFileData(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
let fileIndex = 1;
|
||||||
|
function addFileField() {
|
||||||
|
|
||||||
|
console.log('addFileField function called');
|
||||||
|
|
||||||
|
const container = document.getElementById('multiFileAppendArea');
|
||||||
|
if (!container) return;
|
||||||
|
|
||||||
|
const div = document.createElement("div");
|
||||||
|
div.className = "form-row d-flex align-items-end";
|
||||||
|
div.setAttribute("id", `fileField_${fileIndex}`);
|
||||||
|
|
||||||
|
let isFirstField = container.childElementCount === 0; // Check if it's the first field
|
||||||
|
let placeholder = isFirstField ? 'First file must be Demography.' : '';
|
||||||
|
let accept = isFirstField ? '.xls,.xlsx' : '';
|
||||||
|
|
||||||
|
|
||||||
|
if(isFirstField == 1){
|
||||||
|
placeholder = '';
|
||||||
|
accept = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
let sample_dwn_link = "";
|
||||||
|
if(isFirstField == 1){
|
||||||
|
sample_dwn_link = ' [ <a href="<?= base_url("util/download-excel/member_data"); ?>" id="excel_download" data-toggle="tooltip" data-placement="top" title="Download Sample Excel">Sample Excel</a> ]';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.innerHTML = `
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Document Name ${sample_dwn_link}<span class="text-danger"></span></label>
|
||||||
|
<input type="text" class="form-control" name="docs_name[]" placeholder="${placeholder}">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>File Upload<span class="text-danger"></span></label>
|
||||||
|
<input type="file" class="form-control" id="file_name_${fileIndex}" name="file_name[]" accept="${accept}">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2" style="position: relative; bottom: 16px;">
|
||||||
|
<button type="button" class="btn btn-danger" onclick="removeFileField(${fileIndex})">x</button>
|
||||||
|
<button type="button" class="btn btn-primary" onclick="addFileField()">+</button>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
container.appendChild(div);
|
||||||
|
fileIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeFileField(index, lead_file_id = null) {
|
||||||
|
|
||||||
|
if(index == 1){
|
||||||
|
toastr.warning("You can't remove the first file field", 'WARNING');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lead_file_id != null) {
|
||||||
|
|
||||||
|
Swal.fire({
|
||||||
|
title: "Do you want to remove this file?",
|
||||||
|
// text: "Do you want Save this!",
|
||||||
|
icon: "warning",
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: "#3085d6",
|
||||||
|
cancelButtonColor: "#d33",
|
||||||
|
confirmButtonText: "Yes, Procced!"
|
||||||
|
}).then((result) => {
|
||||||
|
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
|
||||||
|
let url = '<?= base_url('util/removeMultiFile') ?>';
|
||||||
|
|
||||||
|
let requestData = {
|
||||||
|
lead_file_id: lead_file_id
|
||||||
|
};
|
||||||
|
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
// Send AJAX request
|
||||||
|
sendAjaxRequestForGlobal(url, 'GET', requestData, function(response) {
|
||||||
|
console.log('Data fetched successfully:', response);
|
||||||
|
|
||||||
|
if (response.status == true) {
|
||||||
|
toastr.success(response.message, 'SUCCESS');
|
||||||
|
|
||||||
|
//remove the file field
|
||||||
|
const field = document.getElementById(`fileField_${index}`);
|
||||||
|
if(index != 1){
|
||||||
|
if (field) field.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
toastr.error(response.message, 'WARNING');
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
|
}, function(xhr, status, error) {
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
console.error('Error fetching data:', error);
|
||||||
|
console.error(xhr.responseText);
|
||||||
|
toastr.error('An error occurred while checking the CD amount.', 'ERROR');
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
const field = document.getElementById(`fileField_${index}`);
|
||||||
|
if(index != 1){
|
||||||
|
if (field) field.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function showFileName(input, index) {
|
||||||
|
if (input.files.length > 0) {
|
||||||
|
document.getElementById(`file_name_display_${index}`).textContent = input.files[0].name;
|
||||||
|
} else {
|
||||||
|
document.getElementById(`file_name_display_${index}`).textContent = "No file chosen";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submit form
|
||||||
|
$("#multiFileForm").on("submit", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
let formData = new FormData(this);
|
||||||
|
|
||||||
|
// Show loader
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('util/uploadMultiFileFromRfq'); ?>",
|
||||||
|
type: "POST",
|
||||||
|
data: formData,
|
||||||
|
contentType: false,
|
||||||
|
processData: false,
|
||||||
|
success: function (res) {
|
||||||
|
|
||||||
|
console.log('uploadMultiFileFromRfq reponse', res);
|
||||||
|
|
||||||
|
if(res.status == true){
|
||||||
|
toastr.success(res.message, 'SUCCESS');
|
||||||
|
$('#multiFileAppendArea').empty();
|
||||||
|
$('.attachmet_row').empty();
|
||||||
|
$('#multiFileAppendArea').append(res.document_data);
|
||||||
|
$('.attachmet_row').html(res.attachment_html);
|
||||||
|
}else{
|
||||||
|
toastr.warning(res.message, 'WARNING');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
$('.close').click();
|
||||||
|
|
||||||
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
console.error("Upload error:", xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
public/sample_excel/Sample_Member_Data_1.xlsx
Normal file
BIN
public/sample_excel/Sample_Member_Data_1.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user