301 lines
10 KiB
JavaScript
301 lines
10 KiB
JavaScript
$(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 = '<option value="" disabled>انتخاب پرسنل ...</option>';
|
|
employees.forEach(function (employee) {
|
|
employeeOptionsHtml += `<option value="${employee.id}">${employee.employeeFullName}</option>`;
|
|
});
|
|
$('#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);
|
|
}
|
|
});
|
|
});
|
|
|