Files
Backend-Api/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/CaseHistory.js
2024-12-22 02:47:29 +03:30

1808 lines
86 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var dateIndex = 0;
var dateEmployeeIndex = null;
var width = $(document).width();
var height = $(document).height();
var hasData = true;
$(document).ready(function () {
$(".select2Option").select2({
language: "fa",
dir: "rtl"
});
$(".select2OptionMobile").select2({
language: "fa",
dir: "rtl",
dropdownParent: $('#searchModal'),
});
$('.loadingButton').on('click', function () {
var button = $(this);
var loadingDiv = button.find('.loading');
loadingDiv.show();
});
var filterEmployeeId = $('#employeeSelect').val();
var filterStart = $('#StartDate').val().trim();
var filterEnd = $('#EndDate').val().trim();
if (filterEmployeeId != 0 || filterStart != '' || filterEnd != '') {
$('.btn-clear-filter').removeClass('disable');
} else {
$('.btn-clear-filter').addClass('disable');
}
var stickyMain = $('.stickyMain');
var stickyElements = $('.sticky');
$(window).scroll(function () {
stickyElements.each(function () {
var scrollTop = $(window).scrollTop();
var elementOffset = $(this).offset().top;
if (scrollTop >= elementOffset - stickyMain.outerHeight()) {
$(this).addClass('is-sticky');
} else {
$(this).removeClass('is-sticky');
}
});
});
$('#search').on('keyup', searchEmployees);
//$('#search').on('keyup', function () {
// let searchValue = $(this).val().toLowerCase();
// $('.employee-row').filter(function () {
// $(this).toggle($(this).find('.employee-name').text().toLowerCase().includes(searchValue));
// });
// updateIndexes();
// if ($(this).val().length > 0) {
// $('#clear-search').removeClass('d-none').addClass('d-flex');
// } else {
// $('#clear-search').removeClass('d-flex').addClass('d-none');
// }
//});
$('#clear-search').on('click', function () {
$('#search').val('');
$('.employee-row').show();
updateIndexes();
$(this).removeClass('d-flex').addClass('d-none');
});
});
function searchEmployees() {
let searchValue = $('#search').val().toLowerCase();
$('.employee-row').filter(function () {
$(this).toggle($(this).find('.employee-name').text().toLowerCase().includes(searchValue));
});
updateIndexes();
if (searchValue.length > 0) {
$('#clear-search').removeClass('d-none').addClass('d-flex');
} else {
$('#clear-search').removeClass('d-flex').addClass('d-none');
}
loadUntilHeightExceeds();
}
function updateIndexes() {
let index = 1;
$('.employee-row:visible .table-number').each(function () {
$(this).text(index++);
});
}
// *************************** مربوط به جستجو در دسکتاپ ********************************
const selectedAll = document.querySelectorAll(".wrapper-dropdown");
var wrapperDropdown = $(".wrapper-dropdown");
$(document).ready(function () {
wrapperDropdown.on("click", function () {
var dropdown = $(this);
var optionsContainer = dropdown.children(".dropdown");
var optionsList = optionsContainer.find(".item");
dropdown.toggleClass("active");
if (dropdown.hasClass("active")) {
wrapperDropdown.not(this).removeClass("active");
}
optionsList.on("click", function () {
var selectedOption = $(this);
var valueData = selectedOption.data("value");
dropdown.removeClass("active");
dropdown.find(".selected-display").text(selectedOption.text());
$("#sendSorting").val(valueData);
optionsList.removeClass("active");
selectedOption.addClass("active");
});
});
var defaultValue = $("#sendSorting").val();
if (defaultValue) {
let defaultItem = $(".dropdown").find(".item[value-data='" + defaultValue + "']");
defaultItem.addClass("active");
var selectedDisplay = wrapperDropdown.find(".selected-display");
selectedDisplay.text(defaultItem.text());
}
$('.btn-search-click').click(function () {
//if ($('#StartDate').val().trim() !=='' && validDate === false) {
if ($('#StartDate').val().trim() !== '' && $('#StartDate').val().length < 10) {
$('#StartDate').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا تاریخ را بصورت صحیح وارد کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
$('#StartDate').removeClass('errored');
}, 3500);
return;
}
if ($('#EndDate').is(":visible")) {
if ($('#EndDate').val().trim() !== '' && $('#EndDate').val().length < 10) {
$('#EndDate').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا تاریخ را بصورت صحیح وارد کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
$('#EndDate').removeClass('errored');
}, 3500);
return;
}
}
var filterEmployeeId = 0;
var filterStart = "";
var filterEnd = "";
if (window.matchMedia('(max-width: 767px)').matches) {
filterEmployeeId = $('#employeeSelectMobile').val();
filterStart = $('#StartDateMobile').val().trim();
filterEnd = $('#EndDateMobile').val().trim();
} else {
filterEmployeeId = $('#employeeSelect').val();
filterStart = $('#StartDate').val().trim();
filterEnd = $('#EndDate').val().trim();
}
if (filterEmployeeId !== "0" || filterStart !== '' || filterEnd !== '') {
$('.btn-clear-filter').removeClass('disable');
} else {
$('.btn-clear-filter').addClass('disable');
}
hasData = true;
dateIndex = 0;
dateEmployeeIndex = null;
$('#caseHistoryLoadData').html('');
caseHistoryLoadAjax();
loadUntilHeightExceeds();
loadEmployeeRollCallTimeSpanForDuration();
if ($('#searchBtnMobile').is(':visible')) {
$('#searchModal').modal('hide');
}
});
});
$('.dropdown-days .item').on("click", function () {
let dataVal = $(this).attr("value-data-normal");
if (dataVal === "OneDay") {
// $('#endDateRollcall').removeClass('d-flex');
$('#endDateRollcall').addClass('d-none');
$('#StartDate').attr("placeholder", "تاریخ");
$('#StartDate').val('');
$('#EndDate').val('');
$('#endDateRollcallMobile').addClass('d-none');
$('#StartDateMobile').attr("placeholder", "تاریخ");
$('#StartDateMobile').val('');
$('#EndDateMobile').val('');
} else {
// $('#endDateRollcall').addClass('d-flex');
$('#endDateRollcall').removeClass('d-none');
$('#StartDate').attr("placeholder", "تاریخ شروع");
$('#StartDate').val('');
$('#EndDate').val('');
$('#endDateRollcallMobile').removeClass('d-none');
$('#StartDateMobile').attr("placeholder", "تاریخ");
$('#StartDateMobile').val('');
$('#EndDateMobile').val('');
}
// $('#dropdown-RollcallDate').val(dataVal);
});
var sendDropdownNormal = $("#sendSorting").val();
if (sendDropdownNormal) {
let itemDropdownNormal = $(".dropdown-normal").find(".item[value-data-normal='" + sendDropdownNormal + "']");
itemDropdownNormal.addClass("active");
var selectedNormalDisplay = $(".wrapper-dropdown-normal").find(".selected-display");
selectedNormalDisplay.text(itemDropdownNormal.text());
}
var sendDropdownYear = $("#sendDropdownYear").val();
if (sendDropdownYear) {
let itemDropdownYear = $(".dropdown-year").find(".item[value-data-year='" + sendDropdownYear + "']");
itemDropdownYear.addClass("active");
var selectedYearDisplay = $(".wrapper-dropdown-year").find(".selected-display");
selectedYearDisplay.text(itemDropdownYear.text());
}
var sendDropdownMonth = $("#sendDropdownMonth").val();
if (sendDropdownMonth) {
let itemDropdownMonth = $(".dropdown-month").find(".item[value-data-month='" + sendDropdownMonth + "']");
itemDropdownMonth.addClass("active");
var selectedMonthDisplay = $(".wrapper-dropdown-month").find(".selected-display");
selectedMonthDisplay.text(itemDropdownMonth.text());
}
$(".date").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("0000/00/00");
function caseHistoryLoadAjax() {
var filterEmployeeId = 0;
var filterStart = "";
var filterEnd = "";
if (window.matchMedia('(max-width: 767px)').matches) {
filterEmployeeId = $('#employeeSelectMobile').val();
filterStart = $('#StartDateMobile').val().trim();
filterEnd = $('#EndDateMobile').val().trim();
} else {
filterEmployeeId = $('#employeeSelect').val();
filterStart = $('#StartDate').val().trim();
filterEnd = $('#EndDate').val().trim();
}
var html = "";
var isHolidyColor = 'garyHolidy';
var data = {
dateIndex: dateIndex,
employeeId: filterEmployeeId,
startDate: filterEnd !== '' ? filterStart : '',
endDate: filterEnd,
exactDateFa: filterEnd === '' ? filterStart : '',
dateEmployeeIndex: dateEmployeeIndex
};
$.ajax({
async: false,
contentType: 'charset=utf-8',
dataType: 'json',
type: 'GET',
url: caseHistoryAjaxLoadData,
data: data,
headers: { "RequestVerificationToken": antiForgeryToken },
success: function (response) {
var caseHistoryData = response.data;
var caseHistoryEmployeeData = response.dataEmployee;
if (response.isSuccedded) {
if (caseHistoryData == null) {
if (caseHistoryEmployeeData.dateGr !== null) {
$('#dateFaEmployee').show();
html += `<div class="Rtable-row Rtable-row--head align-items-center d-none d-md-flex sticky openActionMain" style="background: #58B3B3;border: none !important;cursor: pointer">
<div class="col-4"></div>
<div class="col-4 text-center">
<div class="Rtable-cell column-heading text-center justify-content-center">${caseHistoryEmployeeData.persianMonthName + ` ` + caseHistoryEmployeeData.persianYear}</div>
</div>
<div class="col-4 text-end">
</div>
</div>
<div class="Rtable-row Rtable-row--head align-items-center d-flex d-md-none sticky openActionMain" style="background: #58B3B3;border: none !important;cursor: pointer">
<div class="col-4">
<div class="Rtable-cell column-heading text-center justify-content-start">${caseHistoryEmployeeData.rollCalls.length > 0 ? caseHistoryEmployeeData.rollCalls[0].employeeFullName : `-`}
</div>
</div>
<div class="col-4 text-center">
<div class="Rtable-cell column-heading text-center">${caseHistoryEmployeeData.persianMonthName + ` ` + caseHistoryEmployeeData.persianYear}</div>
</div>
<div class="col-4 text-end">
</div>
</div>`;
//html += `<div class="operations-btns-main"><div></div>`;
$.each(caseHistoryEmployeeData.rollCalls, function (i, item) {
html += `
<div class="Rtable-row align-items-center position-relative openAction employee-row ${caseHistoryEmployeeData.rollCalls.length === 1 ? "radius" : ""} ${i === 0 ? "firstRadius" : ""} ${i === caseHistoryEmployeeData.rollCalls.length-1 ? "lastRadius" : ""} ${item.isHoliday ? isHolidyColor : ``} ${item.hasLeave ? `leaveItem` : ``} ${!item.isHoliday && !item.hasLeave && item.isAbsent ? `absenceItem` : ``}">
<div class="Rtable-cell width1">
<div class="Rtable-cell--heading d-none">
ردیف
</div>
<div class="Rtable-cell--content">
<div class="d-flex justify-content-center align-items-center table-number">
${i + 1}
</div>
</div>
</div>
<div class="Rtable-cell width2 d-none d-md-block">
<div class="Rtable-cell--heading d-none">نام پرسنل</div>
<div class="Rtable-cell--content employee-name">
${item.employeeFullName}
</div>
</div>
<div class="Rtable-cell width2 d-block d-md-none">
<div class="Rtable-cell--heading d-none">تاریخ</div>
<div class="Rtable-cell--content">
${item.dayOfWeekFa} - ${item.dateFa}
</div>
</div>
<div class="Rtable-cell width3 d-none d-md-block">
<div class="Rtable-cell--content text-center">
<div class="d-md-none d-none">شماره پرسنلی: </div>
<div class="d-flex ms-1">${item.personnelCode}</div>
</div>
</div>
<div class="Rtable-cell width3 d-none d-md-flex justify-content-center">
<div class="Rtable-cell--content justify-content-start">
<div class="d-md-none d-none">تاریخ: </div>
<div class="">${item.dayOfWeekFa} - </div>
<div class="ms-1"> ${item.dateFa}</div>
</div>
</div>
<div class="Rtable-cell width4 position-relative bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">تاخیر در ورود: </div>
<div class="d-flex ms-1">-</div>
</div>
</div>
<div class="Rtable-cell width5 position-relative bg-filter text-center d-none d-md-block">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت ورود</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.startDate ?? `-`}</div>
</div>`;
});
} else {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت ورود</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>
<div class="Rtable-cell width6 position-relative bg-filter text-center d-none d-md-block">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت خروج</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.endDate ?? `-`}</div>
</div>`;
});
} else {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت خروج</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>
<div class="Rtable-cell position-relative width7 bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">تجمیع در خروج: </div>
<div class="d-flex ms-1">-</div>
</div>
</div>
<div class="Rtable-cell position-relative width8 bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">مجموع ساعات کاری: </div>
<div class="d-flex ms-1">${item.totalWorkingHours}</div>
</div>
</div>
<div class="Rtable-cell position-relative width9 bg-filter d-none d-md-flex justify-content-end">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">عملیات: </div>
<button data-edit-id="${item.employeeId}" data-edit-date="${item.dateFa}" class="btn-edit position-relative d-md-block d-none ${item.hasLeave ? `disable` : ``}">
<svg width="20" height="20" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.6027 6.838L5.85304 13.5876C5.84201 13.5987 5.83107 13.6096 5.8202 13.6204C5.65773 13.7825 5.5139 13.9261 5.41254 14.1051C5.31117 14.2841 5.2621 14.4813 5.20667 14.704C5.20296 14.7189 5.19923 14.7339 5.19545 14.7491L4.5813 17.2057C4.57908 17.2145 4.57686 17.2234 4.57462 17.2323C4.53537 17.389 4.49347 17.5564 4.47972 17.6969C4.46458 17.8516 4.46811 18.1127 4.67752 18.3221L5.03035 17.9693L4.67752 18.3221C4.88693 18.5315 5.14799 18.535 5.30272 18.5199C5.44326 18.5062 5.6106 18.4643 5.76728 18.425C5.77622 18.4228 5.78512 18.4205 5.79398 18.4183L8.25057 17.8042C8.26569 17.8004 8.28069 17.7967 8.29558 17.793C8.51832 17.7375 8.71549 17.6885 8.89452 17.5871C9.07356 17.4857 9.21708 17.3419 9.37921 17.1794C9.39005 17.1686 9.40097 17.1576 9.412 17.1466L16.1616 10.397L16.1849 10.3737C16.4983 10.0603 16.7684 9.79025 16.9556 9.54492C17.1562 9.282 17.3081 8.98958 17.3081 8.6292C17.3081 8.26759 17.1541 7.97384 16.9522 7.71001C16.7633 7.46303 16.4905 7.1903 16.1731 6.87292L16.1499 6.84972L16.1267 6.82652C15.8093 6.5091 15.5366 6.23634 15.2896 6.04738C15.0258 5.84553 14.732 5.69156 14.3704 5.69156C14.01 5.69156 13.7176 5.84345 13.4547 6.04405C13.2094 6.23123 12.9393 6.5013 12.6259 6.81474L12.6027 6.838Z" stroke-width="1.5" stroke="#4DA9D1" />
<path d="M11.9939 7.20397L14.8457 5.30273L17.6976 8.15459L15.7964 11.0064L11.9939 7.20397Z" fill="#4DA9D1" />
</svg>
<span class="mx-1">ویرایش</span>
</button>
<button data-remove-id="${item.employeeId}" data-remove-date="${item.dateFa}" type="button" class="btn-delete removeReward d-md-block d-none ${item.hasLeave || item.isAbsent ? `disable` : ``}">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 22 22" fill="none" stroke="currentColor">
<path d="M8.70825 13.2915L8.70825 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M13.2917 13.2915L13.2917 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M2.75 5.9585H19.25V5.9585C18.122 5.9585 17.558 5.9585 17.1279 6.17946C16.7561 6.3704 16.4536 6.67297 16.2626 7.04469C16.0417 7.47488 16.0417 8.03886 16.0417 9.16683V13.8752C16.0417 15.7608 16.0417 16.7036 15.4559 17.2894C14.8701 17.8752 13.9273 17.8752 12.0417 17.8752H9.95833C8.07271 17.8752 7.12991 17.8752 6.54412 17.2894C5.95833 16.7036 5.95833 15.7608 5.95833 13.8752V9.16683C5.95833 8.03886 5.95833 7.47488 5.73737 7.04469C5.54643 6.67297 5.24386 6.3704 4.87214 6.17946C4.44195 5.9585 3.87797 5.9585 2.75 5.9585V5.9585Z" stroke-width="1.5" stroke-linecap="round" />
<path d="M8.70841 3.20839C8.70841 3.20839 9.16675 2.2915 11.0001 2.2915C12.8334 2.2915 13.2917 3.20817 13.2917 3.20817" stroke-width="1.5" stroke-linecap="round" />
</svg>
<span class="mx-1">حذف</span>
</button>
</div>
</div>`;
html += `<div class="width3 d-block d-md-none" style="width:1% !important;border-right: 1px dashed #CACACA;padding: 0 20px 0 7px;">-</div>`;
html += `<div class="width4 d-block d-md-none" style="width:18% !important">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.startDate ?? "-"}</div>
</div>`;
});
} else {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>`;
html += `<div class="width4 d-block d-md-none" style="width:18% !important">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.endDate ?? "-"}</div>
</div>`;
});
} else {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>`;
html +=
`<div class="width3 d-block d-md-none" style="width:1% !important;padding: 0 0 0 20px;">-</div>`;
html += `</div>`;
if (!item.hasLeave) {
html += `<div class="operation-div d-md-none d-block w-100">
<div class="operations-btns rollcall-operations-mobile">
<div class="row align-items-center">
<div class="col-6">
<div class="d-md-none d-flex align-items-center position-relative justify-content-start">
<div class="Rtable-cell--content">
تاریخ
</div>
</div>
</div>
<div class="col-6">
<div class="d-md-none d-flex align-items-center position-relative justify-content-end">
<div class="Rtable-cell--content">
${item.dateFa}
</div>
</div>
</div>
<div class="col-5">
<div class="d-md-none d-flex align-items-center position-relative justify-content-start">
<div class="Rtable-cell--content">
شماره پرسنل: ${item.personnelCode}
</div>
</div>
</div>
<div class="col-7">
<div class="d-md-none d-flex align-items-center position-relative justify-content-end">
<div class="Rtable-cell--content">
مجموع ساعات کارکرد: ${item.totalWorkingHours}
</div>
</div>
</div>
<div class="col-12 mt-2">
<div class="d-flex">
<button data-edit-id="${item.employeeId}" data-edit-date="${item.dateFa}" class="btn-edit position-relative d-md-none d-flex justify-content-center align-items-center ${item.hasLeave ? `disable` : ``}" style="width:100%">
<svg width="20" height="20" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.6027 6.838L5.85304 13.5876C5.84201 13.5987 5.83107 13.6096 5.8202 13.6204C5.65773 13.7825 5.5139 13.9261 5.41254 14.1051C5.31117 14.2841 5.2621 14.4813 5.20667 14.704C5.20296 14.7189 5.19923 14.7339 5.19545 14.7491L4.5813 17.2057C4.57908 17.2145 4.57686 17.2234 4.57462 17.2323C4.53537 17.389 4.49347 17.5564 4.47972 17.6969C4.46458 17.8516 4.46811 18.1127 4.67752 18.3221L5.03035 17.9693L4.67752 18.3221C4.88693 18.5315 5.14799 18.535 5.30272 18.5199C5.44326 18.5062 5.6106 18.4643 5.76728 18.425C5.77622 18.4228 5.78512 18.4205 5.79398 18.4183L8.25057 17.8042C8.26569 17.8004 8.28069 17.7967 8.29558 17.793C8.51832 17.7375 8.71549 17.6885 8.89452 17.5871C9.07356 17.4857 9.21708 17.3419 9.37921 17.1794C9.39005 17.1686 9.40097 17.1576 9.412 17.1466L16.1616 10.397L16.1849 10.3737C16.4983 10.0603 16.7684 9.79025 16.9556 9.54492C17.1562 9.282 17.3081 8.98958 17.3081 8.6292C17.3081 8.26759 17.1541 7.97384 16.9522 7.71001C16.7633 7.46303 16.4905 7.1903 16.1731 6.87292L16.1499 6.84972L16.1267 6.82652C15.8093 6.5091 15.5366 6.23634 15.2896 6.04738C15.0258 5.84553 14.732 5.69156 14.3704 5.69156C14.01 5.69156 13.7176 5.84345 13.4547 6.04405C13.2094 6.23123 12.9393 6.5013 12.6259 6.81474L12.6027 6.838Z" stroke-width="1.5" stroke="#4DA9D1" />
<path d="M11.9939 7.20397L14.8457 5.30273L17.6976 8.15459L15.7964 11.0064L11.9939 7.20397Z" fill="#4DA9D1" />
</svg>
<span class="mx-1 d-block" style="color: #009EE2;">ویرایش</span>
</button>
<button data-remove-id="${item.employeeId}" data-remove-date="${item.dateFa}" type="button" class="btn-delete removeReward d-md-none d-flex justify-content-center align-items-center ${item.hasLeave || item.isAbsent ? `disable` : ``}" style="width:100%">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 22 22" fill="none" stroke="currentColor">
<path d="M8.70825 13.2915L8.70825 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M13.2917 13.2915L13.2917 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M2.75 5.9585H19.25V5.9585C18.122 5.9585 17.558 5.9585 17.1279 6.17946C16.7561 6.3704 16.4536 6.67297 16.2626 7.04469C16.0417 7.47488 16.0417 8.03886 16.0417 9.16683V13.8752C16.0417 15.7608 16.0417 16.7036 15.4559 17.2894C14.8701 17.8752 13.9273 17.8752 12.0417 17.8752H9.95833C8.07271 17.8752 7.12991 17.8752 6.54412 17.2894C5.95833 16.7036 5.95833 15.7608 5.95833 13.8752V9.16683C5.95833 8.03886 5.95833 7.47488 5.73737 7.04469C5.54643 6.67297 5.24386 6.3704 4.87214 6.17946C4.44195 5.9585 3.87797 5.9585 2.75 5.9585V5.9585Z" stroke-width="1.5" stroke-linecap="round" />
<path d="M8.70841 3.20839C8.70841 3.20839 9.16675 2.2915 11.0001 2.2915C12.8334 2.2915 13.2917 3.20817 13.2917 3.20817" stroke-width="1.5" stroke-linecap="round" />
</svg>
<span class="mx-1 d-block" style="color: #FF5151;">حذف</span>
</button>
</div>
</div>
</div>
</div>
</div>`;
}
});
//html += `</div>`;
//dateIndex++;
dateEmployeeIndex = caseHistoryEmployeeData.dateIndex;
$('#caseHistoryLoadData').append(html);
if (dateEmployeeIndex == null)
hasData = false;
} else {
hasData = false;
}
} else {
if (caseHistoryData.dateFa !== null) {
$('#dateFaEmployee').hide();
html += `
<div class="Rtable-row Rtable-row--head align-items-center d-flex sticky openActionMain" style="background: #58B3B3;border: none !important;cursor: pointer">
<div class="col-4 text-start">
<div class="Rtable-cell column-heading justify-content-center">
${caseHistoryData.dayOfWeekFa}
${caseHistoryData.isHoliday ? `<span class="mx-1" style="">(تعطیل)</span>` : ``}
</div>
</div>
<div class="col-4 text-center">
<div class="Rtable-cell column-heading text-center justify-content-center">${caseHistoryData.dateFa}</div>
</div>
<div class="col-4 text-end">
</div>
</div>
`;
//html += `<div class="operations-btns-main"><div></div>`;
$.each(caseHistoryData.activeEmployees, function (i, item) {
html += `
<div class="Rtable-row align-items-center position-relative openAction employee-row ${caseHistoryData.activeEmployees.length === 1 ? "radius" : ""} ${i === 0 ? "firstRadius" : ""} ${i === caseHistoryData.activeEmployees.length-1 ? "lastRadius" : ""} ${caseHistoryData.isHoliday ? isHolidyColor : ``} ${item.hasLeave ? `leaveItem` : ``} ${!caseHistoryData.isHoliday && !item.hasLeave && item.isAbsent ? `absenceItem` : ``}">
<div class="Rtable-cell width1">
<div class="Rtable-cell--heading d-none">
ردیف
</div>
<div class="Rtable-cell--content">
<div class="d-flex justify-content-center align-items-center table-number">
${i + 1}
</div>
</div>
</div>
<div class="Rtable-cell width2">
<div class="Rtable-cell--heading d-none">نام پرسنل</div>
<div class="Rtable-cell--content employee-name">
${item.employeeFullName}
</div>
</div>
<div class="Rtable-cell width3 d-none d-md-block">
<div class="Rtable-cell--content text-center">
<div class="d-md-none d-none">شماره پرسنلی: </div>
<div class="d-flex ms-1">${item.personnelCode}</div>
</div>
</div>
<div class="Rtable-cell width4 position-relative bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">تاخیر در ورود: </div>
<div class="d-flex ms-1">-</div>
</div>
</div>
<div class="Rtable-cell width5 position-relative bg-filter text-center d-none d-md-block h-100">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت ورود</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.startDate ?? `-`}</div>
</div>`;
});
} else {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت ورود</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>
<div class="Rtable-cell width6 position-relative bg-filter text-center d-none d-md-block h-100">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت خروج</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.endDate ?? `-`}</div>
</div>`;
});
} else {
html += `<div class="Rtable-cell--heading d-md-none d-none">ساعت خروج</div>
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>
<div class="Rtable-cell position-relative width7 bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">تجمیع در خروج: </div>
<div class="d-flex ms-1">-</div>
</div>
</div>
<div class="Rtable-cell position-relative width8 bg-filter d-none d-md-block">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">مجموع ساعات کاری: </div>
<div class="d-flex ms-1">${item.totalWorkingHours}</div>
</div>
</div>
<div class="Rtable-cell position-relative width9 bg-filter d-none d-md-flex justify-content-end">
<div class="Rtable-cell--content text-center h-100">
<div class="d-md-none d-none">عملیات: </div>
<button data-edit-id="${item.employeeId}" data-edit-date="${caseHistoryData.dateFa}" class="btn-edit position-relative d-md-block d-none ${item.hasLeave ? `disable` : ``}">
<svg width="20" height="20" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.6027 6.838L5.85304 13.5876C5.84201 13.5987 5.83107 13.6096 5.8202 13.6204C5.65773 13.7825 5.5139 13.9261 5.41254 14.1051C5.31117 14.2841 5.2621 14.4813 5.20667 14.704C5.20296 14.7189 5.19923 14.7339 5.19545 14.7491L4.5813 17.2057C4.57908 17.2145 4.57686 17.2234 4.57462 17.2323C4.53537 17.389 4.49347 17.5564 4.47972 17.6969C4.46458 17.8516 4.46811 18.1127 4.67752 18.3221L5.03035 17.9693L4.67752 18.3221C4.88693 18.5315 5.14799 18.535 5.30272 18.5199C5.44326 18.5062 5.6106 18.4643 5.76728 18.425C5.77622 18.4228 5.78512 18.4205 5.79398 18.4183L8.25057 17.8042C8.26569 17.8004 8.28069 17.7967 8.29558 17.793C8.51832 17.7375 8.71549 17.6885 8.89452 17.5871C9.07356 17.4857 9.21708 17.3419 9.37921 17.1794C9.39005 17.1686 9.40097 17.1576 9.412 17.1466L16.1616 10.397L16.1849 10.3737C16.4983 10.0603 16.7684 9.79025 16.9556 9.54492C17.1562 9.282 17.3081 8.98958 17.3081 8.6292C17.3081 8.26759 17.1541 7.97384 16.9522 7.71001C16.7633 7.46303 16.4905 7.1903 16.1731 6.87292L16.1499 6.84972L16.1267 6.82652C15.8093 6.5091 15.5366 6.23634 15.2896 6.04738C15.0258 5.84553 14.732 5.69156 14.3704 5.69156C14.01 5.69156 13.7176 5.84345 13.4547 6.04405C13.2094 6.23123 12.9393 6.5013 12.6259 6.81474L12.6027 6.838Z" stroke-width="1.5" stroke="#4DA9D1" />
<path d="M11.9939 7.20397L14.8457 5.30273L17.6976 8.15459L15.7964 11.0064L11.9939 7.20397Z" fill="#4DA9D1" />
</svg>
<span class="mx-1">ویرایش</span>
</button>
<button data-remove-id="${item.employeeId}" data-remove-date="${caseHistoryData.dateFa}" type="button" class="btn-delete removeReward d-md-block d-none ${item.hasLeave || item.isAbsent ? `disable` : ``}">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 22 22" fill="none" stroke="currentColor">
<path d="M8.70825 13.2915L8.70825 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M13.2917 13.2915L13.2917 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M2.75 5.9585H19.25V5.9585C18.122 5.9585 17.558 5.9585 17.1279 6.17946C16.7561 6.3704 16.4536 6.67297 16.2626 7.04469C16.0417 7.47488 16.0417 8.03886 16.0417 9.16683V13.8752C16.0417 15.7608 16.0417 16.7036 15.4559 17.2894C14.8701 17.8752 13.9273 17.8752 12.0417 17.8752H9.95833C8.07271 17.8752 7.12991 17.8752 6.54412 17.2894C5.95833 16.7036 5.95833 15.7608 5.95833 13.8752V9.16683C5.95833 8.03886 5.95833 7.47488 5.73737 7.04469C5.54643 6.67297 5.24386 6.3704 4.87214 6.17946C4.44195 5.9585 3.87797 5.9585 2.75 5.9585V5.9585Z" stroke-width="1.5" stroke-linecap="round" />
<path d="M8.70841 3.20839C8.70841 3.20839 9.16675 2.2915 11.0001 2.2915C12.8334 2.2915 13.2917 3.20817 13.2917 3.20817" stroke-width="1.5" stroke-linecap="round" />
</svg>
<span class="mx-1">حذف</span>
</button>
</div>
</div>`;
html += `<div class="width3 d-block d-md-none" style="width:1% !important;border-right: 1px dashed #CACACA;padding: 0 20px 0 7px;">-</div>`;
html += `<div class="width4 d-block d-md-none" style="width:18% !important">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.startDate ?? "-"}</div>
</div>`;
});
} else {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>`;
html += `<div class="width4 d-block d-md-none" style="width:18% !important">`;
if (item.rollCallTimesList.length > 0) {
item.rollCallTimesList.forEach(function (itemTime) {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>${itemTime.endDate ?? "-"}</div>
</div>`;
});
} else {
html += `
<div style="direction: ltr; z-index: 6; position: relative" class="Rtable-cell--content text-center">
<div>-</div>
</div>`;
}
html += `</div>`;
html += `<div class="width3 d-block d-md-none" style="width:1% !important;padding: 0 0 0 20px;">-</div>`;
html += `</div>`;
if (!item.hasLeave) {
html += `<div class="operation-div d-md-none d-block w-100">
<div class="operations-btns rollcall-operations-mobile">
<div class="row align-items-center">
<div class="col-6">
<div class="d-md-none d-flex align-items-center position-relative">
<div class="Rtable-cell--content">
شماره پرسنل: ${item.personnelCode}
</div>
</div>
</div>
<div class="col-6">
<div class="d-md-none d-flex align-items-center position-relative">
<div class="Rtable-cell--content text-end w-100">
مجموع ساعات کارکرد: ${item.totalWorkingHours}
</div>
</div>
</div>
<div class="col-6 mt-2">
<button data-edit-id="${item.employeeId}" data-edit-date="${caseHistoryData.dateFa}" class="btn-edit position-relative d-md-none d-flex justify-content-center align-items-center ${item.hasLeave ? `disable` : ``}" style="width:100%">
<svg width="20" height="20" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.6027 6.838L5.85304 13.5876C5.84201 13.5987 5.83107 13.6096 5.8202 13.6204C5.65773 13.7825 5.5139 13.9261 5.41254 14.1051C5.31117 14.2841 5.2621 14.4813 5.20667 14.704C5.20296 14.7189 5.19923 14.7339 5.19545 14.7491L4.5813 17.2057C4.57908 17.2145 4.57686 17.2234 4.57462 17.2323C4.53537 17.389 4.49347 17.5564 4.47972 17.6969C4.46458 17.8516 4.46811 18.1127 4.67752 18.3221L5.03035 17.9693L4.67752 18.3221C4.88693 18.5315 5.14799 18.535 5.30272 18.5199C5.44326 18.5062 5.6106 18.4643 5.76728 18.425C5.77622 18.4228 5.78512 18.4205 5.79398 18.4183L8.25057 17.8042C8.26569 17.8004 8.28069 17.7967 8.29558 17.793C8.51832 17.7375 8.71549 17.6885 8.89452 17.5871C9.07356 17.4857 9.21708 17.3419 9.37921 17.1794C9.39005 17.1686 9.40097 17.1576 9.412 17.1466L16.1616 10.397L16.1849 10.3737C16.4983 10.0603 16.7684 9.79025 16.9556 9.54492C17.1562 9.282 17.3081 8.98958 17.3081 8.6292C17.3081 8.26759 17.1541 7.97384 16.9522 7.71001C16.7633 7.46303 16.4905 7.1903 16.1731 6.87292L16.1499 6.84972L16.1267 6.82652C15.8093 6.5091 15.5366 6.23634 15.2896 6.04738C15.0258 5.84553 14.732 5.69156 14.3704 5.69156C14.01 5.69156 13.7176 5.84345 13.4547 6.04405C13.2094 6.23123 12.9393 6.5013 12.6259 6.81474L12.6027 6.838Z" stroke-width="1.5" stroke="#4DA9D1" />
<path d="M11.9939 7.20397L14.8457 5.30273L17.6976 8.15459L15.7964 11.0064L11.9939 7.20397Z" fill="#4DA9D1" />
</svg>
<span class="mx-1 d-block" style="color: #009EE2;">ویرایش</span>
</button>
</div>
<div class="col-6 mt-2">
<button data-remove-id="${item.employeeId}" data-remove-date="${caseHistoryData.dateFa}" type="button" class="btn-delete removeReward d-md-none d-flex justify-content-center align-items-center ${item.hasLeave || item.isAbsent ? `disable` : ``}" style="width:100%">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 22 22" fill="none" stroke="currentColor">
<path d="M8.70825 13.2915L8.70825 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M13.2917 13.2915L13.2917 10.5415" stroke-width="1.5" stroke-linecap="round" />
<path d="M2.75 5.9585H19.25V5.9585C18.122 5.9585 17.558 5.9585 17.1279 6.17946C16.7561 6.3704 16.4536 6.67297 16.2626 7.04469C16.0417 7.47488 16.0417 8.03886 16.0417 9.16683V13.8752C16.0417 15.7608 16.0417 16.7036 15.4559 17.2894C14.8701 17.8752 13.9273 17.8752 12.0417 17.8752H9.95833C8.07271 17.8752 7.12991 17.8752 6.54412 17.2894C5.95833 16.7036 5.95833 15.7608 5.95833 13.8752V9.16683C5.95833 8.03886 5.95833 7.47488 5.73737 7.04469C5.54643 6.67297 5.24386 6.3704 4.87214 6.17946C4.44195 5.9585 3.87797 5.9585 2.75 5.9585V5.9585Z" stroke-width="1.5" stroke-linecap="round" />
<path d="M8.70841 3.20839C8.70841 3.20839 9.16675 2.2915 11.0001 2.2915C12.8334 2.2915 13.2917 3.20817 13.2917 3.20817" stroke-width="1.5" stroke-linecap="round" />
</svg>
<span class="mx-1 d-block" style="color: #FF5151;">حذف</span>
</button>
</div>
</div>
</div>
</div>`;
}
});
//html += `</div>`;
dateIndex++;
$('#caseHistoryLoadData').append(html);
} else {
hasData = false;
}
}
} else {
hasData = false;
}
searchEmployees();
},
failure: function (response) {
console.log(response);
hasData = false;
}
});
}
function loadUntilHeightExceeds() {
var heightCard = $('#containerHeight').height();
while (heightCard < height && hasData) {
caseHistoryLoadAjax();
heightCard = $('#containerHeight').height();
}
}
if (hasData) {
loadUntilHeightExceeds();
}
$('.goToTop').on('click',function () {
$('html, body').animate({ scrollTop: 0 }, 360);
return false;
});
$(window).scroll(function () {
if (hasData) {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) {
caseHistoryLoadAjax();
}
}
if ($(this).scrollTop() > 100) {
$('.goToTop').show().fadeIn();
} else {
$('.goToTop').fadeOut().hide();
}
});
//************************************ برای مشاهده زمان و ساعت **********************************/
//$(".date").mask("0000/00/00");
$(".date").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("0000/00/00");
$(".date").keyup(function () {
let value = $(this).val();
let lengthValue = value.length;
if (lengthValue == 10) {
if (!dateValidcheck(this)) {
$(this).addClass("errored");
} else {
$(this).removeClass("errored");
}
} else if (lengthValue == 0) {
$(this).removeClass("errored");
}
});
var validDate = 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;
validDate = true;
$('.date').removeClass('errored');
} else {
if (inputField1.value != "") {
// inputField1.style.backgroundColor = '#f94c4c';
//$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
start1valid = false;
validDate = false;
$('.date').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا تاریخ را بصورت صحیح وارد کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
$('.date').removeClass('errored');
}, 3500);
}
}
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;
}
}
//************************************ برای مشاهده زمان و ساعت **********************************/
//******************** نمایش تاریخ در موبایل ********************
if ($(window).width() < 768) {
// Input Start Date
var middleYearIndexDateStart = 2;
var selectedMonthDateStart = 2;
var middleDayIndexStart = 2;
$('.persianDateInputStartDate').on('click',
function () {
$('#overlaySearchAdvance').addClass("overlaySearchAdvance");
var datepicker = $(this);
if ($(this).parent().find('.datepicker-container-date').length) {
return false;
} else {
$(this).parent().append(`
<div class="datepicker-container-date">
<div class="datepicker-container-date-div">
<div class="date-container">
<div id="yearsValue" class="years scrollable-container"></div>
<div id="monthsValue" class="months scrollable-container"></div>
<div id="daysValue" class="days scrollable-container"></div>
</div>
<div class="d-flex justify-content-around">
<button type="button" class="btn-secondary" id="cancelDateStart" style="width:100px; font-size: 11px;">انصراف</button>
<button type="button" class="btn-primary" id="confirmDateStart" style="width:100px; font-size: 11px;">تائید</button>
</div>
</div>
</div>
`);
if ($(this).val() != '') {
let number = selectedMonthDateStart + 1;
var middleMonthIndex = number;
}
}
var datepickerContainer = $(this).parent().find('.datepicker-container-date');
var years = datepickerContainer.find('.years');
var months = datepickerContainer.find('.months');
var days = datepickerContainer.find('.days');
// datepickerContainer.width(datepicker.outerWidth());
// Populate years, months, and days
var middleYearIndexArray = [];
var yearlyList = [];
yearlyList.push({ year: 1368 });
yearlyList.push({ year: 1369 });
itemsYearList.forEach(function (year) {
yearlyList.push({ year: Number(year) });
});
var yearIndex = yearlyList.length;
yearIndex = yearIndex - 1;
var no3 = yearlyList[yearIndex].year + 1;
var no4 = yearlyList[yearIndex].year + 2;
yearlyList.push({ year: no3 });
yearlyList.push({ year: no4 });
var i = 0;
for (var j = yearlyList[yearIndex + 2].year; j >= 1368; j--) {
let y = { index: i, value: j };
middleYearIndexArray.push(j);
i++;
var formattedNumber = String(j).padStart(2, '0');
if (j == no3 || j == no4) {
years.append($('<span>').text('-').css('visibility', 'hidden'));
} else if (j == 1368 || j == 1369) {
years.append($('<span>').text(formattedNumber).css('visibility', 'hidden'));
} else {
years.append($('<span>').text(formattedNumber));
}
years.children('span').eq(middleYearIndexDateStart).addClass('chosen-date');
var containerHeightYear = years.height();
var optionHeightYear = years.children('span').outerHeight();
var scrollOffsetYear = optionHeightYear * middleYearIndexDateStart;
years.scrollTop(scrollOffsetYear - containerHeightYear / 2);
}
var monthNames = ['-', 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند', '-'];
for (var j = 0; j < 14; j++) {
var monthIndex = j;
// var monthIndex = (j * 12) % 12;
// var monthIndex = (j + i * 12) % 12;
var monthName = monthNames[j];
if (j == 0) {
months.append($('<span>').text('-').css('visibility', 'hidden'));
months.append($('<span>').text('-').css('visibility', 'hidden'));
} else if (j == 13) {
months.append($('<span>').text('-').css('visibility', 'hidden'));
months.append($('<span>').text('-').css('visibility', 'hidden'));
} else {
months.append($('<span>').text(monthName));
}
var containerHeightMonth = months.height();
var optionHeightMonth = months.children('span').outerHeight();
var scrollOffsetMonth = optionHeightMonth * middleMonthIndex;
months.scrollTop(scrollOffsetMonth - containerHeightMonth / 2);
}
for (var d = 1; d <= 31; d++) {
var formattedNumber = String(d).padStart(2, '0');
if (d == 1) {
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text(formattedNumber));
} else if (d == 31) {
days.append($('<span>').text(formattedNumber));
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text('-').css('visibility', 'hidden'));
} else {
days.append($('<span>').text(formattedNumber));
}
// var middleDayIndex = Math.floor(days.children('span').length / 2) - 45;
var containerHeightDay = days.height();
var optionHeightDay = days.children('span').outerHeight();
var scrollOffsetDay = optionHeightDay * middleDayIndexStart;
days.scrollTop(scrollOffsetDay - containerHeightDay / 2);
}
var selectedYear = yearlyList[yearIndex].year;
var selectedMonth = "01";
var selectedNumberMonth = 1;
var selectedDay = "01";
var yearsScrollTop;
var monthScrollTop;
var dayScrollTop;
var scrollTimeout;
var formattedDate;
// Scroll event listener
datepickerContainer.find('.scrollable-container').on('scroll', function () {
var optionHeightYear = years.children('span').outerHeight();
var scrollTopYear = years.scrollTop() + (optionHeightYear * 2);
var selectedIndexYear = Math.round(scrollTopYear / optionHeightYear);
yearsScrollTop = years.scrollTop();
years.children('span').removeClass('chosen-date');
years.children('span').eq(selectedIndexYear).addClass('chosen-date');
var selectedValueYear = years.children('span').eq(selectedIndexYear).text();
var optionHeightMonth = months.children('span').outerHeight();
var scrollTopMonth = Math.round((months.scrollTop() + (optionHeightMonth * 2)) / 10) * 10;
var selectedIndexMonth = Math.round(scrollTopMonth / optionHeightMonth);
months.children('span').removeClass('chosen-date');
months.children('span').eq(selectedIndexMonth).addClass('chosen-date');
monthScrollTop = months.scrollTop();
var selectedValueMonth = months.children('span').eq(selectedIndexMonth).text();
var optionHeightDay = days.children('span').outerHeight();
var scrollTopDay = days.scrollTop() + (optionHeightDay * 2);
var selectedIndexDay = Math.round(scrollTopDay / optionHeightDay);
dayScrollTop = days.scrollTop();
days.children('span').removeClass('chosen-date');
days.children('span').eq(selectedIndexDay).addClass('chosen-date');
var selectedValueDay = days.children('span').eq(selectedIndexDay).text();
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(function () {
var scrollTopYearRounded = customRound(yearsScrollTop);
var scrollTopMonthRounded = customRound(monthScrollTop);
var scrollTopDayRounded = customRound(dayScrollTop);
if (yearsScrollTop !== scrollTopYearRounded) {
years.scrollTop(scrollTopYearRounded);
}
if (monthScrollTop !== scrollTopMonthRounded) {
months.scrollTop(scrollTopMonthRounded);
}
if (dayScrollTop !== scrollTopDayRounded) {
days.scrollTop(scrollTopDayRounded);
}
},
250);
var containerId = $(this).attr('id');
if (containerId === 'yearsValue') {
selectedYear = selectedValueYear;
index = middleYearIndexArray.indexOf(Number(selectedValueYear));
middleYearIndexDateStart = index;
} else if (containerId === 'monthsValue') {
if (selectedValueMonth === 'فروردین') {
selectedMonth = '01';
selectedNumberMonth = 1;
} else if (selectedValueMonth === 'اردیبهشت') {
selectedMonth = '02';
selectedNumberMonth = 2;
} else if (selectedValueMonth === 'خرداد') {
selectedMonth = '03';
selectedNumberMonth = 3;
} else if (selectedValueMonth === 'تیر') {
selectedMonth = '04';
selectedNumberMonth = 4;
} else if (selectedValueMonth === 'مرداد') {
selectedMonth = '05';
selectedNumberMonth = 5;
} else if (selectedValueMonth === 'شهریور') {
selectedMonth = '06';
selectedNumberMonth = 6;
} else if (selectedValueMonth === 'مهر') {
selectedMonth = '07';
selectedNumberMonth = 7;
} else if (selectedValueMonth === 'آبان') {
selectedMonth = '08';
selectedNumberMonth = 8;
} else if (selectedValueMonth === 'آذر') {
selectedMonth = '09';
selectedNumberMonth = 9;
} else if (selectedValueMonth === 'دی') {
selectedMonth = '10';
selectedNumberMonth = 10;
} else if (selectedValueMonth === 'بهمن') {
selectedMonth = '11';
selectedNumberMonth = 11;
} else if (selectedValueMonth === 'اسفند') {
selectedMonth = '12';
selectedNumberMonth = 12;
}
} else if (containerId === 'daysValue') {
selectedDay = selectedValueDay;
middleDayIndexStart = parseInt(selectedValueDay) + 1;
}
selectedMonthDateStart = selectedNumberMonth;
formattedDate = selectedYear + '/' + selectedMonth + '/' + selectedDay;
datepicker.val(formattedDate);
});
$(document).on('click', '#overlaySearchAdvance', function () {
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
datepickerContainer.remove();
});
$(document).on('click', '.chosen-date', function () {
$('#start-date').text(formattedDate);
$('.start-date').val(formattedDate);
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
datepickerContainer.remove();
});
$(document).on('click', '#confirmDateStart', function (event) {
$(this).parents().eq(2).find('.persianDateInput').val(formattedDate);
$('#start-date').text(formattedDate);
$('.start-date').val(formattedDate);
datepickerContainer.remove();
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
});
$(document).on('click', '#cancelDateStart', function (event) {
// $(this).parents().eq(3).find('.persianDateInputStartDate').val('');
$('#start-date').text('تاریخ شروع');
$('.start-date').val('');
middleYearIndexDateStart = 2;
selectedMonthDateStart = 2;
middleDayIndexStart = 2;
datepickerContainer.remove();
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
});
});
// Input End Date
var middleYearIndexDateEnd = 2;
var selectedMonthDateEnd = 2;
var middleDayIndexEnd = 2;
$('.persianDateInputEndDate').on('click',
function () {
$('#overlaySearchAdvance').addClass("overlaySearchAdvance");
var datepicker = $(this);
if ($(this).parent().find('.datepicker-container-date').length) {
return false;
} else {
$(this).parent().append(`
<div class="datepicker-container-date">
<div class="datepicker-container-date-div">
<div class="date-container">
<div id="yearsValue" class="years scrollable-container"></div>
<div id="monthsValue" class="months scrollable-container"></div>
<div id="daysValue" class="days scrollable-container"></div>
</div>
<div class="d-flex justify-content-around">
<button type="button" class="btn-secondary" id="cancelDateEnd" style="width:100px; font-size: 11px;">انصراف</button>
<button type="button" class="btn-primary" id="confirmDateEnd" style="width:100px; font-size: 11px;">تائید</button>
</div>
</div>
</div>
`);
if ($(this).val() != '') {
let number = selectedMonthDateEnd + 1;
var middleMonthIndex = number;
}
}
var datepickerContainer = $(this).parent().find('.datepicker-container-date');
var years = datepickerContainer.find('.years');
var months = datepickerContainer.find('.months');
var days = datepickerContainer.find('.days');
// datepickerContainer.width(datepicker.outerWidth());
// Populate years, months, and days
var middleYearIndexArray = [];
var yearlyList = [];
yearlyList.push({ year: 1368 });
yearlyList.push({ year: 1369 });
itemsYearList.forEach(function (year) {
yearlyList.push({ year: Number(year) });
});
var yearIndex = yearlyList.length;
yearIndex = yearIndex - 1;
var no3 = yearlyList[yearIndex].year + 1;
var no4 = yearlyList[yearIndex].year + 2;
yearlyList.push({ year: no3 });
yearlyList.push({ year: no4 });
var i = 0;
for (var j = yearlyList[yearIndex + 2].year; j >= 1368; j--) {
let y = { index: i, value: j };
middleYearIndexArray.push(j);
i++;
var formattedNumber = String(j).padStart(2, '0');
if (j == no3 || j == no4) {
years.append($('<span>').text('-').css('visibility', 'hidden'));
} else if (j == 1368 || j == 1369) {
years.append($('<span>').text(formattedNumber).css('visibility', 'hidden'));
} else {
years.append($('<span>').text(formattedNumber));
}
years.children('span').eq(middleYearIndexDateEnd).addClass('chosen-date');
var containerHeightYear = years.height();
var optionHeightYear = years.children('span').outerHeight();
var scrollOffsetYear = optionHeightYear * middleYearIndexDateEnd;
years.scrollTop(scrollOffsetYear - containerHeightYear / 2);
}
var monthNames = ['-', 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند', '-'];
for (var j = 0; j < 14; j++) {
var monthIndex = j;
// var monthIndex = (j * 12) % 12;
// var monthIndex = (j + i * 12) % 12;
var monthName = monthNames[j];
if (j == 0) {
months.append($('<span>').text('-').css('visibility', 'hidden'));
months.append($('<span>').text('-').css('visibility', 'hidden'));
} else if (j == 13) {
months.append($('<span>').text('-').css('visibility', 'hidden'));
months.append($('<span>').text('-').css('visibility', 'hidden'));
} else {
months.append($('<span>').text(monthName));
}
var containerHeightMonth = months.height();
var optionHeightMonth = months.children('span').outerHeight();
var scrollOffsetMonth = optionHeightMonth * middleMonthIndex;
months.scrollTop(scrollOffsetMonth - containerHeightMonth / 2);
}
for (var d = 1; d <= 31; d++) {
var formattedNumber = String(d).padStart(2, '0');
if (d == 1) {
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text(formattedNumber));
} else if (d == 31) {
days.append($('<span>').text(formattedNumber));
days.append($('<span>').text('-').css('visibility', 'hidden'));
days.append($('<span>').text('-').css('visibility', 'hidden'));
} else {
days.append($('<span>').text(formattedNumber));
}
// var middleDayIndex = Math.floor(days.children('span').length / 2) - 45;
var containerHeightDay = days.height();
var optionHeightDay = days.children('span').outerHeight();
var scrollOffsetDay = optionHeightDay * middleDayIndexEnd;
days.scrollTop(scrollOffsetDay - containerHeightDay / 2);
}
var selectedYear = yearlyList[yearIndex].year;
var selectedMonth = "01";
var selectedNumberMonth = 1;
var selectedDay = "01";
var yearsScrollTop;
var monthScrollTop;
var dayScrollTop;
var scrollTimeout;
var formattedDate;
// Scroll event listener
datepickerContainer.find('.scrollable-container').on('scroll',
function () {
var optionHeightYear = years.children('span').outerHeight();
var scrollTopYear = years.scrollTop() + (optionHeightYear * 2);
var selectedIndexYear = Math.round(scrollTopYear / optionHeightYear);
yearsScrollTop = years.scrollTop();
years.children('span').removeClass('chosen-date');
years.children('span').eq(selectedIndexYear).addClass('chosen-date');
var selectedValueYear = years.children('span').eq(selectedIndexYear).text();
var optionHeightMonth = months.children('span').outerHeight();
var scrollTopMonth = Math.round((months.scrollTop() + (optionHeightMonth * 2)) / 10) * 10;
var selectedIndexMonth = Math.round(scrollTopMonth / optionHeightMonth);
months.children('span').removeClass('chosen-date');
months.children('span').eq(selectedIndexMonth).addClass('chosen-date');
monthScrollTop = months.scrollTop();
var selectedValueMonth = months.children('span').eq(selectedIndexMonth).text();
var optionHeightDay = days.children('span').outerHeight();
var scrollTopDay = days.scrollTop() + (optionHeightDay * 2);
var selectedIndexDay = Math.round(scrollTopDay / optionHeightDay);
dayScrollTop = days.scrollTop();
days.children('span').removeClass('chosen-date');
days.children('span').eq(selectedIndexDay).addClass('chosen-date');
var selectedValueDay = days.children('span').eq(selectedIndexDay).text();
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(function () {
var scrollTopYearRounded = customRound(yearsScrollTop);
var scrollTopMonthRounded = customRound(monthScrollTop);
var scrollTopDayRounded = customRound(dayScrollTop);
if (yearsScrollTop !== scrollTopYearRounded) {
years.scrollTop(scrollTopYearRounded);
}
if (monthScrollTop !== scrollTopMonthRounded) {
months.scrollTop(scrollTopMonthRounded);
}
if (dayScrollTop !== scrollTopDayRounded) {
days.scrollTop(scrollTopDayRounded);
}
},
250);
var containerId = $(this).attr('id');
if (containerId === 'yearsValue') {
selectedYear = selectedValueYear;
index = middleYearIndexArray.indexOf(Number(selectedValueYear));
middleYearIndexDateEnd = index;
} else if (containerId === 'monthsValue') {
if (selectedValueMonth === 'فروردین') {
selectedMonth = '01';
selectedNumberMonth = 1;
} else if (selectedValueMonth === 'اردیبهشت') {
selectedMonth = '02';
selectedNumberMonth = 2;
} else if (selectedValueMonth === 'خرداد') {
selectedMonth = '03';
selectedNumberMonth = 3;
} else if (selectedValueMonth === 'تیر') {
selectedMonth = '04';
selectedNumberMonth = 4;
} else if (selectedValueMonth === 'مرداد') {
selectedMonth = '05';
selectedNumberMonth = 5;
} else if (selectedValueMonth === 'شهریور') {
selectedMonth = '06';
selectedNumberMonth = 6;
} else if (selectedValueMonth === 'مهر') {
selectedMonth = '07';
selectedNumberMonth = 7;
} else if (selectedValueMonth === 'آبان') {
selectedMonth = '08';
selectedNumberMonth = 8;
} else if (selectedValueMonth === 'آذر') {
selectedMonth = '09';
selectedNumberMonth = 9;
} else if (selectedValueMonth === 'دی') {
selectedMonth = '10';
selectedNumberMonth = 10;
} else if (selectedValueMonth === 'بهمن') {
selectedMonth = '11';
selectedNumberMonth = 11;
} else if (selectedValueMonth === 'اسفند') {
selectedMonth = '12';
selectedNumberMonth = 12;
}
} else if (containerId === 'daysValue') {
selectedDay = selectedValueDay;
middleDayIndexEnd = parseInt(selectedValueDay) + 1;
}
selectedMonthDateEnd = selectedNumberMonth;
formattedDate = selectedYear + '/' + selectedMonth + '/' + selectedDay;
datepicker.val(formattedDate);
});
$(document).on('click', '#overlaySearchAdvance', function () {
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
datepickerContainer.remove();
});
$(document).on('click', '.chosen-date', function () {
$('#end-date').text(formattedDate);
$('.end-date').val(formattedDate);
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
datepickerContainer.remove();
});
$(document).on('click', '#confirmDateEnd', function (event) {
$('#end-date').text(formattedDate);
$('.end-date').val(formattedDate);
datepickerContainer.remove();
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
});
$(document).on('click', '#cancelDateEnd', function (event) {
$('#end-date').text('تاریخ پایان');
$('.end-date').val('');
middleYearIndexDateEnd = 2;
selectedMonthDateEnd = 2;
middleDayIndexEnd = 2;
datepickerContainer.remove();
$('#overlaySearchAdvance').removeClass("overlaySearchAdvance");
});
});
//Pixel of height for Span in date
//For example: datepicker-container-date .years span
function customRound(number) {
let roundedNumber = Math.round(number);
var remainder = roundedNumber % 60; // 60px
if (remainder <= 10) {
return roundedNumber - remainder;
} else {
return roundedNumber + (60 - remainder);
}
}
}
//******************** نمایش تاریخ در موبایل ********************
function addWorkTime() {
window.location.href = `#showmodal=/Client/Company/RollCall/CaseHistory?handler=Create`;
}
$(document).on('click', '.btn-edit', function () {
var employeeId = $(this).data('edit-id');
var editDate = $(this).data('edit-date');
window.location.href = `#showmodal=/Client/Company/RollCall/CaseHistory?employeeId=${employeeId}&date=${editDate}&handler=Edit`;
})
$(document).on('click', '.btn-delete', function () {
var removeEmployeeId = $(this).data('remove-id');
var removeDate = $(this).data('remove-date');
swal({
title: "آیااز حذف کردن اطمینان دارید؟",
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true,
closeOnCancel: true
}, function (isConfirm) {
if (isConfirm) {
removeAction(removeEmployeeId, removeDate);
}
});
})
function removeAction(removeEmployeeId, removeDate) {
$.ajax({
async: false,
dataType: 'json',
type: 'POST',
url: deleteRollCallData,
headers: { "RequestVerificationToken": antiForgeryToken },
data: { employeeId: removeEmployeeId, date: removeDate },
success: function (response) {
if (response.success) {
$('.alert-success-msg').show();
$('.alert-success-msg p').text(response.message);
hasData = true;
dateIndex = 0;
dateEmployeeIndex = null;
$('#caseHistoryLoadData').html('');
caseHistoryLoadAjax();
loadUntilHeightExceeds();
setTimeout(function () {
$('.alert-success-msg').hide();
$('.alert-success-msg p').text('');
}, 2000);
} else {
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
},
error: function (err) {
console.log(err);
}
});
}
function loadEmployeeRollCallTimeSpanForDuration() {
if ($('#StartDate').val().trim() !== '' && $('#StartDate').val().length === 10) {
if ($('#EndDate').is(":visible")) {
if ($('#EndDate').val().trim() !== '' && $('#EndDate').val().length === 10) {
filterEmployeeId = $('#employeeSelect').val();
if (filterEmployeeId !== "0") {
var data = {
"employeeId": Number(filterEmployeeId),
"start": $('#StartDate').val(),
"end": $('#EndDate').val()
}
$.ajax({
async: false,
contentType: 'charset=utf-8',
dataType: 'json',
type: 'GET',
url: loadEmployeeRollCallTimeSpanUrl,
data: data,
headers: { "RequestVerificationToken": antiForgeryToken },
success: function (response) {
if (response.success) {
$('#sumTimeWork').text('مجموع ساعت کارکرد ' + response.data);
}
},
failure: function (response) {
console.log(response);
hasData = false;
}
});
}
}
}
}
}
//$(document).on('click', ".openActionMain", function () {
// $('.toggleRollCall').not($(this).find('.toggleRollCall')).removeClass('open');
// $(".operations-btns-main")
// .not($(this).next(".operations-btns-main"))
// .slideUp(500);
// $(this).next(".operations-btns-main").slideToggle(500);
// $(this).find('.toggleRollCall').toggleClass('open');
//});
$(document).on('click', ".openAction", function () {
if (window.matchMedia('(max-width: 768px)').matches) {
$(this).next().find(".operations-btns").slideToggle(500);
$(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500);
}
});