RotatingShiftReport BackEnd Changed

This commit is contained in:
SamSys
2025-05-14 18:53:34 +03:30
30 changed files with 4347 additions and 10464 deletions

View File

@@ -32,6 +32,15 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
DateTime checkoutEnd);
/// <summary>
/// گزارش نوبت کاری حضور غیاب
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="contractStart"></param>
/// <param name="contractEnd"></param>
/// <param name="shiftwork"></param>
/// <returns></returns>
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
DateTime contractEnd, string shiftwork);
DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking);
}

View File

@@ -20,5 +20,5 @@ public interface IRollCallMandatoryApplication
/// <param name="shiftwork"></param>
/// <returns></returns>
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
DateTime contractEnd, string shiftwork);
DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking);
}

View File

@@ -27,8 +27,8 @@ public class RollCallMandatoryApplication : IRollCallMandatoryApplication
}
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd,
string shiftwork)
string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking)
{
return await _rollCallMandatoryRepository.RotatingShiftReport(workshopId, employeeId, contractStart, contractEnd, shiftwork);
return await _rollCallMandatoryRepository.RotatingShiftReport(workshopId, employeeId, contractStart, contractEnd, shiftwork,hasRollCall, command, holidayWorking);
}
}

View File

@@ -89,6 +89,8 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
}
int TotalDaysNoFriday = TotalContractDays - fridays;
int mandatorDays = TotalContractDays - (fridays + holiday);
if (command.ShiftWork != "4" && isStaticCheckout)
mandatorDays = TotalDaysNoFriday;
//if (holidayWorking)
// mandatorDays = TotalContractDays - fridays;
//***********************************//
@@ -721,32 +723,55 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
return res;
}
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, string shiftwork)
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking)
{
List<RollCallViewModel> rollCallResult = await _context.RollCalls.Where(x =>
x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date &&
x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel()
List<RollCallViewModel> rollCallResult = new List<RollCallViewModel>();
List<GroupedRollCalls> groupedRollCall = new List<GroupedRollCalls>();
if (hasRollCall)
{
rollCallResult = await _context.RollCalls.Where(x =>
x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date &&
x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel()
{
StartDate = x.StartDate,
EndDate = x.EndDate,
ShiftSpan = (x.EndDate.Value - x.StartDate.Value),
CreationDate = x.ShiftDate,
}).ToListAsync();
List<GroupedRollCalls> groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls()
groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls()
{
CreationDate = x.Key,
ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(),
HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)),
}).OrderBy(x => x.CreationDate).ToList();
}
else
{
CreationDate = x.Key,
ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(),
HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)),
command.WorkshopId = workshopId;
command.EmployeeId = employeeId;
command.ContractStartGr = contractStart;
command.ContractEndGr = contractEnd;
rollCallResult = ConvertStaticHoursToRollCall(command, holidayWorking);
groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => new GroupedRollCalls()
{
CreationDate = x.Key,
ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(),
HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)),
SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))
}).OrderBy(x => x.CreationDate).ToList();
}
}).OrderBy(x => x.CreationDate).ToList();
//****** نوبت کاری و شب کاری ****
#region RotatingShiftCheckAndNightWorkOver22
//****** نوبت کاری و شب کاری ****
#region RotatingShiftCheckAndNightWorkOver22
string shiftPayValue = "0";
string shiftPayValue = "0";
List<RotatingShiftViewModel> rotatingResultList = RotatingShiftCheck(groupedRollCall);
int moriningCount = 0;
int eveningCount = 0;
@@ -857,6 +882,10 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
#endregion
}
//public static TimeSpan CalculateBreakTime(BreakTime breakTime, TimeSpan sumOneDaySpan)
//{
// if (breakTime.BreakTimeType != BreakTimeType.WithTime)
@@ -1530,6 +1559,9 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
end = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, end.Hour, end.Minute, 0);
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
if ((command.ShiftWork is "6" or "8") && start == end)
end = end.AddDays(1);
}
var startComplex = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute,

View File

