501 lines
17 KiB
Plaintext
501 lines
17 KiB
Plaintext
@model CompanyManagment.App.Contracts.Leave.CreateLeave
|
||
@{
|
||
|
||
int i = 1;
|
||
|
||
|
||
}
|
||
@{
|
||
<style>
|
||
#paidLeave .panel-title {
|
||
font-size: 14px;
|
||
margin-bottom: 0;
|
||
margin-top: 0;
|
||
padding: 5px 7px 5px 7px;
|
||
}
|
||
|
||
.modal-body {
|
||
top: 2.5rem;
|
||
}
|
||
|
||
.modal-dialog {
|
||
width: 30%;
|
||
margin: 30px auto;
|
||
}
|
||
|
||
.modal .modal-dialog .modal-content {
|
||
min-height: auto;
|
||
height: auto !important;
|
||
}
|
||
|
||
.modal-footer {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
}
|
||
|
||
.modal-footer .btn + .btn {
|
||
margin-bottom: 0;
|
||
margin-right: 5px;
|
||
}
|
||
|
||
|
||
@@media (max-width: 1580px) {
|
||
.modal-dialog {
|
||
width: 50%;
|
||
}
|
||
}
|
||
|
||
@@media (max-width: 768px) {
|
||
.modal-dialog {
|
||
width: 90%;
|
||
}
|
||
}
|
||
|
||
#paidLeave .panel-heading {
|
||
border-radius: 17px;
|
||
border-bottom-right-radius: 0;
|
||
border-bottom-left-radius: 0;
|
||
border: none !important;
|
||
padding: 0px 20px;
|
||
background-color: #505050 !important;
|
||
color: #ffffff;
|
||
}
|
||
|
||
#paidLeave .form-control {
|
||
border: 1px solid #ababab;
|
||
}
|
||
|
||
#paidLeave .panel .panel-body {
|
||
padding: 0;
|
||
padding-bottom: 20px;
|
||
}
|
||
|
||
.modal-content .panel {
|
||
border-radius: 17px;
|
||
}
|
||
</style>
|
||
<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css" />
|
||
}
|
||
<div class="container" id="paidLeave">
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||
|
||
<form asp-page="./Index" asp-page-handler="CreatePaidLeave" autocomplete="off"
|
||
method="post"
|
||
data-ajax="true"
|
||
data-callback=""
|
||
data-action="ReloadPaidLeave">
|
||
<div class="modal-body">
|
||
<div class="row">
|
||
|
||
<fieldset style="border: 1px solid #999797; border-radius: 10px; padding: revert">
|
||
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 150px; text-align: center;"> مرخصی استحقاقی </legend>
|
||
<div class="row">
|
||
<div class="col-md-12">
|
||
|
||
<fieldset style="border: 1px solid #c3c3c3; background-color: #ddd; border-radius: 10px; padding: 5px 0 5px 0; margin-bottom: 10px; ">
|
||
<div class="flexible-div">
|
||
<div class="col-md-4" style="margin-top: 3px">
|
||
نوع مرخصی <span style="color: red">*</span>
|
||
</div>
|
||
<div class="col-md-4">
|
||
روزانه <input type="radio" checked="checked" value="روزانه" asp-for="PaidLeaveType">
|
||
|
||
</div>
|
||
<div class="col-md-4">
|
||
ساعتی <input type="radio" value="ساعتی" asp-for="PaidLeaveType">
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<span asp-validation-for="PaidLeaveType" class="error"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row m-t-10 flexible-div">
|
||
<div class="col-md-5">
|
||
<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" onchange="validDate(this);" asp-for="StartLeave" />
|
||
|
||
<span asp-validation-for="StartLeave" class="error"></span>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="col-md-5">
|
||
<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" onchange="validDate(this);" asp-for="EndLeave" />
|
||
|
||
<span asp-validation-for="EndLeave" class="error"></span>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="col-md-2">
|
||
<div class="m-b-0" dir="rtl">
|
||
<label asp-for="LeaveHourses" class="control-label m-r-5">ساعت</label>
|
||
<input id="hours" dir="ltr" maxlength="2" style="text-align: center" class="form-control" asp-for="LeaveHourses" />
|
||
|
||
<span asp-validation-for="LeaveHourses" class="error"></span>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div class="row">
|
||
<div class="m-t-10">
|
||
<div class="panel panel-default">
|
||
<div class="panel-heading">
|
||
<h3 class="panel-title"><i class="fa fa-list" style="padding-left: 3px; font-size: 14px"></i> سوابق مرخصی استحقاقی </h3>
|
||
</div>
|
||
<div class="panel-body">
|
||
<div class="row">
|
||
<div id="data-PaidLeave" class="col-sm-12 col-sm-12 col-xs-12">
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<input type="hidden" asp-for="EmployeeId" />
|
||
@*<input type="hidden" asp-for="WorkshopId" />*@
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default btn-rounded waves-effect waves-light" data-dismiss="modal">بستن</button>
|
||
<button type="submit" class="btn btn-success btn-rounded waves-effect waves-light" style="background: #0f9500;border: #0f9500;">ذخیره</button>
|
||
</div>
|
||
</form>
|
||
<form asp-page="./Index" asp-page-handler="RemovePaidLeave" autocomplete="off" id="sub"
|
||
method="post"
|
||
data-ajax="true"
|
||
data-callback=""
|
||
data-action="ReloadPaidLeave">
|
||
<div style="display: none">
|
||
<input type="hidden" id="LeftId" name="id" />
|
||
<input type="hidden" asp-for="EmployeeId" />
|
||
@*<input type="hidden" asp-for="WorkshopId" />*@
|
||
@*<input type="hidden" asp-for="id" value="id"/>*@
|
||
<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>
|
||
</div>
|
||
|
||
<script src="~/adminTheme/assets/datatables/jquery.dataTables.min.js"></script>
|
||
<script src="~/adminTheme/assets/datatables/dataTables.bootstrap.js"></script>
|
||
<script>
|
||
$(document).ready(function () {
|
||
reloadPaidLeaveList();
|
||
});
|
||
|
||
|
||
function reloadPaidLeaveList(){
|
||
|
||
$("#data-PaidLeave").html('');
|
||
$("#data-PaidLeave").html('<div class="ring"> منتظر بمانید<span></span></div>');
|
||
$.ajax({
|
||
url: '@Url.Page("/Company/Employees/Index", "PaidLeave")',
|
||
data:{"employeeId":@Model.EmployeeId,"workshopId_":@Model.WorkshopId },
|
||
type: "Get",
|
||
dataType: 'html',
|
||
success: function(data) {
|
||
$('#data-PaidLeave').html(data);
|
||
}
|
||
});
|
||
}
|
||
|
||
$("#hours").attr("disabled", "disabled");
|
||
$('input:radio[name="PaidLeaveType"]').change(
|
||
function () {
|
||
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
|
||
|
||
$("#hours").val('');
|
||
$("#hours").attr("disabled", "disabled");
|
||
$("#endLeave").removeAttr("disabled");
|
||
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
|
||
|
||
$("#endLeave").val('');
|
||
$("#endLeave").attr("disabled", "disabled");
|
||
$("#hours").removeAttr("disabled");
|
||
}
|
||
});
|
||
</script>
|
||
<script>
|
||
$('.RemoveLeftWork').on("click",
|
||
function () {
|
||
var id = $(this).closest("div").find("input[name='LeftworkId']").val();
|
||
$('#LeftId').val(id);
|
||
swal({
|
||
title: "آیا حذف این سابقه مرخصی اطمینان دارید؟",
|
||
text: "",
|
||
type: "warning",
|
||
showCancelButton: true,
|
||
confirmButtonColor: "#DD6B55",
|
||
confirmButtonText: "بله",
|
||
cancelButtonText: "خیر",
|
||
closeOnConfirm: true,
|
||
closeOnCancel: true
|
||
}, function (isConfirm) {
|
||
if (isConfirm) {
|
||
|
||
$('#sendFinaly').click();
|
||
}
|
||
});
|
||
});
|
||
|
||
</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> |