(function (s, u) {
s.add({
saveMotorUnderwriting: function(data, success, error) {
u.post(this.host + "/api/motorpolicy/process", data, success, error);
},
saveTravelUnderwriting: function(data, success, error) {
u.post(this.host + "/api/travelpolicy/process", data, success, error);
},
saveHomeUnderwriting: function(data, success, error) {
u.post(this.host + "/api/homeownerpolicy/process", data, success, error);
},
policyAdminAnalytics: function(success, error) {
u.get(this.host + "/api/policy/analytics", success, error);
},
policyBranchAnalytics: function(branch,success, error) {
u.get(`${this.host}/api/policy/analytics/branch/${branch}`, success, error);
},
policyClientAnalytics: function(id,success, error) {
u.get(this.host + "/api/policy/analytics/"+id, success, error);
},
getAgents: function(success, error) {
u.get(this.authHost + "/api/account/getagents", success, error);
},
vehicleImageUpload: function (form, success, error) {
u.fileUpload(this.host + "/api/upload/vehicle-images", form, success, error);
},
saveMotorUnderwritingAsync: async function(data) {
return await u.postAsync(this.host + "/api/motorpolicy/process", data);
},
vehicleImageUploadAsync: async function(form) {
return await u.fileUploadAsync(this.host + "/api/upload/vehicle-images", form);
}
});
})(window.service, window.utility);
(function(s, u) {
s.add({
getExisting: function(vehRegNo, success, error) {
u.get(`${this.host}/api/policy/existingpolicy/${vehRegNo}`, success, error);
}
});
})(window.service, window.utility);
(function ($, s, u, $scope) {
$(function() {
$scope.setEndDate = (startDate, days) => {
if (parseInt(days) === 365) {
$("#MOTOR_END_DATE").val(u.dateReverse(u.dateFastForward(startDate, 1, "year"), 1, "day"));
} else {
$("#MOTOR_END_DATE").val(u.dateFastForward(startDate, parseInt(days || 0), "day"));
}
};
$("input[name='START_DATE']").change(function() {
if (u.dateBefore($(this).val(), u.get_date())) { //start date comes before todays date invalid date
$(this).val("");
return u.growl_info("The start date cannot be back dated");
}
$scope.startDate = this;
if (u.datesEqual($($scope.endDate).val(), $(this).val())) { //end date comes before todays date invalid date
$($scope.endDate).val("");
return u.growl_info("The end date selected cannot be the same as the start date");
} else if (u.dateBefore($($scope.endDate).val(), $(this).val())) {
$($scope.endDate).val("");
return u.growl_info("The end date cannot be back dated");
}
$scope.setEndDate($("#MOTOR_START_DATE").val(), "365");
});
$("input[name='END_DATE']").change(function() {
$scope.endDate = this;
if (u.datesEqual($($scope.endDate).val(), $($scope.startDate).val())
) { //end date comes before todays date invalid date
$(this).val("");
u.growl_info("The end date selected cannot be the same as the start date");
} else if (u.dateBefore($($scope.endDate).val(), $($scope.startDate).val())) {
$(this).val("");
u.growl_info("The end date cannot be back dated");
}
});
$("#MOTOR_END_DATE").change(function() {
if (u.totalDays($(this).val(), $("#MOTOR_START_DATE").val()) > 364) {
$(this).val("");
u.growl_warning("The maximum duration for a Motor Policy is one (1) year");
}
});
u.set_datepicker_noback(".no-back-date");
// u.email_validation(".email");
u.lovDropDown2(".currency", "getCurencyLov");
u.lovDropDown2("#PRODUCT", "getMotorProductLov");
// u.lovDropDown("#VEHICLE_MAKE", "getMakeModelLov");
/*---------------------------
* year drop down population
*--------------------------*/
const year = parseInt(u.getYear(u.get_datetime()));
for (let i = year; i >= 1945; i--) {
$("select[name='YEAR_MANUFACTURE']").append(``);
}
/*
ADD EXISTING POLICY LOGIC
*/
$("#addExisting").click(function() {
if (!u.field_empty("#VEHICLE_NO")) {
$("#search-spinner").show(0);
s.getExisting($("#VEHICLE_NO").val(),
function(response) {
$("#search-spinner").hide(0);
if (response.state) {
if (!response.data) return u.growl_info("Could not find an existing policy for the vehicle number entered, please contact our customer service");
//check if the user is an agent or broker
//if (u.isAgent()) {
// //check if the agency code on the existing policy is the same as the agency code of the logged in user
// if (response.data.EP_AGENCY_CODE !== u.getAgencyCode()) return u.growl_warning("Your agency code does not match with the agency code specified on the policy.");
//}
// const tppYn = response.data.EP_EXTRA_TPPD_AMOUNT > 0 ? "Y" : "N";
$("#motorAgentBuy").val("Y").trigger("change");
var branch = "";
switch (response.data.EP_BRANCH_CODE) {
case "KM":
branch = "BR05";
break;
case "LZ":
branch = "BR03";
break;
case "TL":
branch = "TL";
break;
case "KS":
branch = "KS";
break;
case "HO":
branch = "BR07";
break;
case "AG":
branch = "BR06";
break;
case "AC":
branch = "AC";
break;
default:
branch = "";
break;
}
u.fill_form({
FULL_NAME: response.data.EP_FULLNAME,
PHONE_NO: /*response.data.EP_PHONE.length < 10 ?*/ `0${response.data.EP_PHONE}`/* : response.data.EP_PHONE*/,
EMAIL: response.data.EP_EMAIL,
PRODUCT: response.data.EP_POL_TYPE,
CURRENCY: response.data.EP_CUR_CODE ?? "GHS",
//RISK_TYPE: response.data.EP_VEH_USAGE,
CUBIC_CAPCITY: response.data.EP_CC,
SEATING_CAPACITY: response.data.EP_NO_SEATS,
REGISTRATION_NUMBER: response.data.EP_VEH_REG_NO,
YEAR_MANUFACTURE: response.data.EP_YEAR_MANUF,
VEHICLE_MAKE: response.data.EP_MAKE,
VEHICLE_MODEL: response.data.EP_MODEL,
BODY_TYPE: response.data.EP_BODY_TYPE,
CHASIS_NO: response.data.EP_CHASSIS,
REGISTRATION_YEAR: response.data.EP_REG_YEAR,
BRANCH: branch ?? response.data.EP_BRANCH_CODE,
AGENT_CODE: response.data.EP_AGENCY_CODE,
COLOUR: response.data.EP_COLOR,
LEGACY_POLICY_NUMBER: response.data.EP_POLICY_NUMBER
// VEHICAL_VAL: response.data.EP_VEHICLE_VALUE,
// ADDITIONAL_TTPD: response.data.EP_EXTRA_TPPD_AMOUNT,
// BUY_BACK_EXCESS: response.data.EP_EXCESS,
// ADDITIONAL_TTPD_YN: tppYn
},
"#motorForm");
$scope.usage = ""; //response.data.EP_VEH_USAGE;
$("#MOTOR_END_DATE").val(u.dateReverse(u.dateFastForward(u.get_date(), 1, "year"), 1, "day"));
$("#MOTOR_START_DATE").val(u.get_date());
//$("#motorQuoteModal").modal();
if (response.data.EP_AGENCY_CODE !== null && response.data.EP_AGENT_CODE !== "") {
$("#motorAgentBuy").val("Y").trigger("change");
}
u.growl_success("Search successful. Please complete the form and continue.");
} else {
u.growl_erro(response.message);
}
},
function() {
$("#search-spinner").hide(0);
u.growl_erro("Error fetching existing product");
});
} else {
u.growl_info("Please Enter vehicle registration number");
}
});
$("#btnMotorPurchase").click(async function() {
//
if (u.form_validation("#motorForm")) {
$("#spinner").modal();
var formData = u.parse_form("#motorForm");
//console.log(formData);
formData["POL_DAYS"] = u.totalDays(formData["START_DATE"], formData["END_DATE"]);
formData["CLIENT_ID"] = u.getUserId();
formData["CHANNEL"] = u.getChannel();
if (u.isCustomer()) {
formData["BRANCH"] = u.getBranch();
}
if (u.isBroker() || u.isBrokerAdmin()) {
formData["COMPANY_CODE"] = u.getCompany();
}
formData["PLATFORM"] = "E-PORTAL";
formData["CREATED_BY"] = u.getFullName();
if ($("#motorAgentBuy").val() === "Y" && $("#MotorAgentCode").val() !== "") {
//formData["INT_NAME"] = u.getFullName();
//formData["INT_EMAIL"] = u.getEmail();
//formData["INT_PHONE"] = u.getPhone();
formData["INT_CODE"] = $("#MotorAgentCode").val();
formData["INT_NAME"] = $("#MotorAgentCode option:selected").text();
} else {
formData["INT_NAME"] = u.isCustomer() ? "" : u.getFullName();
formData["INT_EMAIL"] = "";
formData["INT_PHONE"] = "";
formData["INT_CODE"] = u.isCustomer() ? "" : u.getAgencyCode();
}
formData.IsRenewal = true;
formData.IMAGE_URLS = await $scope.uploadFiles();
s.saveMotorUnderwriting(formData,
function(result) {
$("#spinner").modal("hide");
if (result.state) {
//console.log(result);
const data = result.data;
data["START_DATE"] = formData["START_DATE"];
data["END_DATE"] = formData["END_DATE"];
data["PRODUCT"] = formData["PRODUCT"];
data["FULL_NAME"] = formData["FULL_NAME"];
data["PHONE"] = formData["PHONE"] || formData["PHONE_NO"];
u.growl_success("Policy Successfully saved");
u.ses_set_json("policy_billing_info", data);
//check is motor policy was gotten from a quote
const quote = u.ses_get_json("quote_data");
if (quote) {
s.setQuoteComplete(quote["QH_SYS_ID"],
function() {
window.location = "/Home/completed";
},
function() {
u.growl_error("Error Updating Quote status");
window.location = "/Home/completed";
});
} else {
window.location = "/Home/completed";
}
u.ses_del("quote_data");
} else {
u.growl_error("Error saving Motor Policy, please try again later");
}
});
} else {
u.growl_warning("All fields marked red are required");
}
});
$("#ADDITIONAL_TTP_YN").on("change",
function() {
if ($(this).val() === "Y") {
$("#ADDITIONAL_TTP").val("");
$("#ADDITIONAL_TTP").removeAttr("disabled");
$("#ADDITIONAL_TTP").removeAttr("readonly");
$("#ADDITIONAL_TTP").prop("required", "required");
} else {
$("#ADDITIONAL_TTP").prop("disabled", "disabled");
$("#ADDITIONAL_TTP").removeAttr("required");
}
});
$("#PRODUCT").on("change",
function() {
if (!u.field_empty("#PRODUCT")) {
$("#RISK_TYPE .removable").remove();
u.lovDropDown2("#RISK_TYPE",
"getRiskLov",
$("#PRODUCT").val(),
function() {
$("#RISK_TYPE").val($scope.usage);
});
}
switch ($(this).val()) {
case "MP01":
$("#VEHICAL_VAL").removeAttr("disabled");
$("#VEHICAL_VAL").prop("required", "required");
$("#BUY_BACK_EXCESS").removeAttr("disabled");
$("#BUY_BACK_EXCESS").prop("required", "required");
$("#vehicleImagesDiv").removeClass("m-hide");
break;
case "MP02":
$("#VEHICAL_VAL").prop("disabled", "disabled");
$("#VEHICAL_VAL").removeAttr("required");
$("#VEHICAL_VAL").val("");
$("#BUY_BACK_EXCESS").prop("disabled", "disabled");
$("#BUY_BACK_EXCESS").removeAttr("required");
$("#VEHICAL_VAL").val("");
$("#vehicleImagesDiv").addClass("m-hide");
break;
case "MP03":
$("#VEHICAL_VAL").removeAttr("disabled");
$("#VEHICAL_VAL").prop("required", "required");
$("#BUY_BACK_EXCESS").removeAttr("disabled");
$("#BUY_BACK_EXCESS").prop("required", "required");
$("#vehicleImagesDiv").addClass("m-hide");
break;
default:
}
});
var yearr = parseInt(u.getYear(u.get_datetime()));
for (var i = yearr; i >= 2000; i--) {
$("#REGISTRATION_YEAR").append(``);
}
$("#REGISTRATION_YEAR").change(function () {
if ($(this).val() === "" || $(this).val() === 0 || $(this).val() === null) return;
if ($("#BODY_TYPE").val() === "" || $("#BODY_TYPE").val() === null) {
$(this).val("");
return u.growl_warning("Select Body Type first");
}
if (u.field_empty("#REGISTRATION_NUMBER")) {
$(this).val("");
return u.growl_warning("Enter Vehicle Registration number first");
}
var regNo = $("#REGISTRATION_NUMBER").val().trim();
if ($("#BODY_TYPE").val() === "MOTOR CYCLE") {
let year = regNo.substring(2, 4);
if (isNaN(year)) return false;
let thisYear = $(this).val().substring($(this).val().length - 2);
if (parseInt(year) != null && parseInt(year) != undefined) {
if (thisYear != year) {
$(this).val("");
return u.growl_warning("Registration year does not match registration number");
}
}
} else {
let year = regNo.substring(regNo.length - 2);
if (isNaN(year)) return false;
let thisYear = $(this).val().substring($(this).val().length - 2);
if (parseInt(year) != null && parseInt(year) != undefined) {
if (thisYear != year) {
$(this).val("");
return u.growl_warning("Registration year does not match registration number");
}
}
}
});
$("#motorAgentBuy").change(function () {
if ($(this).val() === "Y") {
$("#agentCodeDiv").removeClass("m-hide");
$("#MotorAgentCode").attr("required", "required");
} else if ($(this).val() === "N") {
$("#agentCodeDiv").addClass("m-hide");
$("#MotorAgentCode").prop("required", false);
} else {
$("#agentCodeDiv").addClass("m-hide");
$("#MotorAgentCode").prop("required", false);
}
});
s.getAgents(function (response) {
if (response && response.length > 0) {
for (let i in response) {
$("#MotorAgentCode")
.append(``);
}
//$("#MotorAgentCode").selectize();
}
});
u.lovDropDown2("#BRANCH", "get_lov_office");
$("#motorImage1").on("change", function () {
var files = !!this.files ? this.files : [];
// Check if file is selected
if (!files.length || !window.FileReader) {
$("#motorImageView1").empty();
return false;
}
// image uploads
if (/^image/.test(files[0].type)) {
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onloadend = function () {
//$("#newImage").css("background-image", "url(" + this.result + ")");
//$("#newImage").attr('src', this.result)
// .width(100)
// .height(100);
var image = "
";
$("#motorImageView1").html(image);
//$("#fileName").html("File name:");
}
} else { // other files
$("#motorImage1").val("");
return u.growl_warning("Invalid file selected. Only images are allowed");
}
});
$("#motorImage2").on("change", function () {
var files = !!this.files ? this.files : [];
// Check if file is selected
if (!files.length || !window.FileReader) {
$("#motorImageView2").empty();
return false;
}
// image uploads
if (/^image/.test(files[0].type)) {
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onloadend = function () {
//$("#newImage").css("background-image", "url(" + this.result + ")");
//$("#newImage").attr('src', this.result)
// .width(100)
// .height(100);
var image = "
";
$("#motorImageView2").html(image);
//$("#fileName").html("File name:");
//$scope.uploadFiles();
}
} else { // other files
$("#motorImage2").val("");
return u.growl_warning("Invalid file selected. Only images are allowed");
}
});
$("#vrcImage").on("change", function () {
var files = !!this.files ? this.files : [];
// Check if file is selected
if (!files.length || !window.FileReader) {
$("#vrcImageView").empty();
return false;
}
// image uploads
if (/^image/.test(files[0].type)) {
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onloadend = function () {
var image = "
";
$("#vrcImageView").html(image);
//$scope.uploadFiles();
}
} else { // other files
$("#vrcImage").val("");
return u.growl_warning("Invalid file selected. Only images are allowed");
}
});
$scope.uploadFiles = async function () {
if (!$("#motorImage1").val() && !$("#motorImage2").val() && !$("#vrcImage").val())
return "";
var uploadResponse = await s.vehicleImageUploadAsync("#motorForm");
if (!uploadResponse.state) {
$("#spinner").modal("hide");
return u.growl_error("Error uploading vehicle images. Please try again");
}
uploadResponse.data.ForEach(file => {
$scope.fileUrls += file + ";";
});
return $scope.fileUrls;
};
});
})(window.jQuery, window.service, window.utility, {});