@@ -125,8 +125,8 @@ public class SalaryAidRepository : RepositoryBase<long, SalaryAid>, ISalaryAidRe
EmployeeId = x.EmployeeId,
CreationDate = x.CreationDate.ToFarsi(),
Id = x.id,
MonthFa = pc.GetMonth(x.SalaryAidDateTime).ToFarsiMonthByIntNumber(),
YearFa = pc.GetYear(x.SalaryAidDateTime).ToString(),
MonthFa = pc.GetMonth(x.CalculationDate).ToFarsiMonthByIntNumber(),
YearFa = pc.GetYear(x.CalculationDate).ToString(),
PersonnelCode = personnelCodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId).PersonnelCode.ToString(),
SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(),
SalaryAidDateTimeGe = x.SalaryAidDateTime,

View File

@@ -124,6 +124,9 @@ public class YearlySalaryRepository : RepositoryBase<long, YearlySalary>, IYearl
////اگر حضورغیاب داشت
//if (hasRollCall)
var MandatoryDays = TotalDays - fridayStartToEnd - officialholiday;
if (!hasRollCall && weeklyWorkingTime !="4")
MandatoryDays = TotalDays - fridayStartToEnd;
//بدست آوردن ساعت موظفی این ماه
var TotalMandatoryHours = MandatoryDays * 7.33;//ساعت موظفی این ماه

View File

@@ -160,7 +160,7 @@ public class IndexModel : PageModel
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId);
if (checkout.HasRollCall)
{
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId,checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId,checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork,true,workingHours,false);
result.HasRollCall = true;
}
else
@@ -181,9 +181,10 @@ public class IndexModel : PageModel
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
//result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking);
}
@@ -201,7 +202,7 @@ public class IndexModel : PageModel
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId);
if (checkout.HasRollCall)
{
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false);
result.HasRollCall = true;
}
else
@@ -222,7 +223,8 @@ public class IndexModel : PageModel
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
//result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking);

View File

@@ -22,11 +22,11 @@
}
.modal-body2 {
background-color: #f2fbfb;
width: 100%;
height: 674px;
border-radius: 25px;
position: absolute;
background-color: #f2fbfb;
width: 100%;
height: 720px;
border-radius: 25px;
position: absolute;
}
.rotateHead {
@@ -168,7 +168,7 @@
</div>
</div>
<div class="row">
<div class="row" style="margin-top: 50px;">
<div class="col-md-9"></div>
<div class="modal2-btns col-md-3">
<a type="button" id="closeRotate" class="btn pull-left m-l-10" style="background-color: #e7f2f3;border-radius: 15px;box-shadow: 1px 1px 5px 2px rgb(0 0 0 / 19%);" data-dismiss="modal" data-parent-modal="#edit-modal">بستن</a>

View File

@@ -507,6 +507,14 @@
بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.
</p>
</div>
break;
case 683 or 687:
<div class="row m-t-5" style="padding: 0px 24px 10px">
<p style="text-align: justify;">
در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید
</div>
break;
default:

File diff suppressed because it is too large Load Diff

View File

@@ -450,6 +450,14 @@
</div>
break;
case 683 or 687:
<div class="row m-t-5" style="padding: 0px 24px 10px">
<p style="text-align: justify;">
در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید
</div>
break;
default:
<textarea class="form-control"></textarea>
break;

File diff suppressed because it is too large Load Diff

View File

@@ -1,148 +0,0 @@
@model CompanyManagment.App.Contracts.LeftWork.EditLeftWork
@{
}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<form asp-page="./Index" asp-page-handler="EditLeftWork" autocomplete="off"
method="post"
data-ajax="true"
data-callback=""
data-action="ReloadLeftWork">
<div class="modal-body">
<div class="row">
<fieldset style="border: 1px solid #999797; height: 120px; border-radius: 10px; padding: revert">
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 140px;text-align: center;">ویرایش </legend>
<div class="row">
<div class="col-md-6">
<div class="form-group m-b-0" dir="rtl">
<label asp-for="StartWorkDate" class="control-label m-r-5">تاریخ شروع به کار</label>
<input id="endDate" dir="ltr" maxlength="10" style="text-align: center" class="form-control persianDateInputb" onchange="validDate(this);" asp-for="StartWorkDate"/>
<span asp-validation-for="StartWorkDate" class="error"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group m-b-0" dir="rtl">
<label asp-for="LeftWorkDate" class="control-label m-r-5">تاریخ ترک کار</label>
<input id="endDate" dir="ltr" maxlength="10" style="text-align: center" class="form-control persianDateInputb" onchange="validDate(this);" asp-for="LeftWorkDate"/>
<span asp-validation-for="LeftWorkDate" class="error"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" asp-for="Id" value="@Model.Id"/>
<input type="hidden" asp-for="EmployeeId"/>
<input type="hidden" asp-for="WorkshopId"/>
<input type="hidden" asp-for="WorkshopName"/>
<input type="hidden" asp-for="EmployeeFullName"/>
<div class="modal-footer">
<button type="submit" class="btn btn-success btn-rounded waves-effect waves-light">ذخیره</button>
<a href="#showmodal=@Url.Page("/Company/Contracts/Index", "CreateLeftWork", new { employeeId = Model.EmployeeId, workshopId = Model.WorkshopId, hd = 1 })" class="btn btn-default btn-rounded waves-effect waves-light m-b-5"> بازگشت</a>
</div>
</form>
</div>
<script>
function validDate(inputField) {
var 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 (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = inputField.value;
var m1, m2;
var y1, y2, y3, y4;
var d1, d2;
var 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]);
}
}
var yRes = y1 + y2 + y3 + y4;
var year = parseInt(yRes);
var mRes = m1 + m2;
var month = parseInt(mRes);
var dRes = d1 + d2;
var day = parseInt(dRes);
var FixResult = yRes + s1 + mRes + s2 + dRes;
var 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) {
inputField.style.backgroundColor = '#a6e9a6';
$("button[type=submit]").attr('disabled', false);
validCheck = true;
} else {
inputField.style.backgroundColor = '#f94c4c';
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
$("button[type=submit]").attr('disabled', true);
validCheck = false;
}
return validCheck;
}
</script>

