(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, {});