521 lines
13 KiB
JavaScript
521 lines
13 KiB
JavaScript
$(document).ready(function () {
|
||
ajaxPersonals();
|
||
$("#cardSectionLeave div *").prop('disabled', true);
|
||
|
||
document.getElementById("MainModal").style.visibility = "visible";
|
||
|
||
$(".select2Option").select2({
|
||
language: "fa",
|
||
dir: "rtl",
|
||
dropdownParent: $('#MainModal'),
|
||
templateResult: function (data, container) {
|
||
if (data.element) {
|
||
$(container).addClass($(data.element).attr("class"));
|
||
}
|
||
return data.text;
|
||
}
|
||
});
|
||
|
||
$('#employeeSelectList').change(function () {
|
||
var selectValue = $('#employeeSelectList').val();
|
||
|
||
if (selectValue === '') {
|
||
$('#cardSectionLeave').addClass('blur');
|
||
$("#cardSectionLeave div *").prop('disabled', true);
|
||
} else {
|
||
$('#cardSectionLeave').removeClass('blur');
|
||
$("#cardSectionLeave div *").prop('disabled', false);
|
||
$('#descriptionAcceptedCheck').attr('disabled', true);
|
||
}
|
||
});
|
||
|
||
//******************** شرط استحقاقی و استعلاجی ********************
|
||
$(document).on("change", ".LeaveType", function () {
|
||
if ($('#paid').is(':checked')) {
|
||
$('#dailyType').css('visibility', 'visible');
|
||
}
|
||
|
||
if ($('#sick').is(':checked')) {
|
||
$('#dailyType').css('visibility', 'hidden');
|
||
$('#daily').prop('checked', true);
|
||
if ($('#daily').is(':checked')) {
|
||
$('#end_date_estehghaghi').show();
|
||
$('.time_paid').hide();
|
||
}
|
||
}
|
||
});
|
||
|
||
// شرط ساعتی و روزانه
|
||
$(document).on("change", ".LeaveTime", function () {
|
||
if ($('#daily').is(':checked')) {
|
||
$('#end_date_estehghaghi').show();
|
||
$('.time_paid').hide();
|
||
}
|
||
|
||
if ($('#hourly').is(':checked')) {
|
||
$('#end_date_estehghaghi').hide();
|
||
$('.time_paid').show();
|
||
}
|
||
});
|
||
//******************** شرط استحقاقی و استعلاجی ********************
|
||
|
||
|
||
//******************** بلور کردن باکس ********************
|
||
$('#IsAccepted').on('change', function () {
|
||
if ($(this).is(':checked')) {
|
||
$('#blur-div').addClass('blur');
|
||
$('#textArea').text('');
|
||
$('#textArea').attr('disabled', true);
|
||
|
||
} else {
|
||
$('#blur-div').removeClass('blur');
|
||
$('#textArea').attr('disabled', false);
|
||
}
|
||
});
|
||
|
||
|
||
if ($('#IsAccepted').is(':checked')) {
|
||
$('#blur-div').addClass('blur');
|
||
$('#textArea').text('');
|
||
$('#textArea').attr('disabled', true);
|
||
} else {
|
||
$('#blur-div').removeClass('blur');
|
||
$('#textArea').attr('disabled', false);
|
||
}
|
||
//******************** بلور کردن باکس ********************
|
||
|
||
$(document).on("change", "#IsAccepted", function () {
|
||
var IsAcceptedCheck = $('#IsAccepted').is(':checked');
|
||
if (IsAcceptedCheck) {
|
||
$('#descriptionAcceptedCheck').removeClass('errored');
|
||
$('#descriptionAcceptedCheck').addClass('disable-input');
|
||
$("#descriptionAcceptedCheck").prop('disabled', true);
|
||
} else {
|
||
$('#descriptionAcceptedCheck').removeClass('disable-input');
|
||
$("#descriptionAcceptedCheck").prop('disabled', false);
|
||
}
|
||
});
|
||
|
||
$('#save').on('click', function () {
|
||
|
||
$("#descriptionAcceptedCheck").on("change", function () {
|
||
$('#descriptionAcceptedCheck').removeClass('errored');
|
||
});
|
||
|
||
var IsAcceptedCheck = $('#IsAccepted').is(':checked');
|
||
var descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
|
||
|
||
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
|
||
$('#descriptionAcceptedCheck').addClass('errored');
|
||
$('.alert-msg').show();
|
||
$('.alert-msg p').text('لطفا توضیحات در صورت عدم موافقت را پر کنید.');
|
||
setTimeout(function () {
|
||
$('.alert-msg').hide();
|
||
$('.alert-msg p').text('');
|
||
}, 3500);
|
||
return false;
|
||
}
|
||
|
||
if ($('.errored').length < 1) {
|
||
$('#saveFinaly').click();
|
||
} else {
|
||
$('.alert-msg').show();
|
||
$('.alert-msg p').text('لطفا خطاها را برطرف کنید.');
|
||
setTimeout(function () {
|
||
$('.alert-msg').hide();
|
||
$('.alert-msg p').text('');
|
||
}, 3500);
|
||
}
|
||
});
|
||
|
||
$(".date").on('input', function () {
|
||
var value = $(this).val();
|
||
$(this).val(convertPersianNumbersToEnglish(value));
|
||
}).mask("0000/00/00");
|
||
$('.date').on('input', function () {
|
||
let startDate = this.value;
|
||
if (startDate.length === 10) {
|
||
let submitcheck = dateValidcheck(this);
|
||
if (submitcheck) {
|
||
|
||
$(this).removeClass('errored');
|
||
if ($('#StartLeave').val() != '' && $('#EndLeave').val() != '') {
|
||
computeDays();
|
||
}
|
||
|
||
|
||
} else {
|
||
$(this).addClass('errored');
|
||
|
||
}
|
||
|
||
} else {
|
||
$(this).addClass('errored');
|
||
}
|
||
});
|
||
|
||
$('input:radio[name="PaidLeaveType"]').change(function () {
|
||
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
|
||
$("#hours").val('');
|
||
$("#hours").attr("disabled", "disabled");
|
||
$("#endLeave").removeAttr("disabled");
|
||
$('.endLeaveLabal').show();
|
||
$('#StartHoures').removeClass("invalidTime");
|
||
$('#StartHoures').val('');
|
||
$('#EndHours').removeClass("invalidTime");
|
||
$('#EndHours').val('');
|
||
$("#endLeave").show();
|
||
$('.res').remove();
|
||
$('.validTime').removeClass("validTime");
|
||
$('.sumHourseDiv').hide();
|
||
$('.sumDaysDiv').show();
|
||
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
|
||
$("#endLeave").val('');
|
||
$("#endLeave").attr("disabled", "disabled");
|
||
$("#endLeave").hide();
|
||
$('.endLeaveLabal').hide();
|
||
$("#hours").removeAttr("disabled");
|
||
$('.sumHourseDiv').show();
|
||
$('.sumDaysDiv').hide();
|
||
}
|
||
});
|
||
/////////////////Time Input Validatet/////////////////
|
||
|
||
$('#StartHoures').on("keyup", function () {
|
||
var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
|
||
if (isValid) {
|
||
$(this).addClass("validTime");
|
||
$(this).removeClass("invalidTime");
|
||
if ($('#EndHours').hasClass('validTime') && $('#EndHours').val() != null) {
|
||
computeHourse();
|
||
}
|
||
} else {
|
||
$(this).removeClass("validTime");
|
||
$(this).addClass("invalidTime");
|
||
}
|
||
});
|
||
$('#EndHours').on("keyup", function () {
|
||
var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
|
||
if (isValid) {
|
||
$(this).addClass("validTime");
|
||
$(this).removeClass("invalidTime");
|
||
if ($('#StartHoures').hasClass('validTime') && $('#StartHoures').val() != null) {
|
||
computeHourse();
|
||
}
|
||
} else {
|
||
$(this).removeClass("validTime");
|
||
$(this).addClass("invalidTime");
|
||
}
|
||
});
|
||
|
||
|
||
$('#employeeSelect').change(function () {
|
||
var selectValue = $('#employeeSelect').val();
|
||
|
||
if (selectValue == '') {
|
||
$('#cardSectionLeave').addClass('blur');
|
||
$("#cardSectionLeave div *").prop('disabled', true);
|
||
} else {
|
||
$('#cardSectionLeave').removeClass('blur');
|
||
$("#cardSectionLeave div *").prop('disabled', false);
|
||
$('#descriptionAcceptedCheck').attr('disabled', true);
|
||
}
|
||
});
|
||
|
||
});
|
||
function dateValidcheck(inputField1) {
|
||
|
||
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
|
||
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
|
||
fixNumbers = function (str) {
|
||
if (typeof str === 'string') {
|
||
for (var i = 0; i < 10; i++) {
|
||
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
|
||
}
|
||
}
|
||
return str;
|
||
};
|
||
let getdate = inputField1.value;
|
||
|
||
let m1, m2;
|
||
let y1, y2, y3, y4;
|
||
let d1, d2;
|
||
let s1, s2;
|
||
for (var i = 0; i < getdate.length; i++) {
|
||
if (i === 0) {
|
||
y1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 1) {
|
||
y2 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 2) {
|
||
y3 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 3) {
|
||
y4 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 4) {
|
||
s1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 5) {
|
||
m1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 6) {
|
||
m2 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 7) {
|
||
s2 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 8) {
|
||
d1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 9) {
|
||
d2 = fixNumbers(getdate[i]);
|
||
}
|
||
|
||
}
|
||
let yRes = y1 + y2 + y3 + y4;
|
||
let year = parseInt(yRes);
|
||
let mRes = m1 + m2;
|
||
let month = parseInt(mRes);
|
||
let dRes = d1 + d2;
|
||
let day = parseInt(dRes);
|
||
let fixResult = yRes + s1 + mRes + s2 + dRes;
|
||
let test1 = checkEnValid(inputField1.value);
|
||
|
||
let isValid = /^([1][3-4][0-9][0-9][/])([0][1-9]|[1][0-2])([/])([0][1-9]|[1-2][0-9]|[3][0-1])$/.test(fixResult);
|
||
|
||
|
||
if (isValid && test1) {
|
||
// inputField1.style.backgroundColor = '#a6e9a6';
|
||
start1valid = true;
|
||
|
||
|
||
} else {
|
||
|
||
if (inputField1.value != "") {
|
||
// inputField1.style.backgroundColor = '#f94c4c';
|
||
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
|
||
start1valid = false;
|
||
}
|
||
|
||
|
||
}
|
||
return start1valid;
|
||
|
||
}
|
||
|
||
function checkEnValid(fixDate1) {
|
||
|
||
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
|
||
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
|
||
fixNumbers = function (str) {
|
||
if (typeof str === 'string') {
|
||
for (var i = 0; i < 10; i++) {
|
||
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
|
||
}
|
||
}
|
||
return str;
|
||
};
|
||
let getdate = fixDate1;
|
||
|
||
let m1, m2;
|
||
let y1, y2, y3, y4;
|
||
let d1, d2;
|
||
for (let i = 0; i < getdate.length; i++) {
|
||
if (i === 0) {
|
||
y1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 1) {
|
||
y2 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 2) {
|
||
y3 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 3) {
|
||
y4 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 5) {
|
||
m1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 6) {
|
||
m2 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 8) {
|
||
d1 = fixNumbers(getdate[i]);
|
||
}
|
||
if (i === 9) {
|
||
d2 = fixNumbers(getdate[i]);
|
||
}
|
||
}
|
||
let yRes = y1 + y2 + y3 + y4;
|
||
let year = parseInt(yRes);
|
||
let mRes = m1 + m2;
|
||
let month = parseInt(mRes);
|
||
let dRes = d1 + d2;
|
||
let day = parseInt(dRes);
|
||
let kabiseh = false;
|
||
if (month <= 6 && day > 31) {
|
||
return false;
|
||
} else if (month > 6 && month < 12 && day > 30) {
|
||
return false;
|
||
} else if (month === 12) {
|
||
|
||
switch (year) {
|
||
case 1346:
|
||
kabiseh = true;
|
||
break;
|
||
case 1350:
|
||
kabiseh = true;
|
||
break;
|
||
case 1354:
|
||
kabiseh = true;
|
||
break;
|
||
case 1358:
|
||
kabiseh = true;
|
||
break;
|
||
case 1362:
|
||
kabiseh = true;
|
||
break;
|
||
case 1366:
|
||
kabiseh = true;
|
||
break;
|
||
case 1370:
|
||
kabiseh = true;
|
||
break;
|
||
case 1375:
|
||
kabiseh = true;
|
||
break;
|
||
case 1379:
|
||
kabiseh = true;
|
||
break;
|
||
case 1383:
|
||
kabiseh = true;
|
||
break;
|
||
case 1387:
|
||
kabiseh = true;
|
||
break;
|
||
case 1391:
|
||
kabiseh = true;
|
||
break;
|
||
case 1395:
|
||
kabiseh = true;
|
||
break;
|
||
case 1399:
|
||
kabiseh = true;
|
||
break;
|
||
case 1403:
|
||
kabiseh = true;
|
||
break;
|
||
case 1408:
|
||
kabiseh = true;
|
||
break;
|
||
case 1412:
|
||
kabiseh = true;
|
||
break;
|
||
case 1416:
|
||
kabiseh = true;
|
||
break;
|
||
case 1420:
|
||
kabiseh = true;
|
||
break;
|
||
case 1424:
|
||
kabiseh = true;
|
||
break;
|
||
case 1428:
|
||
kabiseh = true;
|
||
break;
|
||
case 1432:
|
||
kabiseh = true;
|
||
break;
|
||
case 1436:
|
||
kabiseh = true;
|
||
break;
|
||
case 1441:
|
||
kabiseh = true;
|
||
break;
|
||
case 1445:
|
||
kabiseh = true;
|
||
break;
|
||
default:
|
||
kabiseh = false;
|
||
|
||
}
|
||
if (kabiseh == true && day > 30) {
|
||
return false;
|
||
} else if (kabiseh == false && day > 29) {
|
||
return false;
|
||
} else {
|
||
return true;
|
||
}
|
||
} else {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
function computeHourse() {
|
||
$('.res').remove();
|
||
$.ajax({
|
||
/* contentType: 'charset=utf-8',*/
|
||
async: false,
|
||
dataType: 'json',
|
||
type: 'GET',
|
||
url: computeLeaveHourlyAjax,
|
||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||
data: { "startHours": $('#StartHoures').val(), "endHours": $('#EndHours').val() },
|
||
success: function (response) {
|
||
let res = `<span class="res">${response.res}</span>`;
|
||
$('.sumHours').append(res);
|
||
},
|
||
failure: function (response) {
|
||
console.log(5, response);
|
||
}
|
||
});
|
||
}
|
||
|
||
function computeDays() {
|
||
$('.resultDays').remove();
|
||
$.ajax({
|
||
/* contentType: 'charset=utf-8',*/
|
||
async: false,
|
||
dataType: 'json',
|
||
type: 'GET',
|
||
url: computeLeaveDailyAjax,
|
||
headers: { "RequestVerificationToken": antiForgeryToken },
|
||
data: { "startDay": $('#StartLeave').val(), "endDay": $('#EndLeave').val() },
|
||
success: function (response) {
|
||
if (response.status == false) {
|
||
$('.sumDays').addClass("note");
|
||
} else {
|
||
$('.sumDays').removeClass("note");
|
||
}
|
||
let res = `<span class="resultDays">${response.res}</span>`;
|
||
$('.sumDays').append(res);
|
||
},
|
||
failure: function (response) {
|
||
console.log(5, response);
|
||
}
|
||
});
|
||
}
|
||
|
||
function ajaxPersonals() {
|
||
$.ajax({
|
||
url: employeeListAjax,
|
||
type: 'GET',
|
||
success: function (response) {
|
||
$('#cardSectionLeave').addClass('blur');
|
||
$("#cardSectionLeave div *").prop('disabled', true);
|
||
var employees = response.connectedPersonnel.connectedPersonnelViewModels;
|
||
|
||
var employeeOptionsHtml = '<option value="">انتخاب پرسنل ...</option>';
|
||
employees.forEach(function (employee) {
|
||
var black = employee.black ? "blackSelect" : "";
|
||
employeeOptionsHtml += `<option class="${black}" value="${employee.employeeId}">${employee.personName}</option>`;
|
||
});
|
||
$('#employeeSelectList').html(employeeOptionsHtml);
|
||
},
|
||
error: function (xhr, status, error) {
|
||
console.error(xhr.responseText);
|
||
}
|
||
});
|
||
} |