$(document).ready(function () { $(".select2Option").select2({ language: "fa", dir: "rtl", dropdownParent: $('#MainModal'), templateResult: function (data, container) { if (data.element) { $(container).addClass($(data.element).attr("class")); } return data.text; } }).on("change", function (e) { var selectedValue = $(this).val(); var lastDayStanding = $('.lastDayStanding').val(); var dayOfLeftWork = $('.dayOfLeftWork').val(); if (selectedValue && lastDayStanding && dayOfLeftWork) { $('#createData').removeClass('disable'); } else { $('#createData').addClass('disable'); } }).on("select2:clearing", function (e) { var selectedValue = $(this).val(); var lastDayStanding = $('.lastDayStanding').val(); var dayOfLeftWork = $('.dayOfLeftWork').val(); if (selectedValue && lastDayStanding && dayOfLeftWork) { $('#createData').removeClass('disable'); } else { $('#createData').addClass('disable'); } }).on("select2:unselecting", function (e) { var selectedValue = $(this).val(); var lastDayStanding = $('.lastDayStanding').val(); var dayOfLeftWork = $('.dayOfLeftWork').val(); if (selectedValue && lastDayStanding && dayOfLeftWork) { $('#createData').removeClass('disable'); } else { $('#createData').addClass('disable'); } }); //$(".form-control-date").each(function () { // let element = $(this); // element.on('input', function () { // let value = convertPersianNumbersToEnglish(element.val()); // element.val(value); // }); // new Cleave(this, { // date: true, // delimiter: '/', // datePattern: ['Y', 'm', 'd'] // }); //}); $(".form-control-date").mask("0000/00/00"); convertToJalaliAndAdjust('.lastDayStanding', '.dayOfLeftWork', +1); convertToJalaliAndAdjust('.dayOfLeftWork', '.lastDayStanding', -1); ajaxPersonals(); }); function convertToJalaliAndAdjust(inputSelector, targetSelector, change) { $(inputSelector).on('input', function () { let inputValue = $(this).val().trim(); let targetInput = $(targetSelector); let parts = inputValue.split('/'); if (inputValue.length === 10) { if (parts.length === 3) { let year = parts[0]; let month = normalizeNumber(parts[1]); let day = normalizeNumber(parts[2]); if (isValidJalaliDate(year, month, day)) { let gregorianDate = jalaali.toGregorian(parseInt(year), parseInt(month), parseInt(day)); if (isNaN(gregorianDate.gy) || isNaN(gregorianDate.gm) || isNaN(gregorianDate.gd)) { console.error("Invalid Gregorian date conversion."); return; } let date = new Date(gregorianDate.gy, gregorianDate.gm - 1, gregorianDate.gd); date.setDate(date.getDate() + change); let newJalaliDate = jalaali.toJalaali(date.getFullYear(), date.getMonth() + 1, date.getDate()); let formattedDate = newJalaliDate.jy + '/' + ('0' + newJalaliDate.jm).slice(-2) + '/' + ('0' + newJalaliDate.jd).slice(-2); targetInput.val(formattedDate); dayOfWeekLoad(this, inputValue); dayOfWeekLoad(targetInput, targetInput.val()); } } updateBtnCreate(); } else { targetInput.val(''); updateBtnCreate(); $('.lastDayStandingTxt').hide(); $('.dayOfLeftWorkTxt').hide(); } }); } function normalizeNumber(num) { return num.toString().padStart(2, '0'); } function isValidJalaliDate(year, month, day) { let isLeap = jalaali.isLeapJalaaliYear(year); if (month < 1 || month > 12 || day < 1) return false; if (month <= 6 && day > 31) return false; if (month > 6 && month < 12 && day > 30) return false; if (month === 12 && day > (isLeap ? 30 : 29)) return false; return true; } function updateBtnCreate() { var employeeSelect = $('#employeeSelect').val(); var lastDayStanding = $('.lastDayStanding').val(); var dayOfLeftWork = $('.dayOfLeftWork').val(); if (employeeSelect && lastDayStanding && dayOfLeftWork) { $('#createData').removeClass('disable'); } else { $('#createData').addClass('disable'); } } function dayOfWeekLoad(input, value) { if (value.length !== 10) return; $.ajax({ url: dayOfWeekDataUrl, type: 'GET', data: { dateFa: value }, success: function (response) { if (response.success) { const $groupBox = $(input).closest('.dayOfWeek'); if ($(input).hasClass('lastDayStanding')) { $groupBox.find('.lastDayStandingTxt').text(response.message); } else if ($(input).hasClass('dayOfLeftWork')) { $groupBox.find('.dayOfLeftWorkTxt').text(response.message); } $('.lastDayStandingTxt').show(); $('.dayOfLeftWorkTxt').show(); } else { $('.alert-msg').show(); $('.alert-msg p').text(response.message); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 3500); $('.lastDayStandingTxt').hide(); $('.dayOfLeftWorkTxt').hide(); } }, error: function (xhr, status, error) { console.error(xhr.responseText); } }); } function ajaxPersonals() { $.ajax({ url: employeeListAjax, type: 'GET', success: function (response) { if (response.success) { var employees = response.data; var employeeOptionsHtml = ''; employees.forEach(function (employee) { employeeOptionsHtml += ``; }); $('#employeeSelect').html(employeeOptionsHtml); } else { $('.alert-msg').show(); $('.alert-msg p').text(response.message); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 3500); } }, error: function (xhr, status, error) { console.error(xhr.responseText); } }); } $("#createData").click(function () { var loading = $('#createData .spinner-loading'); var employeeSelect = $('#employeeSelect').val(); var lastDayStanding = $('.lastDayStanding'); var dayOfLeftWork = $('.dayOfLeftWork'); if (employeeSelect.length === 0) { $('.alert-msg').show(); $('.alert-msg p').text('لطفا اسامی پرسنل را کلیک و مشخص نمائید'); $('.select-alert').addClass('errored'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); $('.select-alert').removeClass('errored'); }, 3500); return; } if (lastDayStanding.val().length !== 10) { lastDayStanding.addClass('errored'); $('.alert-msg').show(); $('.alert-msg p').text('لطفا تاریخ را به درستی وارد نمائید'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); lastDayStanding.removeClass('errored'); }, 3500); return; } if (dayOfLeftWork.val().length !== 10) { dayOfLeftWork.addClass('errored'); $('.alert-msg').show(); $('.alert-msg p').text('لطفا تاریخ را به درستی وارد نمائید'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); dayOfLeftWork.removeClass('errored'); }, 3500); return; } $('#createData').addClass('disable'); var data = $('#create-form').serialize(); $.ajax({ async: true, dataType: 'json', type: 'POST', url: saveLeftWorkAjax, headers: { "RequestVerificationToken": antiForgeryToken }, data: data, success: function (response) { if (response.success) { loading.show(); $('.alert-success-msg').show(); $('.alert-success-msg p').text(response.message); setTimeout(function () { $('.alert-success-msg').hide(); $('.alert-success-msg p').text(''); }, 1500); //if (urlPathname.indexOf('/Client/Company/SalaryAid') > -1) { // $('#salaryaidListAjax').html(''); // $('#PageIndex').val(0); // pageIndexJs = 0; // loadSalaryAidList(); // //window.location.reload(); //} $('#loadEmployeesAjax').html(''); loadEmployee(); loading.hide(); $('#MainModal').modal('hide'); } else { $('.alert-msg').show(); $('.alert-msg p').text(response.message); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 3500); loading.hide(); $('#createData').removeClass('disable'); } }, error: function (err) { loading.hide(); $('#createData').removeClass('disable'); console.log(err); } }); });