var isValidProvider = false; var isValidCity = false; var isNationalCode = false; var isSend = false; var url = '/'; $(function () { // create toast const Toast = Swal.mixin({ toast: true, position: 'top-end', showConfirmButton: false, timer: 3000, timerProgressBar: true, didOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseleave', Swal.resumeTimer) } }) //reset form and refresh $('#reset').on('click', function () { location.reload(true); }); // select device tupe $('.btn-type').on('click', function () { buildForm($(this).val()).then( (onResolved) => { $('#form-type').modal('hide') } ); }); // get all provinces $.ajax({ url: url + "webapi/cmms/provinces/all", type: "GET", headers: { accept: "application/json", "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, cache: false, contentType: false, processData: false, success: function (res) { $("#province").empty(); $("#province").append(''); $.each(res.data, function (key, value) { $("#province").append( "" ); }); // show modal form type $("#form-type").modal({ backdrop: "static" }); }, error: function () { Swal.fire({ icon: "error", title: "خطا سرور", text: "مشکل در دریافت استان ها", confirmButtonText: "بروزرسانی صفحه", }).then((result) => { if (result.isConfirmed) { location.reload(true); return true; } }); } }); // get cities by provicens_id and validation $("#province").change(function () { fillCities($(this).val()) formValid(); }); // validation city $("#city").change(function () { isValidCity = false; var cityId = $(this).val(); if (cityId != 0) { isValidCity = true; } else { isValidCity = false; } formValid(); }); $(".ott").click(function (event) { if (event.target.type !== "radio") { $(":radio", this).trigger("click"); } }); // send all data $("#send").on("click", function () { $('#send').attr('disabled', 'disabled'); $('#send').text('در حال ثبت'); var isRequire = true; var car_type = $("#car_type").val() var data = new FormData(); // append Moshakhasat if ($("#dedicated_number").val() != '') data.append("dedicated_number", $("#dedicated_number").val()); else isRequire = false if ($("#shasi_num").val() != '') data.append("chassis_number", $("#shasi_num").val()); else isRequire = false if ($("#province").val() != '') data.append("province_id", $("#province").val()); else isRequire = false if ($("#city").val() != '') data.append("city_id", $("#city").val()); else isRequire = false if ($("#device_name").val() != '') data.append("device_name", $("#device_name").val()); else isRequire = false if ($("#gps_code").val() != '') data.append("gps_code", $("#gps_code").val()); else isRequire = false if ($("#operator_name").val() != '') data.append("operator_name", $("#operator_name").val()); else isRequire = false if ($("#national_code").val() != '') data.append("operator_nationalcode", $("#national_code").val()); else isRequire = false if ($("#operator_phone").val() != '') data.append("operator_phone", $("#operator_phone").val()); else isRequire = false // check values undefined before append if (typeof $('input[name="motor"]:checked').val() !== "undefined") data.append("motor", $('input[name="motor"]:checked').val()); else isRequire = false if (typeof $('input[name="power"]:checked').val() !== "undefined") data.append("power", $('input[name="power"]:checked').val()); else isRequire = false if (typeof $('input[name="hydraulic"]:checked').val() !== "undefined") data.append("hydraulic", $('input[name="hydraulic"]:checked').val()); else isRequire = false if (car_type == "B") { if (typeof $('input[name="ripper"]:checked').val() !== "undefined") data.append("ripper", $('input[name="ripper"]:checked').val()); else isRequire = false } if (typeof $('input[name="zirbandi"]:checked').val() !== "undefined") data.append("zirbandi", $('input[name="zirbandi"]:checked').val()); else isRequire = false if (car_type == "G") { if (typeof $('input[name="jolobandi"]:checked').val() !== "undefined") data.append("jolobandi", $('input[name="jolobandi"]:checked').val()); else isRequire = false } if (car_type == "Ex") { if (typeof $('input[name="bucket"]:checked').val() !== "undefined") data.append("bucket", $('input[name="bucket"]:checked').val()); else isRequire = false } if (typeof $('input[name="chassis"]:checked').val() !== "undefined") data.append("chassis", $('input[name="chassis"]:checked').val()); else isRequire = false if (typeof $('input[name="electrical"]:checked').val() !== "undefined") data.append("electrical", $('input[name="electrical"]:checked').val()); else isRequire = false if (typeof $('input[name="safety"]:checked').val() !== "undefined") data.append("safety", $('input[name="safety"]:checked').val()); else isRequire = false if (typeof $('input[name="gps"]:checked').val() !== "undefined") data.append("gps", $('input[name="gps"]:checked').val()); else isRequire = false if (typeof $('input[name="color"]:checked').val() !== "undefined") data.append("color", $('input[name="color"]:checked').val()); else isRequire = false data.append("motor_description", $('input[name="motor_description"]').val()); data.append("power_description", $('input[name="power_description"]').val()); data.append("hydraulic_description", $('input[name="hydraulic_description"]').val()); if (car_type == "B") data.append("ripper_description", $('input[name="ripper_description"]').val()); data.append("zirbandi_description", $('input[name="zirbandi_description"]').val()); if (car_type == "G") data.append("jolobandi_description", $('input[name="jolobandi_description"]').val()); if (car_type == "Ex") data.append("bucket_description", $('input[name="bucket_description"]').val()); data.append("chassis_description", $('input[name="chassis_description"]').val()); data.append("electrical_description", $('input[name="electrical_description"]').val()); data.append("safety_description", $('input[name="safety_description"]').val()); data.append("gps_description", $('input[name="gps_description"]').val()); data.append("color_description", $('input[name="color_description"]').val()); data.append("service_description", $('input[name="service_description"]').val()); data.append("fuel_description", $('input[name="fuel_description"]').val()); if ($('input[name="motor_score"]').val() != '') data.append("motor_score", $('input[name="motor_score"]').val()); else isRequire = false if ($('input[name="power_score"]').val() != '') data.append("power_score", $('input[name="power_score"]').val()); else isRequire = false if ($('input[name="hydraulic_score"]').val() != '') data.append("hydraulic_score", $('input[name="hydraulic_score"]').val()); else isRequire = false if (car_type == "B") { if ($('input[name="ripper_score"]').val() != '') data.append("ripper_score", $('input[name="ripper_score"]').val()); else isRequire = false } if ($('input[name="zirbandi_score"]').val() != '') data.append("zirbandi_score", $('input[name="zirbandi_score"]').val()); else isRequire = false if (car_type == "G") { if ($('input[name="jolobandi_score"]').val() != '') data.append("jolobandi_score", $('input[name="jolobandi_score"]').val()); else isRequire = false } if (car_type == "Ex") { if ($('input[name="bucket_score"]').val() != '') data.append("bucket_score", $('input[name="bucket_score"]').val()); else isRequire = false } if ($('input[name="chassis_score"]').val() != '') data.append("chassis_score", $('input[name="chassis_score"]').val()); else isRequire = false if ($('input[name="electrical_score"]').val() != '') data.append("electrical_score", $('input[name="electrical_score"]').val()); else isRequire = false if ($('input[name="safety_score"]').val() != '') data.append("safety_score", $('input[name="safety_score"]').val()); else isRequire = false if ($('input[name="gps_score"]').val() != '') data.append("gps_score", $('input[name="gps_score"]').val()); else isRequire = false if ($('input[name="color_score"]').val() != '') data.append("color_score", $('input[name="color_score"]').val()); else isRequire = false if ($('input[name="service_status"]').val() != '') data.append("service_status", $('input[name="service_status"]').val()); else isRequire = false if ($('input[name="fuel_form"]').val() != '') data.append("fuel_form", $('input[name="fuel_form"]').val()); else isRequire = false // append total points data.append("total_points", $('input[name="total_points"]').val()); // check questions undefined before append if (typeof $('input[name="question1"]:checked').val() !== "undefined") data.append("question1", $('input[name="question1"]:checked').val()); else isRequire = false if (typeof $('input[name="question2"]:checked').val() !== "undefined") data.append("question2", $('input[name="question2"]:checked').val()); else isRequire = false if (typeof $('input[name="question3"]:checked').val() !== "undefined") data.append("question3", $('input[name="question3"]:checked').val()); else isRequire = false if (typeof $('input[name="question4"]:checked').val() !== "undefined") data.append("question4", $('input[name="question4"]:checked').val()); else isRequire = false if (typeof $('input[name="question5"]:checked').val() !== "undefined") data.append("question5", $('input[name="question5"]:checked').val()); else isRequire = false // append auditor and members data.append("auditor_name", $("#auditor_name").val()); data.append("member1_name", $("#member1_name").val()); data.append("member2_name", $("#member2_name").val()); data.append("member3_name", $("#member3_name").val()); data.append("auditor_position", $("#auditor_position").val()); data.append("member1_position", $("#member1_position").val()); data.append("member2_position", $("#member2_position").val()); data.append("member3_position", $("#member3_position").val()); // append auditor_name data.append("car_type", $("#car_type").val()); // append device images if (typeof $('#deviceImg1').get(0).files[0] !== "undefined") data.append("image1", $('#deviceImg1').get(0).files[0]); else isRequire = false if (typeof $('#deviceImg2').get(0).files[0] !== "undefined") data.append("image2", $('#deviceImg2').get(0).files[0]); else isRequire = false if (typeof $('#deviceImg3').get(0).files[0] !== "undefined") data.append("image3", $('#deviceImg3').get(0).files[0]); else isRequire = false // append proceedings file if (typeof $('#proceedingsFile').get(0).files[0] !== "undefined") data.append("file1", $('#proceedingsFile').get(0).files[0]); else isRequire = false if (isRequire) { $.ajax({ url: url + "webapi/cmms/create", type: "POST", headers: { accept: "application/json", "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, data: data, cache: false, contentType: false, processData: false, success: function (res) { $('#print').removeAttr('disabled'); $('#reset').removeAttr('disabled'); $('#form_number').val(res.data.form_number); $('#form-date').val(moment().format('jYYYY/jMM/jDD')) $('#send').text('ثبت شد'); $('#send').removeClass('btn-primary'); $('#send').addClass('btn-success'); Toast.fire({ icon: 'success', title: 'ثبت اطلاعات با موفقیت انجام شد' }) isSend = true; }, error: function (xhr) { Swal.fire({ icon: "error", title: "خطا سرور", text: "مشکل در ثبت اطلاعات", confirmButtonText: "بستن", }) $('#send').removeAttr('disabled'); $('#send').text('ثبت'); }, }); } else { Swal.fire({ icon: "error", title: "خطا", text: "لطفا اطلاعات صحیح وارد نمایید", showConfirmButton: false, cancelButtonText: "بستن", }) $('#send').removeAttr('disabled'); $('#send').text('ثبت'); } }); // print $('#print').on('click', function () { window.print(); }); // get live dedicated_number by search $("#personal_num").autocomplete({ source: function (request, response) { var reqData = new FormData(); reqData.append("data", request.term); $.ajax({ url: url + "webapi/cmms/search", type: "POST", headers: { accept: "application/json", "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, data: reqData, cache: false, contentType: false, processData: false, success: function (res) { response(res.data); }, }); }, select: function (event, ui) { var reqData = new FormData(); reqData.append("dedicated_number", ui.item.label); $.ajax({ url: url + "webapi/cmms/machine", type: "POST", headers: { accept: "application/json", "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, data: reqData, cache: false, contentType: false, processData: false, success: function (res) { console.log(res); resetMoshakhasat(); isValidProvider = false; isValidCity = false; if (typeof res.data.operator_nationalcode !== "undefined") { if (checkNationalCode(res.data.operator_nationalcode)) isNationalCode = true; } formValid(); $("#shasi_num").val(res.data.body_number); $("#currentProvince").text(res.data.unit_group_fa); $("#currentCity").text(res.data.unit_name); $("#device_name").val(res.data.car_name); $("#oprator_name").val(res.data.driver_name); $("#gps_code").val(res.data.gps_code); $("#national_code").val(res.data.operator_nationalcode); $("#operator_phone").val(res.data.mobile); $("#dedicated_number").val(res.data.machine_code); }, }); }, minLength: 2, }); // check scores between 1 and 5 before sum scores $(".shakhes_input").keyup(function () { var total = 0; var inputs = $(".shakhes_input"); for (var i = 0; i < inputs.length; i++) { if (inputs[i].value != "") { total += parseInt(inputs[i].value); } } $("#total_points").val(total); }); $(".shakhes_input").bind('keypress', function (event) { var key = event.which; var str = String.fromCharCode(key); if (key == 0 || key === 32) { return true; } var re = ($(this).hasClass('zero')) ? /^[0-5]$/ : /^[1-5]$/ if (re.test(str)) { return true } return false }); //upload files $('.img-input').on('change', function () { var input = this; var parent = $(this).parents('.img-file'); if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { parent.find('.img-title').css('display', 'none') parent.find('.btn-delete-img').removeAttr('disabled'); parent.find('.img-preview') .attr('src', e.target.result); }; reader.readAsDataURL(input.files[0]); } }) $('#national_code').keyup(function () { if (checkNationalCode($(this).val())) { $('#national_code_err').css('display', 'none'); isNationalCode = true; formValid() return true; } else { $('#national_code_err').css('display', 'block'); isNationalCode = false; formValid() return false; } }) //clear files $('.btn-delete-img').on('click', function () { var parent = $(this).parents('.img-file'); parent.find('.img-input').val(''); parent.find('.img-preview').removeAttr('src'); parent.find('.img-title').css('display', ''); $(this).attr('disabled', 'disabled') formValid() }) //reset moshakhasat function resetMoshakhasat() { $("#shasi_num").val(""); $("#province").val(0); $("#city").val(0); $("#device_name").val(""); $("#currentProvince").text(""); $("#currentCity").text(""); $("#oprator_name").val(""); $("#national_code").val(""); $("#operator_phone").val(""); } //build form by car_type function buildForm(car_type) { //build form sortTable($('#table-car-form'), car_type) // update car_type form $("#car_type").val(car_type); return Promise.resolve("Success"); } //realtime validation inputs $('input').on('change', function () { formValid() }) //realtime validation selects $('select').on('change', function () { formValid() }) // validation function formValid() { if (!isSend) { var isRequire = true; if ($("#dedicated_number").val() == '') isRequire = false else if ($("#shasi_num").val() == '') isRequire = false else if ($("#province").val() == '') isRequire = false else if ($("#city").val() == '') isRequire = false else if ($("#device_name").val() == '') isRequire = false else if ($("#gps_code").val() == '') isRequire = false else if ($("#operator_name").val() == '') isRequire = false else if ($("#national_code").val() == '') isRequire = false else if ($("#operator_phone").val() == '') isRequire = false if (typeof $('input[name="motor"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="power"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="hydraulic"]:checked').val() === "undefined") isRequire = false if (car_type == "B") { if (typeof $('input[name="ripper"]:checked').val() === "undefined") isRequire = false } if (typeof $('input[name="zirbandi"]:checked').val() === "undefined") isRequire = false if (car_type == "G") { if (typeof $('input[name="jolobandi"]:checked').val() === "undefined") isRequire = false } if (car_type == "Ex") { if (typeof $('input[name="bucket"]:checked').val() === "undefined") isRequire = false } if (typeof $('input[name="chassis"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="electrical"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="safety"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="gps"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="color"]:checked').val() === "undefined") isRequire = false if ($('input[name="motor_score"]').val() == '') isRequire = false if ($('input[name="power_score"]').val() == '') isRequire = false if ($('input[name="hydraulic_score"]').val() == '') isRequire = false if (car_type == "B") { if ($('input[name="ripper_score"]').val() == '') isRequire = false } if ($('input[name="zirbandi_score"]').val() == '') isRequire = false if (car_type == "G") { if ($('input[name="jolobandi_score"]').val() == '') isRequire = false } if (car_type == "Ex") { if ($('input[name="bucket_score"]').val() == '') isRequire = false } if ($('input[name="chassis_score"]').val() == '') isRequire = false if ($('input[name="electrical_score"]').val() == '') isRequire = false if ($('input[name="safety_score"]').val() == '') isRequire = false if ($('input[name="gps_score"]').val() == '') isRequire = false if ($('input[name="color_score"]').val() == '') isRequire = false if ($('input[name="service_status"]').val() == '') isRequire = false if ($('input[name="fuel_form"]').val() == '') isRequire = false if (typeof $('input[name="question1"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="question2"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="question3"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="question4"]:checked').val() === "undefined") isRequire = false if (typeof $('input[name="question5"]:checked').val() === "undefined") isRequire = false if (typeof $('#deviceImg1').get(0).files[0] === "undefined") isRequire = false if (typeof $('#deviceImg2').get(0).files[0] === "undefined") isRequire = false if (typeof $('#deviceImg3').get(0).files[0] === "undefined") isRequire = false // append proceedings file if (typeof $('#proceedingsFile').get(0).files[0] === "undefined") isRequire = false if (isValidProvider && isValidCity && isNationalCode && isRequire) { $('#send').removeAttr('disabled'); $('#send').text('ثبت') $('#send').removeClass('btn-warning'); $('#send').addClass('btn-primary'); } else { $('#send').attr('disabled', 'disabled'); $('#send').text('فرم را پر کنید') $('#send').addClass('btn-warning'); $('#send').removeClass('btn-primary'); } } } function checkNationalCode(code) { if (code == "1111111111" || code == "2222222222" || code == "3333333333" || code == "4444444444" || code == "5555555555" || code == "6666666666" || code == "7777777777" || code == "8888888888" || code == "9999999999") return false var L = code.length; if (L < 8 || parseInt(code, 10) == 0) return false; code = ('0000' + code).substr(L + 4 - 10); if (parseInt(code.substr(3, 6), 10) == 0) return false; var c = parseInt(code.substr(9, 1), 10); var s = 0; for (var i = 0; i < 9; i++) s += parseInt(code.substr(i, 1), 10) * (10 - i); s = s % 11; return (s < 2 && c == s) || (s >= 2 && c == (11 - s)); } //fill cities by province_id function fillCities(province_id) { isValidProvider = false; if (province_id != 0) { $.ajax({ url: url + "api/cmms/cities?id=" + province_id, type: "GET", headers: { accept: "application/json", "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), }, cache: false, contentType: false, processData: false, success: function (res) { $("#city").empty(); $("#city").append(''); $.each(res.data, function (key, value) { $("#city").append( "" ); }); isValidProvider = true; }, error: function () { Swal.fire({ icon: "error", title: "خطا سرور", text: "مشکل در دریافت شهر ها", confirmButtonText: "بروزرسانی صفحه", }).then((result) => { if (result.isConfirmed) { location.reload(true); return true; } }); } }); } else { isValidProvider = false; $("#city").empty(); $("#city").append(''); } return Promise.resolve(); } //sort table function sortTable(table, car_type) { tbody = table.find('tbody'); tbody.find('th[' + car_type + '="none"]').closest('tr').addClass('d-none') tbody.find('tr').sort(function (a, b) { return $('th:first', a).attr(car_type).localeCompare($('th:first', b).attr(car_type)); }).appendTo(tbody); } });