Files
Backend-Api/ServiceHost/Areas/Client/Pages/Company/Employees/SickLeave.cshtml
2024-08-24 19:13:34 +03:30

473 lines
18 KiB
Plaintext
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.
@model CompanyManagment.App.Contracts.Leave.CreateLeave
@{
int i = 1;
}
@{
<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css" />
}
<link href="@Href("~/Clienttheme/css/sickLeave.css")" rel="stylesheet" />
<div class="container" id="sickLeave">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<form id="CreateForm" asp-page="./Index" asp-page-handler="CreateSickLeave" autocomplete="off" class="sickLeave"
method="post"
data-ajax="true"
data-callback=""
data-action="ReloadSickLeaveForClient">
<div class="modal-body">
<div class="row">
<fieldset style="border: 1px solid #999797; border-radius: 17px; padding: revert">
<legend style="margin-bottom: 5px; font-size: 16px; color: #505458; width: 150px; text-align: center;"> مرخصی استعلاجی </legend>
<div class="row m-t-10 m-b-10 d-flex">
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="m-b-0" dir="rtl">
<label asp-for="StartLeave" class="control-label m-r-5">تاریخ شروع مرخصی</label>
<input id="startLeave" dir="ltr" maxlength="10" style="text-align: center" class="form-control persianDateInput" asp-for="StartLeave" />
<span asp-validation-for="StartLeave" class="error"></span>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="m-b-0" dir="rtl">
<label asp-for="EndLeave" class="control-label m-r-5">تاریخ پایان مرخصی</label>
<input id="endLeave" dir="ltr" maxlength="10" style="text-align: center" class="form-control persianDateInput" asp-for="EndLeave" />
<span asp-validation-for="EndLeave" class="error"></span>
</div>
</div>
</div>
</fieldset>
</div>
<div id="data-SickLeave" class="row" style="margin-top: 20px;">
</div>
</div>
<input type="hidden" asp-for="EmployeeId" />
@*<input type="hidden" asp-for="WorkshopId" />*@
<div class="modal-footer">
<a class="btn btn-default btn-rounded waves-effect waves-light" data-dismiss="modal" id="close">بستن</a>
<a onclick="createSickLeave()" class="btn btn-success btn-rounded waves-effect waves-light" style="background: #0f9500;border: #0f9500;">ذخیره</a>
</div>
</form>
<form id="RemoveForm" asp-page="./Index" asp-page-handler="RemoveSickLeave" autocomplete="off"
method="post"
data-ajax="true"
data-callback="">
<div style="display: none">
<input type="hidden" id="LeftId" name="id" />
<input type="hidden" asp-for="EmployeeId" />
<div class="modal-footer" style="margin-bottom: 10px">
@*<input type="submit" id="sendFinaly" form="sub" value="fine" name="fine" style="display: none" />*@
</div>
</div>
</form>
@* <form id="SickListForm" asp-page="./Index" autocomplete="off"
method="get"
data-ajax="true"
data-ajax-method="get"
data-ajax-url="@Url.Page("./Index","SickList")" >
<div style="display: none">
<input type="hidden" asp-for="EmployeeId" />
<input type="hidden" asp-for="WorkshopId" />
</div>
</form>*@
</div>
<script src="~/adminTheme/assets/datatables/jquery.dataTables.min.js"></script>
<script src="~/adminTheme/assets/datatables/dataTables.bootstrap.js"></script>
<script>
$(document).ready(function () {
reloadSickLeaveList();
});
$(document).on("click", function (event) {
var target = $(event.target);
if (!target.is("#sickLeave")
&& !target.is("#sickLeave *")
) {
$(".datepicker-container").hide();
}
});
$("#close , .close").on('click', function () {
$(".datepicker-container").hide();
});
function reloadSickLeaveList(){
$("#data-SickLeave").html('');
$("#data-SickLeave").html('<div class="ring"> منتظر بمانید<span></span></div>');
$.ajax({
url: '@Url.Page("/Company/Employees/Index", "SickList")',
data:{"employeeId":@Model.EmployeeId,"workshopId_":@Model.WorkshopId },
type: "Get",
dataType: 'html',
success: function(data) {
$('#data-SickLeave').html(data);
}
});
}
function convertDate(dateVal) {
let dateParts = dateVal.split("/");
var formattedDateString = dateParts[0] + "-" + dateParts[1] + "-" + dateParts[2];
var value = new Date(formattedDateString);
return value;
}
function createSickLeave(){
$("#CreateForm").find('.persianDateInput').each(function () {
if ($(this).val() === '') {
$(this).addClass('errored');
} else {
$(this).removeClass('errored');
}
})
let table = $("#CreateForm").find('#datatable');
table.find("tbody tr").each(function () {
let row = $(this);
let rowStartDate = row.find('td:eq(1)').text();
let rowEndDate = row.find('td:eq(2)').text();
let date1 = $('#startLeave').val();
let date2 = $('#endLeave').val();
let rowStartDateVal = convertDate(rowStartDate);
let rowEndDateVal = convertDate(rowEndDate);
let date1Val = convertDate(date1);
let date2Val = convertDate(date2);
const $existingDate1 = row.find('td:eq(1):contains("' + date1 + '")');
if (date1Val != '' && $existingDate1.length > 0) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ شروع در ردیف ' + row.find('td:eq(0)').text() + ' وارد شده است.');
$('#startLeave').addClass("errored");
return;
}
const $existingDate2 = row.find('td:eq(2):contains("' + date2 + '")');
if ($existingDate2.length > 0) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ پایان در ردیف ' + row.find('td:eq(0)').text() + ' وارد شده است.');
$('#endLeave').addClass("errored");
return;
}
const $existingDate3 = row.find('td:eq(2):contains("' + date1 + '")');
if ($existingDate3.length > 0) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ شروع با تاریخ پایان در ردیف ' + row.find('td:eq(0)').text() + ' برابر است.');
$('#endDate1').addClass("errored");
return;
}
const $existingDate4 = row.find('td:eq(1):contains("' + date2 + '")');
if ($existingDate4.length > 0) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ پایان با تاریخ شروع در ردیف ' + row.find('td:eq(0)').text() + ' برابر است.');
$('#endLeave').addClass("errored");
return;
}
if (date1Val < rowStartDateVal && rowStartDateVal < date2Val && date1Val < rowEndDateVal && rowEndDateVal < date2Val) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ با توجه به بازه وارد شده در ردیف ' + row.find('td:eq(0)').text() + ' نادرست می باشد.');
$('#endLeave').addClass("errored");
$('#startLeave').addClass("errored");
return false;
}
if (date1Val > rowStartDateVal && date1Val < rowEndDateVal && date2Val > rowStartDateVal && date2Val < rowEndDateVal) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ با توجه به بازه وارد شده در ردیف ' + row.find('td:eq(0)').text() + ' نادرست می باشد.');
$('#endLeave').addClass("errored");
$('#startLeave').addClass("errored");
return false;
}
if (date1Val < rowStartDateVal && date2Val > rowStartDateVal && date2Val < rowEndDateVal) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ با توجه به بازه وارد شده در ردیف ' + row.find('td:eq(0)').text() + ' نادرست می باشد.');
$('#endLeave').addClass("errored");
$('#startLeave').addClass("errored");
return false;
}
if (date1Val > rowStartDateVal && date1Val < rowEndDateVal && date2Val > rowEndDateVal) {
$.Notification.autoHideNotify('error', 'top right', 'پیام سیستم ', 'تاریخ با توجه به بازه وارد شده در ردیف ' + row.find('td:eq(0)').text() + ' نادرست می باشد.');
$('#endLeave').addClass("errored");
$('#startLeave').addClass("errored");
return false;
}
});
if ($('#CreateForm .errored').length == 0)
{
$("#CreateForm").submit();
}
}
$('#CreateForm').submit(function(e){
e.preventDefault();
e.stopImmediatePropagation();
$.ajax({
type: "POST",
url: $(this).attr( 'action' ),
data: $(this).serialize(),
success: function (response) {
if (response.isSuccedded == true) {
$.Notification.autoHideNotify('success', 'top right', response.message);
reloadSickLeaveList();
}
else{
$.Notification.autoHideNotify('error', 'top right', response.message);
}
}
});
return false;
});
</script>
<script>
$(".persianDateInput").on('keyup', function () {
if (event.which !== 8 && event.which !== 46) {
let value = $(this).val();
let lengthValue = value.length;
if (lengthValue === 4) {
value += '/'
}
if (lengthValue === 7) {
value += '/'
}
$(this).val(value);
}
});
$(".persianDateInput").on('blur', function () {
let value = $(this).val();
let lengthValue = value.length;
if (!dateValidCheck(this)) {
$(this).addClass("errored");
}
else {
$(this).removeClass("errored");
}
});
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 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.addClass("errored");
inputField1.style.boxShadow = 'none';
inputField1.style.border = '1px solid #c7c7c7';
start1valid = true;
} else {
if (inputField1.value != "") {
//inputField1.addClass("errored");
inputField1.style.boxShadow = 'inset 0 0 2px #eb3434, 0 0 5px #eb3434';
inputField1.style.border = '1px solid #eb3434';
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
start1valid = false;
}
}
return start1valid;
}
</script>