View File

@@ -1,6 +1,7 @@
@model CompanyManagment.App.Contracts.Leave.EditLeave
@{
//int i = 1;
string adminVersion = _0_Framework.Application.Version.AdminVersion;
}
@{
<style>
@@ -226,409 +227,12 @@
background-color: #ffb9b9 !important;
}
</style>
<script>
$(document).ready(function() {
const 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);
}
});
$(document).ready(
function() {
computeHourse();
const saati = $('input:radio[class="saati"]');
const roozane = $('input:radio[class="roozane"]');
if ($(roozane).is(':checked') && $(roozane).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$("#saati").css("visibility", "hidden");
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
} else if ($(saati).is(':checked') && $(saati).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$('.hourses').css({
display: "flex"
});
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('#roozaneh').hide();
$('.sumDaysDiv').hide();
}
});
var computeLeavHourseAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavHourse")';
var computeLeavDaysAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")';
var checkIfValidToEditAjaxUrl = '@Url.Page("/Company/Contracts/Index", "CheckIfValidToEdit")';
</script>
<script>
computeDays();
<script src="~/AssetsAdmin/page/Contracts/js/editPaidLeave.js?ver=@adminVersion"></script>
$('#save').on('click',
function() {
$("#descriptionAcceptedCheck").on("change",
function() {
$('#descriptionAcceptedCheck').removeClass('errored');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1 && $('.invalidTime').length < 1) {
$('#editFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
/////////////////Time Input Validatet/////////////////
$('#StartHoure').on("keyup",
function() {
const 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('invalidTime') && $('#EndHours').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
$('#EndHours').on("keyup",
function() {
const 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 (!$('#StartHoure').hasClass('invalidTime') && $('#StartHoure').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
function computeHourse() {
$('.res').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Contracts/Index", "ComputeLeavHourse")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startHours": $('#StartHoure').val(), "endHourse": $('#EndHours').val() },
success: function(response) {
const res = ` <span class="res"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></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: '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
</script>
<script>
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});
</script>

View File

@@ -1,6 +1,7 @@
@model CompanyManagment.App.Contracts.Leave.EditLeave
@{
string adminVersion = _0_Framework.Application.Version.AdminVersion;
<style>
.panel-title {
font-size: 14px;
@@ -169,344 +170,8 @@
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
<script>
$(document).ready(function() {
const 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');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#editFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
var computeLeavDaysAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")';
</script>
<script>
$(document).ready(function() {
computeDays();
const saati = $('input:radio[class="saati"]');
const roozane = $('input:radio[class="roozane"]');
if ($(roozane).is(':checked') && $(roozane).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$("#saati").css("visibility", "hidden");
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
}
});
function computeDays() {
$('.resultDays').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});
</script>
<script src="~/AssetsAdmin/page/Contracts/js/editSickLeave.js?ver=@adminVersion"></script>

View File

@@ -1,150 +0,0 @@
@model CompanyManagment.App.Contracts.LeftWork.EditLeftWork
@{
}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<form asp-page="./Index" asp-page-handler="EditLeftWork" autocomplete="off"
method="post"
data-ajax="true"
data-callback=""
data-action="ReloadLeftWork">
<div class="modal-body">
<div class="row">
<fieldset style="border: 1px solid #999797; height: 120px; border-radius: 10px; padding: revert">
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 140px;text-align: center;">ویرایش </legend>
<div class="row">
<div class="col-md-12">
<div class="form-group m-b-0" dir="rtl">
<label asp-for="LeftWorkDate" class="control-label m-r-5">تاریخ ترک کار</label>
<input id="endDate" dir="ltr" maxlength="10" style="text-align: center" class="form-control persianDateInputb" onchange="validDate(this);" asp-for="LeftWorkDate"/>
<span asp-validation-for="LeftWorkDate" class="error"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" asp-for="Id" value="@Model.Id"/>
<input type="hidden" asp-for="EmployeeId"/>
<input type="hidden" asp-for="WorkshopId"/>
<input type="hidden" asp-for="StartWorkDate"/>
<input type="hidden" asp-for="WorkshopName"/>
<input type="hidden" asp-for="EmployeeFullName"/>
<div class="modal-footer">
<button type="submit" class="btn btn-success btn-rounded waves-effect waves-light">ذخیره</button>
<a href="#showmodal=@Url.Page("/Company/Contracts/Index", "CreateLeftWork", new { employeeId = Model.EmployeeId })" class="btn btn-default btn-rounded waves-effect waves-light m-b-5"> بازگشت</a>
</div>
</form>
</div>
<script>
function validDate(inputField) {
var 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 (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = inputField.value;
var m1, m2;
var y1, y2, y3, y4;
var d1, d2;
var 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]);
}
}
var yRes = y1 + y2 + y3 + y4;
var year = parseInt(yRes);
var mRes = m1 + m2;
var month = parseInt(mRes);
var dRes = d1 + d2;
var day = parseInt(dRes);
var FixResult = yRes + s1 + mRes + s2 + dRes;
var 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) {
inputField.style.backgroundColor = '#a6e9a6';
$("button[type=submit]").attr('disabled', false);
validCheck = true;
} else {
inputField.style.backgroundColor = '#f94c4c';
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
$("button[type=submit]").attr('disabled', true);
validCheck = false;
}
return validCheck;
}
</script>
<script>
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,388 +0,0 @@
@model CompanyManagment.App.Contracts.LeftWork.CreateLeftWork
@{
var i = 1;
}
@{
<style>
.panel-title {
font-size: 14px;
text-transform: uppercase;
margin-bottom: 0;
margin-top: 0;
padding: 5px 7px 5px 7px;
}
.rad {
border-radius: 8px !important;
/* padding: 10px; */
padding: 2px 5px 0px 5px;
}
.faSize {
font-size: 22px !important;
}
</style>
<link href="~/AdminTheme/assets/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css"/>
}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<form asp-page="./Index" asp-page-handler="CreateLetWork" autocomplete="off"
method="post"
data-ajax="true"
data-callback=""
data-action="ReloadLeftWork">
<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: 14px; border-bottom: 0px; color: #505458; width: 145px; text-align: center;"> شروع به کار / ترک کار </legend>
<div class="row">
<div class="form-group col-md-12" dir="rtl" style="padding-left: 2.5%">
<label class="sr-only" asp-for="WorkshopId"></label>
<select class="form-control select-city" asp-for="WorkshopId" asp-items='new SelectList(Model.Workshops, "Id", "WorkshopFullName")'>
<option value="">انتخاب کارگاه</option>
</select>
<span asp-validation-for="WorkshopId" class="error"></span>
</div>
<div class="col-md-12">
<div class="form-group m-b-0" dir="rtl">
<input id="endDate" dir="ltr" maxlength="10" style="text-align: center" placeholder="تاریخ شروع به کار" class="form-control persianDateInputb" onchange="validDate(this);" asp-for="StartWorkDate"/>
<span asp-validation-for="StartWorkDate" class="error"></span>
</div>
</div>
</div>
</fieldset>
</div>
<div class="row">
<div class="m-t-10">
<div class="panel panel-default" style="margin-bottom: 0px">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-list" style="padding-left: 3px; font-size: 14px"></i> سوابق شروع بکار و ترک کار(@Model.EmployeeFullName) </h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-12 col-sm-12 col-xs-12">
<table id="datatable" class="table table-striped table-bordered">
<thead>
<tr>
<th style="font-size: 12px !important;text-align: center">#</th>
<th style="font-size: 12px !important; text-align: center"> نام کارگاه</th>
<th style="font-size: 12px !important; text-align: center"> تاریخ شروع</th>
<th style="font-size: 12px !important; text-align: center"> تاریخ ترک کار </th>
<th style="font-size: 12px !important; width: 10%; text-align: center">عملیات</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.LeftWorkSearch)
{
<tr>
<td style="font-size: 12px !important; text-align: center">@i </td>
<td style="font-size: 12px !important; text-align: center">@item.WorkshopName </td>
<td style="font-size: 12px !important; text-align: center">@item.StartWorkDate </td>
@if (item.LeftWorkDate == "1500/01/01")
{
<td style="text-align: center">
<a class="btn btn-block btn-success pull-right m-rl-5 rad" style="max-width: -webkit-fill-available; padding: 3px"
href="#showmodal=@Url.Page("/Company/Contracts/Index", "EnterLeftWork", new { item.Id, employeeName = Model.EmployeeFullName })">
<span style="font-size: 16px !important"> <i class="fa fa-sign-out"></i> ثبت ترک کار </span>
</a>
</td>
}
else
{
<td style="font-family: 'IranText' !important; font-size: 12px !important; text-align: center">
@item.LeftWorkDate
</td>
}
@{
i++;
}
<td>
@*<a class="btn btn-warning pull-right m-rl-5 rad"
href="#showmodal=@Url.Page("/Company/Contracts/Index", "EditLeftWork", new { Id = item.Id })">
<i class="fa faSize fa-edit"></i>
</a>*@
<a href="#" class="btn btn-danger pull-right m-rl-5 fff rad RemoveLeftWork">
<i class="fa faSize fa-trash"></i>
</a>
<div style="display: none">
<input type="hidden" name="LeftworkId" value="@item.Id"/>
</div>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" asp-for="EmployeeId"/>
<input type="hidden" id="emp" asp-for="EmployeeFullName"/>
<div class="modal-footer">
<button type="submit" class="btn btn-success btn-rounded waves-effect waves-light">ذخیره</button>
<button type="button" class="btn btn-default btn-rounded waves-effect waves-light m-b-5" data-dismiss="modal">بستن</button>
</div>
</form>
<form asp-page="./Index" asp-page-handler="RemoveLeftWork" autocomplete="off" id="sub"
method="post"
data-ajax="true"
data-callback=""
data-action="DeletLeftWork">
<div style="display: none">
<input type="hidden" id="LeftId" name="id"/>
<input type="hidden" id="empName" name="employeeName"/>
<input type="hidden" asp-for="EmployeeId"/>
<input type="hidden" asp-for="WorkshopId"/>
<input type="hidden" asp-for="EmployeeFullName"/>
@*<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>
$('.RemoveLeftWork').on("click",
function() {
const id = $(this).closest("div").find("input[name='LeftworkId']").val();
const emp = $('#emp').val();
$('#LeftId').val(id);
$('#empName').val(emp);
swal({
title: "آیا حذف این سابقه ترک کار اطمینان دارید؟",
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if (isConfirm) {
$('#sendFinaly').click();
}
});
});
</script>
<script>
function validDate(inputField) {
var 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 (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = inputField.value;
var m1, m2;
var y1, y2, y3, y4;
var d1, d2;
var 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]);
}
}
var yRes = y1 + y2 + y3 + y4;
var year = parseInt(yRes);
var mRes = m1 + m2;
var month = parseInt(mRes);
var dRes = d1 + d2;
var day = parseInt(dRes);
var FixResult = yRes + s1 + mRes + s2 + dRes;
var 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) {
inputField.style.backgroundColor = '#a6e9a6';
$("button[type=submit]").attr('disabled', false);
validCheck = true;
} else {
inputField.style.backgroundColor = '#f94c4c';
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
$("button[type=submit]").attr('disabled', true);
validCheck = false;
}
return validCheck;
}
</script>
<script>
$(document).ready(function() {
$('.select-city').select2({
language: "fa",
dir: "rtl"
});
});
</script>
<script>
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});
</script>
<script>
@*function EditLeft(id) {
const leftId = id.value;
$.ajax({
//contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'GET',
url: '@Url.Page("./Index", "EditLeftWork")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "id": leftId },
success: function (response) {
console.log(response);
if (response.stat == false) {
$("button[type=submit]").attr('disabled', true)
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', response.message);
//swal("", response.message, "error");
}
else {
$("button[type=submit]").attr('disabled', false)
}
},
failure: function (response) {
console.log(5, response)
alert("خطایی رخ داده است. لطفا با مدیر سیستم تماس بگیرید");
}
});
}*@
</script>

View File

@@ -1,7 +1,7 @@
@model CompanyManagment.App.Contracts.Leave.CreateLeave
@{
var i = 1;
string adminVersion = _0_Framework.Application.Version.AdminVersion;
}
@{
@@ -353,503 +353,11 @@
}
</style>
<script>
$(document).ready(function() {
$(document).on("change",
"#IsAccepted",
function() {
const 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');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#saveFinaly').click();
} else {
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا خطاها را برطرف کنید");
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
var computeLeavHourseAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavHourse")';
var computeLeavDaysAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")';
var checkIfValidToEditAjaxUrl = '@Url.Page("/Company/Contracts/Index", "CheckIfValidToEdit")';
</script>
<script>
$("#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");
$('.endLeaveLabal').show();
$('#StartHoure').removeClass("invalidTime");
$('#StartHoure').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$('.hourses').css({
display: "flex"
});
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('.sumDaysDiv').hide();
}
});
/////////////////Time Input Validatet/////////////////
$('#StartHoure').on("keyup",
function() {
const 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() {
const 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 ($('#StartHoure').hasClass('validTime') && $('#StartHoure').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
function computeHourse() {
$('.res').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Contracts/Index", "ComputeLeavHourse")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startHours": $('#StartHoure').val(), "endHourse": $('#EndHours').val() },
success: function(response) {
const res = ` <span class="res"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></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: '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
// function validateHM(inputField) {
// /*var isValid = /^\d{1}?\d{1}:\d{1}?\d{1}$/.test(inputField.value);*/
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test(inputField.value);
// let isEmpty = inputField.value;
// if (isValid || isEmpty == "") {
// if (isEmpty != "") {
// inputField.style.backgroundColor = '#a6e9a6';
// } else {
// inputField.style.backgroundColor = '#fff';
// }
<script src="~/AssetsAdmin/page/Contracts/js/paidLeave.js?ver=@adminVersion"></script>
// timeValid = true;
// } else {
// inputField.style.backgroundColor = '#f94c4c';
// $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا ساعت را بصورت صحیح وارد کنید");
// timeValid = false;
// }
// return isValid;
// }
</script>
<script>
//Edit Leave
function checkIfValidToEdit(id) {
var leaveId = Number(id);
$.ajax({
/* contentType: 'charset=utf-8',*/
// async: false,
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Contracts/Index", "CheckIfValidToEdit")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "id": leaveId },
success: function(response) {
if (response.validToEdit) {
const goTo = `#showmodal=/Admin/Company/Contracts?id=${leaveId}&handler=EditPaidLeave`;
console.log(goTo);
window.location.href = goTo;
} else {
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "در بازه زمانی این مرخصی و یا بعد از آن فیش حقوقی وجود دارد");
}
},
failure: function(response) {
console.log(5, response);
}
});
}
//remove Leave
$('.RemoveLeftWork').on("click",
function() {
const 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>
// $(document).ready(function () {
// setTimeout(function () {
// window.location.hash = "##";
// }, 1000);
// });
</script>

View File

@@ -447,6 +447,14 @@
بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.
</p>
</div>
break;
case 683 or 687:
<div class="row m-t-5" style="padding: 0px 24px 10px">
<p style="text-align: justify;">
در صورتی که طرف دوم قرارداد (پرسنل) اقدام به امضای این قرارداد نمود در صورت عدم ایفای تعهدات خود علی الخصوص عدم حضور در محل کارگاه مبلغ 200,000,000 ریال بعنوان خسارت می بایست به کارفرما پرداخت نماید
</div>
break;
default:

View File

@@ -1,7 +1,7 @@
@model CompanyManagment.App.Contracts.Leave.CreateLeave
@{
var i = 1;
string adminVersion = _0_Framework.Application.Version.AdminVersion;
}
@{
@@ -281,363 +281,8 @@
<script src="~/adminTheme/assets/datatables/dataTables.bootstrap.js"></script>
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
<script>
$('.RemoveLeftWork').on("click",
function() {
const 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();
}
});
});
var computeLeavDaysAjaxUrl = '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")';
</script>
<script>
$(document).ready(function() {
$(document).on("change",
"#IsAccepted",
function() {
const 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);
}
});
});
<script src="~/AssetsAdmin/page/Contracts/js/sickLeave.js?ver=@adminVersion"></script>
$('#save').on('click',
function() {
$("#descriptionAcceptedCheck").on("change",
function() {
$('#descriptionAcceptedCheck').removeClass('errored');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#saveFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
</script>
<script>
$('input:radio[name="PaidLeaveType"]').change(function() {
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$('.endLeaveLabal').show();
$('#StartHoure').removeClass("invalidTime");
$('#StartHoure').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
}
});
function computeDays() {
$('.resultDays').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Contracts/Index", "ComputeLeavdays")',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,405 @@
$(document).ready(function() {
const 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);
}
});
$(document).ready(
function() {
computeHourse();
const saati = $('input:radio[class="saati"]');
const roozane = $('input:radio[class="roozane"]');
if ($(roozane).is(':checked') && $(roozane).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$("#saati").css("visibility", "hidden");
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
} else if ($(saati).is(':checked') && $(saati).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$('.hourses').css({
display: "flex"
});
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('#roozaneh').hide();
$('.sumDaysDiv').hide();
}
});
computeDays();
$('#save').on('click',
function() {
$("#descriptionAcceptedCheck").on("change",
function() {
$('#descriptionAcceptedCheck').removeClass('errored');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1 && $('.invalidTime').length < 1) {
$('#editFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
/////////////////Time Input Validatet/////////////////
$('#StartHoure').on("keyup",
function() {
const 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('invalidTime') && $('#EndHours').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
$('#EndHours').on("keyup",
function() {
const 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 (!$('#StartHoure').hasClass('invalidTime') && $('#StartHoure').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
function computeHourse() {
$('.res').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: computeLeavHourseAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startHours": $('#StartHoure').val(), "endHourse": $('#EndHours').val() },
success: function(response) {
const res = ` <span class="res"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></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: computeLeavDaysAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});

View File

@@ -0,0 +1,339 @@
$(document).ready(function() {
const 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');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#editFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
$(document).ready(function() {
computeDays();
const saati = $('input:radio[class="saati"]');
const roozane = $('input:radio[class="roozane"]');
if ($(roozane).is(':checked') && $(roozane).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$("#saati").css("visibility", "hidden");
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
}
});
function computeDays() {
$('.resultDays').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: computeLeavDaysAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,492 @@
$(document).ready(function() {
$(document).on("change",
"#IsAccepted",
function() {
const 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');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#saveFinaly').click();
} else {
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا خطاها را برطرف کنید");
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
$("#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");
$('.endLeaveLabal').show();
$('#StartHoure').removeClass("invalidTime");
$('#StartHoure').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$('.hourses').css({
display: "flex"
});
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('.sumDaysDiv').hide();
}
});
/////////////////Time Input Validatet/////////////////
$('#StartHoure').on("keyup",
function() {
const 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() {
const 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 ($('#StartHoure').hasClass('validTime') && $('#StartHoure').val() != null) {
computeHourse();
}
} else {
$(this).removeClass("validTime");
$(this).addClass("invalidTime");
}
});
function computeHourse() {
$('.res').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: computeLeavHourseAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startHours": $('#StartHoure').val(), "endHourse": $('#EndHours').val() },
success: function(response) {
const res = ` <span class="res"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></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: computeLeavDaysAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
// function validateHM(inputField) {
// /*var isValid = /^\d{1}?\d{1}:\d{1}?\d{1}$/.test(inputField.value);*/
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test(inputField.value);
// let isEmpty = inputField.value;
// if (isValid || isEmpty == "") {
// if (isEmpty != "") {
// inputField.style.backgroundColor = '#a6e9a6';
// } else {
// inputField.style.backgroundColor = '#fff';
// }
// timeValid = true;
// } else {
// inputField.style.backgroundColor = '#f94c4c';
// $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا ساعت را بصورت صحیح وارد کنید");
// timeValid = false;
// }
// return isValid;
// }
//Edit Leave
function checkIfValidToEdit(id) {
var leaveId = Number(id);
$.ajax({
/* contentType: 'charset=utf-8',*/
// async: false,
dataType: 'json',
type: 'GET',
url: checkIfValidToEditAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "id": leaveId },
success: function(response) {
if (response.validToEdit) {
const goTo = `#showmodal=/Admin/Company/Contracts?id=${leaveId}&handler=EditPaidLeave`;
console.log(goTo);
window.location.href = goTo;
} else {
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "در بازه زمانی این مرخصی و یا بعد از آن فیش حقوقی وجود دارد");
}
},
failure: function(response) {
console.log(5, response);
}
});
}
//remove Leave
$('.RemoveLeftWork').on("click",
function() {
const 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();
}
});
});

View File

@@ -0,0 +1,361 @@
$('.RemoveLeftWork').on("click",
function() {
const 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();
}
});
});
$(document).ready(function() {
$(document).on("change",
"#IsAccepted",
function() {
const 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');
});
const IsAcceptedCheck = $('#IsAccepted').is(':checked');
const descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا توضیحات در صورت عدم موافقت را پر کنید.");
return;
}
if ($('.errored').length < 1) {
$('#saveFinaly').click();
}
});
$(".date").mask("0000/00/00");
$('.date').on('input',
function() {
const startDate = this.value;
if (startDate.length == 10) {
const submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#startLeave').val() != '' && $('#endLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
}
} else {
$(this).addClass('errored');
}
});
function dateValidcheck(inputField1) {
const persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g];
const arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g];
const fixNumbers = function(str) {
if (typeof str === 'string') {
for (let i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
const getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
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 === 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]);
}
}
const yRes = y1 + y2 + y3 + y4;
const year = parseInt(yRes);
const mRes = m1 + m2;
const month = parseInt(mRes);
const dRes = d1 + d2;
const day = parseInt(dRes);
const fixResult = yRes + s1 + mRes + s2 + dRes;
const test1 = checkEnValid(inputField1.value);
const 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 (let 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;
}
}
$('input:radio[name="PaidLeaveType"]').change(function() {
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$('.endLeaveLabal').show();
$('#StartHoure').removeClass("invalidTime");
$('#StartHoure').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.hourses').css({
display: "none"
});
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
$('.res').remove();
$('.validTime').removeClass("validTime");
}
});
function computeDays() {
$('.resultDays').remove();
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'GET',
url: computeLeavDaysAjaxUrl,
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
data: { "startDay": $('#startLeave').val(), "endDay": $('#endLeave').val() },
success: function(response) {
const res = ` <span class="resultDays"><span>&nbsp;</span><span>:</span> <span>&nbsp;</span><span>${response.res}</span></span>`;
$('.sumDays').append(res);
},
failure: function(response) {
console.log(5, response);
}
});
}
$(document).ready(function() {
setTimeout(function() {
window.location.hash = "##";
},
1000);
});

View File

@@ -351,6 +351,11 @@ function caseHistoryLoadAjax() {
if (caseHistoryEmployeeData.dateGr !== null) {
if (caseHistoryEmployeeData.rollCalls.length <= 0) {
hasData = false;
return;
}
$('#dateFaEmployee').show();
var lastPrint = caseHistoryEmployeeData.rollCalls[0];