FEAT_INTRODUCE_SAVE_BUTTON_FOR_PLACEMENTDATA
This commit is contained in:
parent
c347e08538
commit
90ca29b748
@ -447,6 +447,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
|
||||
$routes->get('downloadFullMemberDataExcelErrorFile/(:any)', 'LeadsController::downloadFullMemberDataExcelErrorFile/$1');
|
||||
$routes->get('getMemberDataExcelFileErrors', 'LeadsController::getMemberDataExcelFileErrors');
|
||||
$routes->post('savePlacementDataAndValidateMemberDataFile', 'LeadsController::savePlacementDataAndValidateMemberDataFile');
|
||||
$routes->post('savePlacementDataWithoutMail', 'LeadsController::savePlacementDataWithoutMail');
|
||||
$routes->get('checkMemberDataFileValidationStatus', 'LeadsController::checkMemberDataFileValidationStatus');
|
||||
$routes->match(['get', 'post', 'delete'], 'nhanceBranchMaster', 'MasterController::nhanceBranchMaster');
|
||||
$routes->match(['get', 'post', 'delete'], 'vehicleTypeMaster', 'MasterController::vehicleTypeMaster');
|
||||
|
||||
@ -8326,6 +8326,105 @@ class LeadsController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
public function savePlacementDataWithoutMail()
|
||||
{
|
||||
try {
|
||||
$params = $this->request->getPost();
|
||||
|
||||
if (empty($params['lead_id'])) {
|
||||
return $this->respond([
|
||||
'status' => false,
|
||||
'code' => 400,
|
||||
'message' => 'Opportunity ID is required',
|
||||
], 400);
|
||||
}
|
||||
|
||||
$lead_id = $params['lead_id'];
|
||||
$lead_data = $this->leadsModel->where('id', $lead_id)->first();
|
||||
|
||||
if (! $lead_data) {
|
||||
return $this->respond([
|
||||
'status' => false,
|
||||
'code' => 404,
|
||||
'message' => 'Lead not found',
|
||||
], 404);
|
||||
}
|
||||
|
||||
$data = [
|
||||
'placement_date' => ! empty($params['placement_date']) ? change_date_format($params['placement_date']) : null,
|
||||
'payment_date' => ! empty($params['payment_date']) ? change_date_format($params['payment_date']) : null,
|
||||
'utr_no' => $params['utr_no'] ?? null,
|
||||
'is_cd' => $params['is_cd'] ?? null,
|
||||
'premium_amount' => $params['premium_amount'] ?? null,
|
||||
'total_amount' => $params['total_amount'] ?? null,
|
||||
'cd_amount' => $params['cd_amount'] ?? null,
|
||||
'no_of_installment' => $params['no_of_installment'] ?? null,
|
||||
'is_installment' => $params['is_installment'] ?? null,
|
||||
'agreed_percentage' => $params['agreed_percentage'] ?? null,
|
||||
];
|
||||
|
||||
if (! empty($params['acm_pk'])) {
|
||||
$data['acm_id'] = $params['acm_pk'];
|
||||
}
|
||||
|
||||
if (! empty($params['policy_start_date'])) {
|
||||
$converted_start = change_date_format($params['policy_start_date']);
|
||||
if ($converted_start !== $lead_data['policy_start_date']) {
|
||||
$data['policy_start_date'] = $converted_start;
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($params['policy_end_date'])) {
|
||||
$converted_end = change_date_format($params['policy_end_date']);
|
||||
if ($converted_end !== $lead_data['policy_end_date']) {
|
||||
$data['policy_end_date'] = $converted_end;
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($params['tpa_id']) && strpos($params['tpa_id'], '-') !== false) {
|
||||
list($tpaBranchId, $tpaId) = explode('-', $params['tpa_id']);
|
||||
$data['tpa_branch_id'] = $tpaBranchId;
|
||||
$data['tpa_id'] = $tpaId;
|
||||
}
|
||||
|
||||
$this->leadsModel->update($lead_id, $data);
|
||||
|
||||
if (! empty($params['installments'])) {
|
||||
$installments = json_decode($params['installments'], true);
|
||||
|
||||
if (is_array($installments) && ! empty($installments)) {
|
||||
foreach ($installments as $installment) {
|
||||
$installment['payment_date'] = ! empty($installment['payment_date']) && strtotime($installment['payment_date'])
|
||||
? date('Y-m-d', strtotime($installment['payment_date']))
|
||||
: null;
|
||||
|
||||
$installment['lead_id'] = $lead_id;
|
||||
|
||||
if (! empty($installment['id'])) {
|
||||
$this->leadInstallmentPaymentDetails->update($installment['id'], $installment);
|
||||
} else {
|
||||
$this->leadInstallmentPaymentDetails->insert($installment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->respond([
|
||||
'status' => true,
|
||||
'code' => 200,
|
||||
'message' => 'Placement data saved successfully',
|
||||
'lead_id' => $lead_id,
|
||||
], 200);
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond([
|
||||
'status' => false,
|
||||
'code' => 500,
|
||||
'message' => 'Error while saving placement data',
|
||||
'error' => $e->getMessage(),
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function checkMemberDataFileValidationStatus()
|
||||
{
|
||||
$lead_id = $this->request->getVar('lead_id');
|
||||
|
||||
@ -115,6 +115,21 @@ class BdsPlacementModel extends Model
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function addBusinessDays(int $days, ?string $fromDate = null): string
|
||||
{
|
||||
$date = new \DateTime($fromDate ?? 'today');
|
||||
$added = 0;
|
||||
|
||||
while ($added < $days) {
|
||||
$date->modify('+1 day');
|
||||
if ((int) $date->format('N') < 6) {
|
||||
$added++;
|
||||
}
|
||||
}
|
||||
|
||||
return $date->format('Y-m-d');
|
||||
}
|
||||
|
||||
public function getLeadInstallmentDetails()
|
||||
{
|
||||
$heads = $this->db->table('user_profiles')
|
||||
@ -139,7 +154,7 @@ class BdsPlacementModel extends Model
|
||||
->join("client_policy cp", "cp.id = leads.source_policy_id", "left")
|
||||
->where("lipd.is_active", 1)
|
||||
->where("lipd.utr_no IS NULL")
|
||||
->where("lipd.payment_date", date('Y-m-d', strtotime('+15 days')));
|
||||
->where("lipd.payment_date", $this->addBusinessDays(5));
|
||||
|
||||
$data = $builder->get()->getResultArray();
|
||||
|
||||
|
||||
@ -962,8 +962,14 @@
|
||||
<div id="installment_form_row">
|
||||
<?= isset($lead_data['is_installment']) && $lead_data['is_installment'] == 1 && isset($lead_data['installment_data']) && !empty($lead_data['installment_data']) ? $lead_data['installment_data'] : '' ?>
|
||||
</div>
|
||||
|
||||
<div id="placement_mail_section">
|
||||
<hr>
|
||||
|
||||
<div class="form-group text-right m-b-0" id="save_placement_btn">
|
||||
<button type="button" class="btn btn-success" onclick="savePlacementDataWithoutMail()">Save</button>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
|
||||
<div class="form-group col-md-6">
|
||||
@ -1018,6 +1024,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
@ -1026,8 +1033,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<h4>Attachments Files</h4>
|
||||
<hr>
|
||||
@ -1037,6 +1042,7 @@
|
||||
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group text-right m-b-0" id="send_mail_btn">
|
||||
<button type="submit" class="btn btn-primary" onclick="constructURL(3)">Send Mail</button>
|
||||
@ -7560,6 +7566,107 @@ function appendMultiFileData(data) {
|
||||
}
|
||||
}
|
||||
|
||||
function constructPlacementDataPayload() {
|
||||
var lead_id = $('#lead_id').val();
|
||||
let placement_date = $('#placement_date').val();
|
||||
let policy_end_date = $('#policy_end_date').val();
|
||||
let policy_start_date = $('#policy_start_date').val();
|
||||
let payment_date = $('#payment_date').val();
|
||||
let is_cd = $("#is_cd_switch").is(":checked") ? 1 : 0;
|
||||
let utr_no = $('#utr_no').val();
|
||||
let premium_amount = $('#premium_amount').val();
|
||||
let agreed_percentage = $('#agreed_percentage').val();
|
||||
let total_amount = $('#total_amount').val();
|
||||
let cd_amount = $('#cd_amount').val();
|
||||
let no_of_installment = $('#no_of_installment').val();
|
||||
let tpa_id = $('#tpa_id').val();
|
||||
let acm_pk = $('#acm_id option:selected').data('id');
|
||||
let is_installment = $("#is_installment_switch").is(":checked") ? 1 : 0;
|
||||
|
||||
if (!policy_start_date) {
|
||||
toastr.warning('Policy Start Date is required.', 'Warning');
|
||||
$('#policy_start_date').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!policy_end_date) {
|
||||
toastr.warning('Policy End Date is required.', 'Warning');
|
||||
$('#policy_end_date').focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
let installments = [];
|
||||
|
||||
$('#installment_form_row .form-row').each(function () {
|
||||
let installment_amount = $(this).find('input[name="installment_amount[]"]').val();
|
||||
let installment_payment_date = $(this).find('input[name="payment_date[]"]').val();
|
||||
let installment_utr_no = $(this).find('input[name="utr_no[]"]').val();
|
||||
let id = $(this).find('input[name="installment_primary_key[]"]').val();
|
||||
|
||||
let obj = {
|
||||
lead_id: lead_id,
|
||||
installment_amount: installment_amount,
|
||||
payment_date: installment_payment_date,
|
||||
utr_no: installment_utr_no
|
||||
};
|
||||
|
||||
if (id != undefined && id != null && id != '') {
|
||||
obj.id = id;
|
||||
}
|
||||
|
||||
installments.push(obj);
|
||||
});
|
||||
|
||||
return {
|
||||
lead_id: lead_id,
|
||||
placement_date: placement_date,
|
||||
payment_date: payment_date,
|
||||
policy_end_date: policy_end_date,
|
||||
policy_start_date: policy_start_date,
|
||||
is_cd: is_cd,
|
||||
utr_no: utr_no,
|
||||
premium_amount: premium_amount,
|
||||
total_amount: total_amount,
|
||||
cd_amount: cd_amount,
|
||||
no_of_installment: no_of_installment,
|
||||
is_installment: is_installment,
|
||||
tpa_id: tpa_id,
|
||||
acm_pk: acm_pk,
|
||||
agreed_percentage: agreed_percentage,
|
||||
installments: JSON.stringify(installments),
|
||||
};
|
||||
}
|
||||
|
||||
function savePlacementDataWithoutMail() {
|
||||
let url = '<?= base_url('util/savePlacementDataWithoutMail') ?>';
|
||||
let requestData = constructPlacementDataPayload();
|
||||
|
||||
if (requestData === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$('.loader').fadeIn();
|
||||
$('.loader-mask').fadeIn();
|
||||
|
||||
sendAjaxRequestForGlobal(url, 'POST', requestData, function(res) {
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
|
||||
if (res.status == true) {
|
||||
toastr.success(res.message, 'Success');
|
||||
$('.close').click();
|
||||
} else {
|
||||
toastr.warning(res.message || 'Failed to save placement data', 'Warning');
|
||||
}
|
||||
}, function(xhr, status, error) {
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
console.error('Error saving placement data:', error);
|
||||
console.error(xhr.responseText);
|
||||
toastr.error('An error occurred while saving placement data.', 'Error');
|
||||
});
|
||||
}
|
||||
|
||||
function savePlacementDataAndValidateMemberDataFile(){
|
||||
|
||||
let url = '<?= base_url('util/savePlacementDataAndValidateMemberDataFile') ?>';
|
||||
@ -7719,6 +7826,8 @@ function appendMultiFileData(data) {
|
||||
}
|
||||
|
||||
function toggleButtons(status) {
|
||||
$("#save_placement_btn").show();
|
||||
|
||||
if (status === "failed") {
|
||||
$("#send_mail_btn").hide();
|
||||
$("#validate_file_btn").show();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user