using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Timers; using _0_Framework.Application; using Company.Domain.ContractAgg; using Company.Domain.EmployeeAgg; using Company.Domain.HolidayItemAgg; using Company.Domain.WorkshopAgg; using Company.Domain.YearlySalaryAgg; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.EmployeeComputeOptions; using CompanyManagment.App.Contracts.Employer; using CompanyManagment.App.Contracts.Job; using CompanyManagment.App.Contracts.Leave; using CompanyManagment.App.Contracts.LeftWork; using CompanyManagment.App.Contracts.PersonalContractingParty; using CompanyManagment.App.Contracts.WorkingHours; using CompanyManagment.App.Contracts.WorkingHoursItems; using CompanyManagment.App.Contracts.WorkingHoursTemp; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.YearlySalary; using CompanyManagment.EFCore.Migrations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Logging; using PersianTools.Core; using Microsoft.AspNetCore.SignalR; using ServiceHost.Hubs; using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; namespace ServiceHost.Areas.Admin.Pages.Company.Checkouts { [Authorize] public class IndexModel : PageModel { public string Message { get; set; } public CheckoutSearchModel SearchModel; public List chekoutlist; public List Contracts2; public List EmployeeList; public List EmployersList; public List WorkshopList; public List ComputingView; public string WorkshopSearch = "false"; public bool falseCheck { get; set; } public List JobList; public List WorkshopEmployer; public List PersonnelList; public SelectList Workshops; public SelectList WorkshopsCode; public SelectList Employees; public SelectList Employers; public string employeeFullName; private string InterferenceMessage = string.Empty; public List YearlyList; private readonly ICheckoutApplication _checkoutApplication; private readonly IContractApplication _contractApplication; private readonly IWorkshopApplication _workshopApplication; private readonly IEmployeeApplication _employeeApplication; private readonly IEmployerApplication _employerApplication; private readonly IYearlySalaryApplication _yearlySalaryApplication; private readonly IYearlySalaryRepository _yearlySalaryRepository; private readonly IContractRepository _contractRepository; private readonly IWorkingHoursApplication _workingHoursApplication; private readonly IWorkingHoursItemsApplication _workingHoursItemsApplication; private readonly IAuthHelper _authHelper; private readonly IWorkingHoursTempApplication _workingHoursTempApplication; private readonly IHolidayItemRepository _holidayItemRepository; private readonly ILeftWorkApplication _leftWorkApplication; private readonly IPersonalContractingPartyApp _personalContractingPartyApp; private readonly ILeaveApplication _leaveApplication; private readonly IHubContext _hubContext; private readonly IEmployeeComputeOptionsApplication _employeeComputeOptionsApplication; public IndexModel(IContractApplication contractApplication, IWorkshopApplication workshopApplication, IEmployeeApplication employeeApplication, IEmployerApplication employerApplication, IYearlySalaryApplication yearlySalaryApplication, IContractRepository contractRepository, IWorkingHoursApplication workingHoursApplication, IWorkingHoursItemsApplication workingHoursItemsApplication, IAuthHelper authHelper, ICheckoutApplication checkoutApplication, IYearlySalaryRepository yearlySalaryRepository, IWorkingHoursTempApplication workingHoursTempApplication, IHolidayItemRepository holidayItemRepository, ILeftWorkApplication leftWorkApplication, IPersonalContractingPartyApp personalContractingPartyApp, ILeaveApplication leaveApplication, IHubContext hubContext, IEmployeeComputeOptionsApplication employeeComputeOptionsApplication) { _contractApplication = contractApplication; _workshopApplication = workshopApplication; _employeeApplication = employeeApplication; _employerApplication = employerApplication; _yearlySalaryApplication = yearlySalaryApplication; _contractRepository = contractRepository; _workingHoursApplication = workingHoursApplication; _workingHoursItemsApplication = workingHoursItemsApplication; _authHelper = authHelper; _checkoutApplication = checkoutApplication; _yearlySalaryRepository = yearlySalaryRepository; _workingHoursTempApplication = workingHoursTempApplication; _holidayItemRepository = holidayItemRepository; _leftWorkApplication = leftWorkApplication; _personalContractingPartyApp = personalContractingPartyApp; _leaveApplication = leaveApplication; _hubContext = hubContext; _employeeComputeOptionsApplication = employeeComputeOptionsApplication; } public async Task OnGet(CheckoutSearchModel searchModel) { if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0) { WorkshopSearch = "true"; } //EmployerList = _employerApplication.GetEmployers(); //EmployeeList = _employeeApplication.GetEmployee(); //WorkshopList = _workshopApplication.GetWorkshop(); //Employees = // new SelectList(await _employeeApplication.GetEmployeeToList(), "Id", "EmployeeFullName"); //Employers = // new SelectList(_employerApplication.GetEmployers(), "Id", "FullName"); YearlyList = _yearlySalaryApplication.GetYears(); //chekoutlist = await _checkoutApplication.Search(searchModel); } public async Task OnGetSearch(CheckoutSearchModel searchModel) { var searchResult = await _checkoutApplication.Search(searchModel); var result = new MainViewModel(); result.MainList = searchResult; if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0) { result.WorkshopSearch = "true"; } else { result.WorkshopSearch = "false"; } if (searchModel.EmployeeId > 0) { employeeFullName = searchResult.Select(x => x.EmployeeFullName).FirstOrDefault(); } else { employeeFullName = searchModel.EmployeeName; } return Partial("./MainSearch", result); } public IActionResult OnGetWorkshopMainList() { var workshop = _workshopApplication.GetWorkshopAccount(); //Workshops = // new SelectList(workshop, "Id", "WorkshopFullName"); //WorkshopsCode = // new SelectList(workshop, "Id", "ArchiveCode"); return new JsonResult(new { IsSuccedded = true, mylist = workshop, }); } public async Task OnGetPersonelMainList(string searchEmployee) { PersonnelList = await _employeeApplication.GetEmployeeToList(); var person = PersonnelList.Where(x => x.EmployeeFullName.Contains(searchEmployee)).Take(200).ToList(); person = person.OrderBy(x => x.EmployeeFullName.Length).ToList(); return new JsonResult(new { IsSuccedded = true, mylist = person, }); } public IActionResult OnGetEmployerMainList() { var employers = _employerApplication.GetEmployers(); return new JsonResult(new { IsSuccedded = true, mylist = employers, }); } public IActionResult OnPostLoadWorkshops(long id) { var result = _workshopApplication.GetWorkshopInfo(id); return new JsonResult(new { IsSuccedded = true, InsurancCode = result.InsuranceCode, archiveCode = result.ArchiveCode, state = result.State, city = result.City, address = result.Address, adres = result.State + "-" + result.City + "-" + result.Address, empList = result.EmpList, employeeList = result.EmployeeList }); } public IActionResult OnGetCreate() { var command = new CreateCheckout() { UserId = _authHelper.CurrentAccountId(), Yearlist = _yearlySalaryApplication.GetYears(), WorkshopNameSelectList = new SelectList(_workshopApplication.GetWorkshopAccount(), "Id", "WorkshopFullName"), WorkshopCodeSelectList = new SelectList(_workshopApplication.GetWorkshopAccount(), "Id", "ArchiveCode") }; return Partial("./Create", command); } public async Task OnGetCorrectCheckout() { var result = await _workingHoursTempApplication.Correct(); var ContractsId = result.Select(x => x.Id).ToList(); int i = 1; int c = 1; foreach (var item in ContractsId) { var contract = _contractApplication.GetDetails(item); var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(contract.Id); if (workingHours.ShiftWorkTemp == "1") { var serchModel = new CheckoutSearchModel() { ContractNo = contract.ContractNo, ContractId = item, }; var getChekouts = _checkoutApplication.SimpleSearch(serchModel); if (getChekouts != null) { foreach (var checkout in getChekouts) { var separation = checkout; var removeCheckout = _checkoutApplication.DeleteCheckout(checkout.Id); workingHours.ContractStartGr = separation.ContractStartGr; workingHours.ContractEndGr = separation.ContractEndGr; workingHours.ContarctStart = separation.ContractStart; workingHours.ContractEnd = separation.ContractEnd; workingHours.GetWorkDate = contract.GetWorkDate; workingHours.GetWorkDateHide = contract.GetWorkDate; workingHours.WorkshopId = contract.WorkshopIds; workingHours.EmployeeId = contract.EmployeeId; Thread.Sleep(100); var mandatoryCompute = MandatoryHours(workingHours, 0); var employee = _employeeApplication.GetDetails(contract.EmployeeId); var workshop = _workshopApplication.GetDetails(contract.WorkshopIds); var officialHoliday = mandatoryCompute.OfficialHoliday; var Friday = int.Parse(mandatoryCompute.NumberOfFriday); var fridayStartToEnd = mandatoryCompute.FridayStartToEnd; var totalHoursH = mandatoryCompute.TotalHoursesH; var totalHoursM = mandatoryCompute.TotalHoursesM; var dayliWage = mandatoryCompute.SalaryCompute.MoneyToDouble(); var consumableItemDouble = mandatoryCompute.ConsumableItems.MoneyToDouble(); var housingAllowanceDouble = mandatoryCompute.HousingAllowance.MoneyToDouble(); var familyAllowanceDouble = mandatoryCompute.FamilyAllowance.MoneyToDouble(); var overTimeWorking = _yearlySalaryRepository.GetOverTimeWorking(dayliWage, mandatoryCompute.OverTimeWorkH, mandatoryCompute.OverTimeWorkM); var overNightWorking = _yearlySalaryRepository.GetOverNightWorking(dayliWage, mandatoryCompute.OverNightWorkH, mandatoryCompute.OverNightWorkM, mandatoryCompute.SumTime44, officialHoliday, Friday, separation.ContractStartGr, separation.ContractEndGr, totalHoursH, totalHoursM); var leavePay = _yearlySalaryRepository.GetLeavePay(separation.ContractStartGr, separation.ContractEndGr, dayliWage, consumableItemDouble, housingAllowanceDouble, familyAllowanceDouble, mandatoryCompute.SumTime44, officialHoliday, Friday, totalHoursH, totalHoursM); var command = new CreateCheckout() { EmployeeFullName = employee.EmployeeFullName, FathersName = employee.FatherName, NationalCode = employee.NationalCode, DateOfBirth = employee.DateOfBirth, EmployeeId = employee.Id, WorkshopName = workshop.WorkshopFullName, WorkshopId = workshop.Id, ArchiveCode = workshop.ArchiveCode, ContractNo = contract.ContractNo, ContractStartGr = separation.ContractStartGr, ContractEndGr = separation.ContractEndGr, ContractStart = separation.ContractStart, ContractEnd = separation.ContractEnd, Month = separation.Month, Year = separation.Year, ContractId = contract.Id, PersonnelCode = contract.PersonnelCode.ToString(), WorkingHoursId = workingHours.WorknigHoursId, OvertimePay = overTimeWorking, NightworkPay = overNightWorking, ConsumableItems = mandatoryCompute.ConsumableItems, HousingAllowance = mandatoryCompute.HousingAllowance, FamilyAllowance = mandatoryCompute.FamilyAllowance, DayliWage = mandatoryCompute.SalaryCompute, LeavePay = leavePay, WorkingWeeklyTime = mandatoryCompute.SumTime44, officialholiday = officialHoliday, friday = Friday, totalHoursH = totalHoursH, totalHorsM = totalHoursM, WeeklyTime = mandatoryCompute.weeklyTime, ShiftPay = mandatoryCompute.ShiftPay, Basic = mandatoryCompute.Basic, FridayStarttoEnd = fridayStartToEnd, TotalHolidaysAndNotH = mandatoryCompute.TotalHolidayAndNotH, TotalHolidaysAndNotM = mandatoryCompute.TotalHolidayAndNotM, DailFeeComplete = mandatoryCompute.DayliFeeComplete, Signature = checkout.Signature }; _checkoutApplication.Create(command); //if (checkout.Signature == "1") //{ // var search = new CheckoutSearchModel() // { // EmployeeId = checkout.EmployeeId, // WorkshopId = checkout.WorkshopId, // ContractStart = checkout.ContractStart, // ContractEnd = checkout.ContractEnd, // }; // var checkoutId = _checkoutApplication.SimpleSearch(search).FirstOrDefault(); // _checkoutApplication.Sign(checkoutId.Id); //} if (checkout.Signature == "1") { Console.WriteLine(c + "-" + i + "- finish checkout : " + contract.ContractNo + "Signature" + " . wID " + checkout.WorkshopId + " eID " + checkout.EmployeeId); } else { Console.WriteLine(c + "-" + i + "- finish checkout : " + contract.ContractNo); } Thread.Sleep(30); i++; } _contractApplication.EditAgreement(item); c++; } } } Console.WriteLine("complete"); return RedirectToPage("./Index"); } public IActionResult OnGetProgress() { string progress = HttpContext.Response.Headers["X-Progress"]; if (string.IsNullOrEmpty(progress)) { return new JsonResult(300); } return new JsonResult(int.Parse(progress)); } public IActionResult OnPostCreate(List ContractsId, string ConvertYear, string ConvertMonth) { var currntAcc = _authHelper.CurrentAccountId(); //IProgress progress = new Progress(value => { // // report progress to client // Response.Headers.Add($"X-Progress-{Guid.NewGuid()}", value.ToString()); //}); //var watch = System.Diagnostics.Stopwatch.StartNew(); if (ConvertYear == "0" && ConvertMonth == "0") { var today = DateTime.Now; var FaToday = today.ToFarsi(); var year = FaToday.Substring(0, 4); var month = FaToday.Substring(5, 2); ConvertYear = year; ConvertMonth = month; } else if (ConvertYear == "0" || ConvertMonth == "0") { var opration2 = new OperationResult() { IsSuccedded = false, Message = "لطفا ماه و سال را انتخاب کنید", }; return new JsonResult(opration2); } ContractsId = ContractsId.Where(x => x != 0).ToList(); int n = 1; double maxNumber = Convert.ToDouble(ContractsId.Count()); if (ContractsId.Count > 0) { //int i = 0; foreach (var item in ContractsId) { var contract = _contractApplication.GetDetails(item); //var workingHours = _workingHoursApplication.GetByContractId(contract.Id); var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(contract.Id); var separation = _contractApplication.contractSeparation(ConvertYear, ConvertMonth, contract.ContractStartGr, contract.ContractEndGr, contract.EmployeeId, contract.WorkshopIds); if (separation.checker) { workingHours.ContractStartGr = separation.ContractStartGr; workingHours.ContractEndGr = separation.ContractEndGr; workingHours.ContarctStart = separation.ContarctStart; workingHours.ContractEnd = separation.ContractEnd; workingHours.GetWorkDate = contract.GetWorkDate; workingHours.GetWorkDateHide = contract.GetWorkDate; workingHours.WorkshopId = contract.WorkshopIds; workingHours.EmployeeId = contract.EmployeeId; var mandatoryCompute = MandatoryHours(workingHours, 0); var hasLeave = _leaveApplication.LeavOnChekout(separation.ContractStartGr, separation.ContractEndGr, contract.EmployeeId, contract.WorkshopIds); if (hasLeave != null) { var LeaveCompute = MandatoryHours(workingHours, hasLeave.Id); } var employee = _employeeApplication.GetDetails(contract.EmployeeId); var workshop = _workshopApplication.GetDetails(contract.WorkshopIds); var officialHoliday = mandatoryCompute.OfficialHoliday; var Friday = int.Parse(mandatoryCompute.NumberOfFriday); var fridayStartToEnd = mandatoryCompute.FridayStartToEnd; var totalHoursH = mandatoryCompute.TotalHoursesH; var totalHoursM = mandatoryCompute.TotalHoursesM; var dayliWage = mandatoryCompute.SalaryCompute.MoneyToDouble(); var consumableItemDouble = mandatoryCompute.ConsumableItems.MoneyToDouble(); var housingAllowanceDouble = mandatoryCompute.HousingAllowance.MoneyToDouble(); var familyAllowanceDouble = mandatoryCompute.FamilyAllowance.MoneyToDouble(); var marriedAllowanceDouble = mandatoryCompute.MarriedAllowance.MoneyToDouble(); var overTimeWorking = _yearlySalaryRepository.GetOverTimeWorking(dayliWage, mandatoryCompute.OverTimeWorkH, mandatoryCompute.OverTimeWorkM); var overNightWorking = _yearlySalaryRepository.GetOverNightWorking(dayliWage, mandatoryCompute.OverNightWorkH, mandatoryCompute.OverNightWorkM, mandatoryCompute.SumTime44, officialHoliday, Friday, separation.ContractStartGr, separation.ContractEndGr, totalHoursH, totalHoursM); //مزد مرخصی //var leavePay = _yearlySalaryRepository.GetLeavePay(separation.ContractStartGr, separation.ContractEndGr, // dayliWage, consumableItemDouble, housingAllowanceDouble, familyAllowanceDouble, mandatoryCompute.SumTime44, officialHoliday, Friday, totalHoursH, totalHoursM); //manual //if ((contract.EmployeeId == 7003 && contract.WorkshopIds == 216) || // (contract.EmployeeId == 7106 && contract.WorkshopIds == 216)) //{ // workshop.YearsOptions = "OnEndOfContract"; // workshop.BonusesOptions = "OnEndOfContract"; // workshop.ComputeOptions = "OnEndOfContract"; //} var employeeOptions = _employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds); var getYearsOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId); var yearsOption = getYearsOption == null ? workshop.YearsOptions : getYearsOption.YearsOptions; var getBonusesOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId); var bonusesOption = getBonusesOption == null ? workshop.BonusesOptions : getBonusesOption.BonusesOptions; var getComputeOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId); var computeOption = getComputeOption == null ? workshop.ComputeOptions : getComputeOption.ComputeOptions; //سنوات //var leftNull = "1500/01/01"; //var leftNullGr = leftNull.ToGeorgianDateTime(); //var leftWorkDateGr = new DateTime(2121,3,21); //if (separation.LeftWorkDate < leftNullGr) //{ // leftWorkDateGr = separation.LeftWorkDate.AddDays(-1); //} //else //{ // leftWorkDateGr = separation.LeftWorkDate; //} var yearsPay = _yearlySalaryRepository.Years(separation.ContractStartGr, separation.LeftWorkDate ,separation.ContractEndGr, dayliWage, yearsOption, separation.HasLeft,separation.StartWorkDate, contract.ContractStartGr, contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract); //عیدی var bunosesPay = _yearlySalaryRepository.Bunoses(separation.ContarctStart, separation.LeftWorkDate, separation.ContractStartGr, separation.ContractEndGr, dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate, contract.ContractStartGr, contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract); //مزد مرخصی جدید var leavePayNew = _yearlySalaryRepository.LeavePay(separation.ContarctStart, separation.LeftWorkDate ,separation.ContractStartGr, separation.ContractEndGr, dayliWage, computeOption, separation.HasLeft, separation.StartWorkDate, contract.ContractStartGr, contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, fridayStartToEnd,officialHoliday, totalHoursH, totalHoursM,consumableItemDouble,housingAllowanceDouble,familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract); var command = new CreateCheckout() { EmployeeFullName = employee.EmployeeFullName, FathersName = employee.FatherName, NationalCode = employee.NationalCode, DateOfBirth = employee.DateOfBirth, EmployeeId = employee.Id, WorkshopName = workshop.WorkshopFullName, WorkshopId = workshop.Id, ArchiveCode = workshop.ArchiveCode, ContractNo = contract.ContractNo, ContractStartGr = separation.ContractStartGr, ContractEndGr = separation.ContractEndGr, ContractStart = separation.ContarctStart, ContractEnd = separation.ContractEnd, Month = ConvertMonth, Year = ConvertYear, ContractId = contract.Id, PersonnelCode = contract.PersonnelCode.ToString(), WorkingHoursId = workingHours.WorknigHoursId, //فوق العاده اضافه کاری OvertimePay = overTimeWorking, //فوق العاده شب کاری NightworkPay = overNightWorking, //کمک هزینه اقلام ConsumableItems = mandatoryCompute.ConsumableItems, //کمک هزینه مسکن HousingAllowance = mandatoryCompute.HousingAllowance, // کمک هزینه عائله مندی FamilyAllowance = mandatoryCompute.FamilyAllowance, //دستمزد روزانه DayliWage = mandatoryCompute.SalaryCompute, //مزد مرخصی LeavePay = leavePayNew.LeavPay, //مدت طلب مرخصی CreditLeaves = leavePayNew.CreditLeaves, //حق تاهل MarriedAllowance = mandatoryCompute.MarriedAllowance, //سنوات YearsPay = yearsPay, //عیدی و پادادش BonusesPay = bunosesPay, //مدت غیبت AbsencePeriod = leavePayNew.AbsencePeriod, //کسری غیبت AbsenceDeduction = leavePayNew.AbsenceDeduction, //وضعیت تصفیه مزد مرخصی LeaveCheckout = leavePayNew.LeaveCheckout, //میانگین ساعت کار در روز AverageHoursPerDay = leavePayNew.AverageHoursPerDay, WorkingWeeklyTime = mandatoryCompute.SumTime44, officialholiday = officialHoliday, friday = Friday, totalHoursH = totalHoursH, totalHorsM = totalHoursM, WeeklyTime = mandatoryCompute.weeklyTime, // فوق العاده نوبت کاری ShiftPay = mandatoryCompute.ShiftPay, //سنوات--> Basic = mandatoryCompute.Basic, FridayStarttoEnd = fridayStartToEnd, TotalHolidaysAndNotH = mandatoryCompute.TotalHolidayAndNotH, TotalHolidaysAndNotM = mandatoryCompute.TotalHolidayAndNotM, DailFeeComplete = mandatoryCompute.DayliFeeComplete, }; _checkoutApplication.Create(command); //var workshopId = $"{contract.WorkshopIds}"; //var userId = $"{currntAcc}"; //var sumId = userId + workshopId; //var groupId = Convert.ToInt64(sumId); var percent = (n / maxNumber) * 100; _hubContext.Clients.Group(CheckoutHub.GetGroupName(currntAcc)) .SendAsync("showStatus", (int)percent); n += 1; //progress.Report((i + 1) * 100 / ContractsId.Count); //i += 1; } } } else { var noSelect = new OperationResult() { IsSuccedded = false, Message = "هیچ قراردادی برای تصفیه انتخاب نشده است", }; return new JsonResult(noSelect); } var opration = new OperationResult() { IsSuccedded = true, Message = "عملیات با موفقیت انجام شد", }; //Console.WriteLine(watch.Elapsed); return new JsonResult(opration); } public async Task OnGetLoadContracts(long WorkshopId, string Year, string Month, string ContractStart, string ContractEnd, long EmployeeId) { var today = DateTime.Now; var GrogorianEnd = new DateTime(); var GrogorianStart = new DateTime(); //var GrogorianThisMonthStart2 = new DateTime(); //var GrogorianPreviusMonthStart2 = new DateTime(); //var ConvertContractStartGr = new DateTime(); //var ConvertContractEndGr = new DateTime(); //var ConvertStartFarsi = string.Empty; //var nextmonthEndfarsi = string.Empty; var faToday = string.Empty; var faToday2 = string.Empty; int syear = 0; int smonth = 0; int eyear = 0; int emonth = 0; var ConvertStart = new DateTime(); var ConvertEnd = new DateTime(); if (string.IsNullOrWhiteSpace(ContractStart) && string.IsNullOrWhiteSpace(ContractEnd)) { if (Month == "0" && Year == "0") { faToday = today.ToFarsi(); } else { faToday = $"{Year}/{Month}/01"; } syear = Convert.ToInt32(faToday.Substring(0, 4)); smonth = Convert.ToInt32(faToday.Substring(5, 2)); var PersianStart = new PersianDateTime(syear, smonth, 01); GrogorianStart = PersianStart.ToGregorianDateTime(); var PersianEndFinde = new PersianDateTime(syear, smonth, 01); PersianEndFinde = PersianEndFinde.AddMonths(1); PersianEndFinde = PersianEndFinde.AddDays(-1); GrogorianEnd = PersianEndFinde.ToGregorianDateTime(); ContractStart = GrogorianStart.ToFarsi(); ContractEnd = GrogorianEnd.ToFarsi(); //nextMonthStartFarsi = GrogorianThisMonthStart.ToFarsi(); //nextmonthEndfarsi = nextMonthStartFarsi.FindeEndOfMonth(); } var a = new ContractSearchModel() { WorkshopIds = WorkshopId, ContarctStart = ContractStart, ContractEnd = ContractEnd, EmployeeId = EmployeeId, }; var ContractSearch = _contractApplication.SearchForCheckout(a); var ContractListNew = new List(); foreach (var item in ContractSearch) { var separation = _contractApplication.contractSeparation(Year, Month, item.ContractStartGr, item.ContractEndGr, item.EmployeeId, item.WorkshopIds); //if (EmployeeId == 41256) //نوشین عینی فرد //{ // separation.ContarctStart = item.ContarctStart; // separation.ContractEnd = item.ContractEnd; //} var search = new CheckoutSearchModel() { ContractNo = item.ContractNo, ContractId = item.Id, ContractStart = separation.ContarctStart, ContractEnd = separation.ContractEnd, }; var checkedCHeckout = await _checkoutApplication.Search(search); if (checkedCHeckout.Count > 0) { item.RedColor = true; item.Extension = false; //x.ContractStartGr <= start && x.ContractEndGr >= endd || start <= x.ContractStartGr && endd > x.ContractStartGr || endd >= x.ContractEndGr && start < x.ContractEndGr if (item.ContractStartGr < GrogorianStart || item.ContractEndGr > GrogorianEnd) { item.LaterThanEnd = true; } item.MoreThanOneMonth = true; } else { if (item.ContractStartGr < GrogorianStart || item.ContractEndGr > GrogorianEnd) { item.LaterThanEnd = true; item.Extension = true; item.RedColor = false; } else { item.RedColor = false; item.Extension = true; } } ContractListNew.Add(item); } var command2 = new CreateCheckout() { Contracts = ContractListNew, }; return Partial("./alert", command2); } public IActionResult OnGetExtension() { var today = DateTime.Now; var faToday = string.Empty; faToday = today.ToFarsi(); var syear = Convert.ToInt32(faToday.Substring(0, 4)); var smonth = Convert.ToInt32(faToday.Substring(5, 2)); var PersianStartMonth = new PersianDateTime(syear, smonth, 01); var year = PersianStartMonth.Year.ToString(); var Getmonth = PersianStartMonth.ToString(); var month = Getmonth.Substring(5, 2); var ConvertStartPersian = PersianStartMonth.AddMonths(1); var convertYear = ConvertStartPersian.Year.ToString(); var GetConvertMonth = ConvertStartPersian.ToString(); var convertMonth = GetConvertMonth.Substring(5, 2); var command = new ExtensionViewModel() { Workshops = _workshopApplication.GetWorkshopAccount(), Employees = _employeeApplication.GetEmployee(), Employers = _employerApplication.GetEmployers(), Yearlist = _yearlySalaryApplication.GetYears(), Year = year, Month = month, ConvertYear = convertYear, ConvertMonth = convertMonth, }; return Partial("./Extension", command); } public IActionResult OnPostExtension3(string ConvertMonth, string ConvertYear, string ContarctStart, string ContractEnd, List ContractsId, string ConvertContractStart, string ConvertContractEnd) { var today = DateTime.Now; var faToday2 = string.Empty; var CStart = string.Empty; var CEnd = string.Empty; var GrogorianThisMonthStart2 = new DateTime(); int syear2 = 0; int smonth2 = 0; if (string.IsNullOrWhiteSpace(ConvertContractStart) && string.IsNullOrWhiteSpace(ConvertContractEnd)) { if (ConvertMonth == "0" && ConvertYear == "0") { today = today.AddMonths(1); faToday2 = today.ToFarsi(); } else { faToday2 = $"{ConvertYear}/{ConvertMonth}/01"; } syear2 = Convert.ToInt32(faToday2.Substring(0, 4)); smonth2 = Convert.ToInt32(faToday2.Substring(5, 2)); var PersianStartMonth2 = new PersianDateTime(syear2, smonth2, 01); GrogorianThisMonthStart2 = PersianStartMonth2.ToGregorianDateTime(); CStart = GrogorianThisMonthStart2.ToFarsi(); CEnd = CStart.FindeEndOfMonth(); } else { CStart = ConvertContractStart; CEnd = ConvertContractEnd; } var step3 = _workingHoursItemsApplication.GetWorkingHoursItems(); var op = new OperationResult(); var contList = new List(); var ContractIdList = ContractsId; ContractIdList = ContractIdList.Where(x => x != 0).ToList(); if (ContractIdList.Count > 0) { foreach (var item in ContractIdList) { var step1 = _contractApplication.GetDetails(item); var step2 = _workingHoursApplication.GetByContractId(item); var step4 = step3.Where(x => x.WorkingHoursId == step2.Id).ToList(); var RestTime = step4.Where(x => x.DayOfWork == "0").Select(x => x.RestTime).SingleOrDefault(); var RestTimeYekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.RestTime).SingleOrDefault(); var RestTimeDoshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.RestTime).SingleOrDefault(); var RestTimeSeshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.RestTime).SingleOrDefault(); var RestTimeCheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.RestTime).SingleOrDefault(); var RestTimePanjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.RestTime).SingleOrDefault(); var RestTimeJomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.RestTime).SingleOrDefault(); var SingleShift1 = step4.Where(x => x.DayOfWork == "0").Select(x => x.Start1).SingleOrDefault(); var SingleShift2 = step4.Where(x => x.DayOfWork == "0").Select(x => x.End1).SingleOrDefault(); var SingleShift1Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.End1).SingleOrDefault(); var SingleShift1Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.End1).SingleOrDefault(); var SingleShift1Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.End1).SingleOrDefault(); var SingleShift1Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.End1).SingleOrDefault(); var SingleShift1Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.End1).SingleOrDefault(); var SingleShift1Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.End1).SingleOrDefault(); var TowShifts1 = step4.Where(x => x.DayOfWork == "0").Select(x => x.Start2).SingleOrDefault(); var TowShifts2 = step4.Where(x => x.DayOfWork == "0").Select(x => x.End2).SingleOrDefault(); var TowShifts1Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.End2).SingleOrDefault(); var TowShifts1Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.End2).SingleOrDefault(); var TowShifts1Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.End2).SingleOrDefault(); var TowShifts1Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.Start1).SingleOrDefault(); var TowShifts2Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.End2).SingleOrDefault(); var TowShifts1Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.End2).SingleOrDefault(); var TowShifts1Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.End2).SingleOrDefault(); var Start1224 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End1224 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start1236 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End1236 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start2424 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End2424 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start2448 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End2448 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var computing = new CreateContract { ShiftWork = step2.ShiftWork, RestTime = RestTime, RestTimeYekshanbeh = RestTimeYekshanbeh, RestTimeDoshanbeh = RestTimeDoshanbeh, RestTimeSeshanbeh = RestTimeSeshanbeh, RestTimeCheharshanbeh = RestTimeCheharshanbeh, RestTimePanjshanbeh = RestTimePanjshanbeh, RestTimeJomeh = RestTimeJomeh, SingleShift1 = SingleShift1, SingleShift2 = SingleShift2, SingleShift1Yekshanbeh = SingleShift1Yekshanbeh, SingleShift2Yekshanbeh = SingleShift2Yekshanbeh, SingleShift1Doshanbeh = SingleShift1Doshanbeh, SingleShift2Doshanbeh = SingleShift2Doshanbeh, SingleShift1Seshanbeh = SingleShift1Seshanbeh, SingleShift2Seshanbeh = SingleShift2Seshanbeh, SingleShift1Cheharshanbeh = SingleShift1Cheharshanbeh, SingleShift2Cheharshanbeh = SingleShift2Cheharshanbeh, SingleShift1Panjshanbeh = SingleShift1Panjshanbeh, SingleShift2Panjshanbeh = SingleShift2Panjshanbeh, SingleShift1Jomeh = SingleShift1Jomeh, SingleShift2Jomeh = SingleShift2Jomeh, TowShifts1 = TowShifts1, TowShifts2 = TowShifts2, TowShifts1Yekshanbeh = TowShifts1Yekshanbeh, TowShifts2Yekshanbeh = TowShifts2Yekshanbeh, TowShifts1Doshanbeh = TowShifts1Doshanbeh, TowShifts2Doshanbeh = TowShifts2Doshanbeh, TowShifts1Seshanbeh = TowShifts1Seshanbeh, TowShifts2Seshanbeh = TowShifts2Seshanbeh, TowShifts1Cheharshanbeh = TowShifts1Cheharshanbeh, TowShifts2Cheharshanbeh = TowShifts2Cheharshanbeh, TowShifts1Panjshanbeh = TowShifts1Panjshanbeh, TowShifts2Panjshanbeh = TowShifts2Panjshanbeh, TowShifts1Jomeh = TowShifts1Jomeh, TowShifts2Jomeh = TowShifts2Jomeh, Start1224 = Start1224, End1224 = End1224, Start1236 = Start1236, End1236 = End1236, Start2424 = Start2424, End2424 = End2424, Start2448 = Start2448, End2448 = End2448, EmployeeId = step1.EmployeeId, ContarctStart = CStart, ContractEnd = CEnd, GetWorkDateHide = step1.GetWorkDate, }; var step5 = _contractApplication.MandatoryHours(computing); string workingDays = string.Empty; if (step5.NumberOfWorkingDays == "0") { workingDays = step5.ComplexNumberOfWorkingDays; } else { workingDays = step5.NumberOfWorkingDays; } var createNew = new CreateContract { EmployeeId = step1.EmployeeId, EmployerId = step1.EmployerId, WorkshopIds = step1.WorkshopIds, GetWorkDate = step1.GetWorkDate, SetContractDate = CStart, ArchiveCode = step1.ArchiveCode, ContarctStart = CStart, ContractEnd = CEnd, YearlySalaryId = step1.YearlySalaryId, ConsumableItems = step5.ConsumableItems, HousingAllowance = step5.HousingAllowance, DayliWage = step5.SalaryCompute, FamilyAllowance = step5.FamilyAllowance, WeeklyWorkingTime = step5.SumTime44, WorkingHoursWeekly = step5.SumTime44, JobType = step1.JobType, JobTypeId = step1.JobTypeId, ContractType = step1.ContractType, WorkshopAddress1 = step1.WorkshopAddress1, WorkshopAddress2 = step1.WorkshopAddress2, AgreementSalary = step1.AgreementSalary, ContractPeriod = step1.ContractPeriod, ShiftWork = step2.ShiftWork, RestTime = RestTime, RestTimeYekshanbeh = RestTimeYekshanbeh, RestTimeDoshanbeh = RestTimeDoshanbeh, RestTimeSeshanbeh = RestTimeSeshanbeh, RestTimeCheharshanbeh = RestTimeCheharshanbeh, RestTimePanjshanbeh = RestTimePanjshanbeh, RestTimeJomeh = RestTimeJomeh, SingleShift1 = SingleShift1, SingleShift2 = SingleShift2, SingleShift1Yekshanbeh = SingleShift1Yekshanbeh, SingleShift2Yekshanbeh = SingleShift2Yekshanbeh, SingleShift1Doshanbeh = SingleShift1Doshanbeh, SingleShift2Doshanbeh = SingleShift2Doshanbeh, SingleShift1Seshanbeh = SingleShift1Seshanbeh, SingleShift2Seshanbeh = SingleShift2Seshanbeh, SingleShift1Cheharshanbeh = SingleShift1Cheharshanbeh, SingleShift2Cheharshanbeh = SingleShift2Cheharshanbeh, SingleShift1Panjshanbeh = SingleShift1Panjshanbeh, SingleShift2Panjshanbeh = SingleShift2Panjshanbeh, SingleShift1Jomeh = SingleShift1Jomeh, SingleShift2Jomeh = SingleShift2Jomeh, TowShifts1 = TowShifts1, TowShifts2 = TowShifts2, TowShifts1Yekshanbeh = TowShifts1Yekshanbeh, TowShifts2Yekshanbeh = TowShifts2Yekshanbeh, TowShifts1Doshanbeh = TowShifts1Doshanbeh, TowShifts2Doshanbeh = TowShifts2Doshanbeh, TowShifts1Seshanbeh = TowShifts1Seshanbeh, TowShifts2Seshanbeh = TowShifts2Seshanbeh, TowShifts1Cheharshanbeh = TowShifts1Cheharshanbeh, TowShifts2Cheharshanbeh = TowShifts2Cheharshanbeh, TowShifts1Panjshanbeh = TowShifts1Panjshanbeh, TowShifts2Panjshanbeh = TowShifts2Panjshanbeh, TowShifts1Jomeh = TowShifts1Jomeh, TowShifts2Jomeh = TowShifts2Jomeh, Start1224 = Start1224, End1224 = End1224, Start1236 = Start1236, End1236 = End1236, Start2424 = Start2424, End2424 = End2424, Start2448 = Start2448, End2448 = End2448, NumberOfWorkingDays = workingDays, NumberOfFriday = step5.NumberOfFriday, TotalHoursesH = step5.TotalHoursesH == "0" ? "" : step5.TotalHoursesH, TotalHoursesM = step5.TotalHoursesM == "0" ? "" : step5.TotalHoursesM, OverTimeWorkH = step5.OverTimeWorkH == "0" ? "" : step5.OverTimeWorkH, OverTimeWorkM = step5.OverTimeWorkM == "0" ? "" : step5.OverTimeWorkM, OverNightWorkH = step5.OverNightWorkH == "0" ? "" : step5.OverNightWorkH, OverNightWorkM = step5.OverNightWorkM == "0" ? "" : step5.OverNightWorkM, }; var resss = _contractApplication.Create(createNew); } var res = op.Succcedded(); return new JsonResult(res); } else { op = op.Failed("هیچ قراردادی برای تمدید انتخاب نشده است"); return new JsonResult(op); } } public IActionResult OnPostCheck(ExtensionViewModel command) { var a = command.ConvertYear; var b = command.ConvertMonth; var op = new OperationResult(); if (command.ContractsId == null) { op = op.Failed("هیچ قراردادی برای تمدید انتخاب نشده است"); return new JsonResult(op); } else { op = op.Succcedded(); return new JsonResult(op); } } public IActionResult OnGetComputing() { return Partial("./Create"); } public IActionResult OnPostComputing(CreateContract command) { var result = _contractApplication.MandatoryHours(command); return new JsonResult(result); } public IActionResult OnGetEdit(long id) { var res = _contractApplication.GetDetails(id); var workshoplist = new List(); var wrk = _workshopApplication.GetDetails(res.WorkshopIds); var workshop = new WorkshopViewModel() { Id = wrk.Id, WorkshopName = wrk.WorkshopName, ArchiveCode = wrk.ArchiveCode, }; workshoplist.Add(workshop); var employeeLists = new List(); var employees = _employeeApplication.GetDetails(res.EmployeeId); var emp = new EmployeeViewModel() { Id = employees.Id, EmployeeFullName = employees.FName + " " + employees.LName, }; employeeLists.Add(emp); var workingHours = _workingHoursApplication.GetByContractId(id); res.ShiftWork = workingHours.ShiftWork; switch (workingHours.ShiftWork) { case "1": var checkShanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "0"); if (checkShanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "0"); res.shanbeh = true; res.SingleShift1 = item.Start1; res.SingleShift2 = item.End1; res.RestTime = item.RestTime; } var check1Shanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "1"); if (check1Shanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "1"); res.yekshanbeh = true; res.SingleShift1Yekshanbeh = item.Start1; res.SingleShift2Yekshanbeh = item.End1; res.RestTimeYekshanbeh = item.RestTime; } var check2Shanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "2"); if (check2Shanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "2"); res.doshanbeh = true; res.SingleShift1Doshanbeh = item.Start1; res.SingleShift2Doshanbeh = item.End1; res.RestTimeDoshanbeh = item.RestTime; } var check3Shanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "3"); if (check3Shanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "3"); res.seshanbeh = true; res.SingleShift1Seshanbeh = item.Start1; res.SingleShift2Seshanbeh = item.End1; res.RestTimeSeshanbeh = item.RestTime; } var check4Shanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "4"); if (check4Shanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "4"); res.cheharshanbeh = true; res.SingleShift1Cheharshanbeh = item.Start1; res.SingleShift2Cheharshanbeh = item.End1; res.RestTimeCheharshanbeh = item.RestTime; } var check5Shanbeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "5"); if (check5Shanbeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "5"); res.pangshanbeh = true; res.SingleShift1Panjshanbeh = item.Start1; res.SingleShift2Panjshanbeh = item.End1; res.RestTimePanjshanbeh = item.RestTime; } var jomeh = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "6"); if (jomeh) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "6"); res.jomeh = true; res.SingleShift1Jomeh = item.Start1; res.SingleShift2Jomeh = item.End1; res.RestTimeJomeh = item.RestTime; } break; case "2": var checkShanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "0"); if (checkShanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "0"); res.shanbeh = true; res.SingleShift1 = item.Start1; res.SingleShift2 = item.End1; res.TowShifts1 = item.Start2; res.TowShifts2 = item.End2; } var check1Shanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "1"); if (check1Shanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "1"); res.yekshanbeh = true; res.SingleShift1Yekshanbeh = item.Start1; res.SingleShift2Yekshanbeh = item.End1; res.TowShifts1Yekshanbeh = item.Start2; res.TowShifts2Yekshanbeh = item.End2; } var check2Shanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "2"); if (check2Shanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "2"); res.doshanbeh = true; res.SingleShift1Doshanbeh = item.Start1; res.SingleShift2Doshanbeh = item.End1; res.TowShifts1Doshanbeh = item.Start2; res.TowShifts2Doshanbeh = item.End2; } var check3Shanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "3"); if (check3Shanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "3"); res.seshanbeh = true; res.SingleShift1Seshanbeh = item.Start1; res.SingleShift2Seshanbeh = item.End1; res.TowShifts1Seshanbeh = item.Start2; res.TowShifts2Seshanbeh = item.End2; } var check4Shanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "4"); if (check4Shanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "4"); res.cheharshanbeh = true; res.SingleShift1Cheharshanbeh = item.Start1; res.SingleShift2Cheharshanbeh = item.End1; res.TowShifts1Cheharshanbeh = item.Start2; res.TowShifts2Cheharshanbeh = item.End2; } var check5Shanbeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "5"); if (check5Shanbeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "5"); res.pangshanbeh = true; res.SingleShift1Panjshanbeh = item.Start1; res.SingleShift2Panjshanbeh = item.End1; res.TowShifts1Panjshanbeh = item.Start2; res.TowShifts2Panjshanbeh = item.End2; } var jomeh2 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "6"); if (jomeh2) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "6"); res.jomeh = true; res.SingleShift1Jomeh = item.Start1; res.SingleShift2Jomeh = item.End1; res.TowShifts1Jomeh = item.Start2; res.TowShifts2Jomeh = item.End2; } break; case "3": var checkShanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "0"); if (checkShanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "0"); res.shanbeh = true; res.SingleShift1 = item.Start1; res.SingleShift2 = item.End1; res.TowShifts1 = item.Start2; res.TowShifts2 = item.End2; res.ThreeShift1 = item.Start3; res.ThreeShift2 = item.End3; } var check1Shanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "1"); if (check1Shanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "1"); res.yekshanbeh = true; res.SingleShift1Yekshanbeh = item.Start1; res.SingleShift2Yekshanbeh = item.End1; res.TowShifts1Yekshanbeh = item.Start2; res.TowShifts2Yekshanbeh = item.End2; res.ThreeShift1Yekshanbeh = item.Start3; res.ThreeShift2Yekshanbeh = item.End3; } var check2Shanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "2"); if (check2Shanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "2"); res.doshanbeh = true; res.SingleShift1Doshanbeh = item.Start1; res.SingleShift2Doshanbeh = item.End1; res.TowShifts1Doshanbeh = item.Start2; res.TowShifts2Doshanbeh = item.End2; res.ThreeShift1Doshanbeh = item.Start3; res.ThreeShift2Doshanbeh = item.End3; } var check3Shanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "3"); if (check3Shanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "3"); res.seshanbeh = true; res.SingleShift1Seshanbeh = item.Start1; res.SingleShift2Seshanbeh = item.End1; res.TowShifts1Seshanbeh = item.Start2; res.TowShifts2Seshanbeh = item.End2; res.ThreeShift1Seshanbeh = item.Start3; res.ThreeShift2Seshanbeh = item.End3; } var check4Shanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "4"); if (check4Shanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "4"); res.cheharshanbeh = true; res.SingleShift1Cheharshanbeh = item.Start1; res.SingleShift2Cheharshanbeh = item.End1; res.TowShifts1Cheharshanbeh = item.Start2; res.TowShifts2Cheharshanbeh = item.End2; res.ThreeShift1Cheharshanbeh = item.Start3; res.ThreeShift2Cheharshanbeh = item.End3; } var check5Shanbeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "5"); if (check5Shanbeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "5"); res.pangshanbeh = true; res.SingleShift1Panjshanbeh = item.Start1; res.SingleShift2Panjshanbeh = item.End1; res.TowShifts1Panjshanbeh = item.Start2; res.TowShifts2Panjshanbeh = item.End2; res.ThreeShift1Panjshanbeh = item.Start3; res.ThreeShift2Panjshanbeh = item.End3; } var jomeh3 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "6"); if (jomeh3) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "6"); res.jomeh = true; res.SingleShift1Jomeh = item.Start1; res.SingleShift2Jomeh = item.End1; res.TowShifts1Jomeh = item.Start2; res.TowShifts2Jomeh = item.End2; res.ThreeShift1Jomeh = item.Start3; res.ThreeShift2Jomeh = item.End3; } break; case "4": break; case "5"://12-24 var check1224 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "7"); if (check1224) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "7"); res.Start1224 = item.ComplexStart; res.End1224 = item.ComplexEnd; } break; case "6"://24-24 var check2424 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "7"); if (check2424) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "7"); res.Start2424 = item.ComplexStart; res.End2424 = item.ComplexEnd; } break; case "7"://12-36 var check1236 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "7"); if (check1236) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "7"); res.Start1236 = item.ComplexStart; res.End1236 = item.ComplexEnd; } break; case "8"://24-48 var check2448 = workingHours.WorkingHoursItemsList .Any(x => x.DayOfWork == "7"); if (check2448) { var item = workingHours.WorkingHoursItemsList.FirstOrDefault(x => x.DayOfWork == "7"); res.Start2448 = item.ComplexStart; res.End2448 = item.ComplexEnd; } break; } //res.WorkshopEmployerList = _contractRepository.GetWorkshopEmployer(); //res.EmployeeSelectList = new SelectList(_employeeApplication.GetEmployee(), "Id", "EmployeeFullName"); //res.Employees = _employeeApplication.GetEmployee(); //res.Workshops = _workshopApplication.GetWorkshopAccount(); //res.YearlySalaries = _yearlySalaryApplication.GetYearlySalary(); //res.Employers = _employerApplication.GetEmployers(); res.ConsumableItems = ""; res.AgreementSalary = ""; res.FamilyAllowance = ""; res.WorkshopNameSelectList = new SelectList(workshoplist, "Id", "WorkshopFullName"); res.WorkshopCodeSelectList = new SelectList(workshoplist, "Id", "ArchiveCode"); res.EmployeeSelectList = new SelectList(employeeLists, "Id", "EmployeeFullName"); return Partial("./Edit", res); } public JsonResult OnPostEdit(EditContract command) { if (ModelState.IsValid) { } var result = _contractApplication.Edit(command); return new JsonResult(result); } public IActionResult OnGetDetails(long id) { var res = _contractApplication.GetDetails(id); //res.WorkshopEmployerList = _contractRepository.GetWorkshopEmployer(); //res.Employers = _employerApplication.GetEmployers(); //res.Employees = _employeeApplication.GetEmployee(); //res.Workshops = _workshopApplication.GetWorkshop(); return Partial("Details", res); } public IActionResult OnGetPrintOne(long id) { var res = _checkoutApplication.PrintOne(id); //var res = _contractApplication.PrintAll(ids); return Partial("Details", res); } public IActionResult OnGetPrintLeave(long id) { var res = _checkoutApplication.LeavePrint(id); return Partial("PrintLeave", res); } public IActionResult OnGetDeActive(long id) { var result = _checkoutApplication.DeActive(id); if (result.IsSuccedded) return RedirectToPage("./Index"); Message = result.Message; return RedirectToPage("./Index"); } public IActionResult OnGetIsActive(long id) { var result = _checkoutApplication.Active(id); if (result.IsSuccedded) return RedirectToPage("./Index"); Message = result.Message; return RedirectToPage("./Index"); } public IActionResult OnGetSign(string Id) { var id = Convert.ToInt64(Id); var result = _checkoutApplication.Sign(id); if (result.IsSuccedded) { return new JsonResult(new { IsSuccedded = true, id = id, }); } else { return new JsonResult(new { IsSuccedded = false, id = id, }); } } public IActionResult OnGetUnSign(string Id) { var id = Convert.ToInt64(Id); var permissions = _authHelper.GetPermissions(); var checkHasPermission = permissions.Any(n => n.Equals(20222)); if (checkHasPermission) { var result = _checkoutApplication.UnSign(id); if (result.IsSuccedded) { return new JsonResult(new { IsSuccedded = true, id = id, }); } else { return new JsonResult(new { IsSuccedded = false, id = id, }); } } else { return new JsonResult(new { IsSuccedded = false, id = id, }); } } public IActionResult OnGetGroupDeActive(List ids) { foreach (var item in ids) { var result = _checkoutApplication.DeActive(item); } return RedirectToPage("./Index"); } public IActionResult OnGetGroupReActive(List ids) { foreach (var item in ids) { var result = _checkoutApplication.Active(item); } //if (result.IsSuccedded) // return RedirectToPage("./Index"); return RedirectToPage("./Index"); } public IActionResult OnGetGroupSign(List ids) { foreach (var item in ids) { var result = _checkoutApplication.Sign(item); } return RedirectToPage("./Index"); } public IActionResult OnGetGroupUnSign(List ids) { foreach (var item in ids) { var result = _checkoutApplication.UnSign(item); } return RedirectToPage("./Index"); } public IActionResult OnGetRemoveOneCheckout(long id) { var result = _checkoutApplication.RemoveCheckout(id); return RedirectToPage("./Index"); //if (result.IsSuccedded) //{ // return new JsonResult(new // { // IsSuccedded = true, // message = $"تصفیه حساب انتخاب شده حذف شد", // }); //} //else //{ // return new JsonResult(new // { // IsSuccedded = false, // message = $"خطایی رخ داده است", // }); //} } public IActionResult OnGetMultiRemoveCheckout(List ids) { foreach (var item in ids) { var result = _checkoutApplication.RemoveCheckout(item); } return RedirectToPage("./Index"); } public IActionResult OnGetCustomSet(long id) { var checkout = _checkoutApplication.GetDetails(id); var salaryAidDeduction = checkout.SalaryAidDeduction.ToMoney(); var rewardPay = checkout.RewardPay.ToMoneyNullable(); var command = new CheckoutViewModel() { Id = id, RewardPay = rewardPay, SalaryAidDeduction = salaryAidDeduction, Year = checkout.Year, Month = checkout.Month, EmployeeFullName = checkout.EmployeeFullName, }; return Partial("CustomSet", command); } public IActionResult OnPostCustomSet(CheckoutViewModel command) { var rewardPay = command.RewardPay.MoneyToDouble(); var salaryAidDeduction = command.SalaryAidDeduction.MoneyToDouble(); var checkout = _checkoutApplication.CustomSet(command.Id, rewardPay, salaryAidDeduction); return new JsonResult(checkout); } ///////////////Mandatory Compute////////////////////// #region MandatoryCompute public ComputingViewModel MandatoryHours(CreateWorkingHoursTemp command, long leavId) { #region entityes string Notholiday = String.Empty; string Holidays = string.Empty; double dayliFeeComplete = 0; string SingleShiftResult = String.Empty; string shift1Hourse = "0"; string shift1Minuts = "0"; string shift1HolidayHours = "0"; string shift1HolidayMinuts = "0"; string overMandatoryHours = "0"; string overMandatoryMinuts = "0"; string shiftOver22Hours = "0"; string shiftOver22Minuts = "0"; double ShiftPayResult = 0; string SumWorkeTime = string.Empty; var weeklyTime = new TimeSpan(); int FridayStartToEnd = 0; var overNight = false; var overNightTow = false; var singleOver24 = new TimeSpan(); var towOver24 = new TimeSpan(); var panjshanbehOver24 = new TimeSpan(); var panjshanbehOver24Tow = new TimeSpan(); var rest = new TimeSpan(); var Over22 = new TimeSpan(); var starTimeSingel1 = new DateTime(); var endTimeSingel2 = new DateTime(); var singleShiftOver24 = new DateTime(); var startTimeTowSh1 = new DateTime(); var endTimeTowSh2 = new DateTime(); var nightWork22 = new DateTime(); var nightWork6 = new DateTime(); var rotatingResultList = new List(); singleShiftOver24 = Convert.ToDateTime("00:00"); nightWork22 = Convert.ToDateTime("22:00"); nightWork6 = Convert.ToDateTime("06:00"); var rest0 = new TimeSpan(); var rest1 = new TimeSpan(); var rest2 = new TimeSpan(); var rest3 = new TimeSpan(); var rest4 = new TimeSpan(); var rest5 = new TimeSpan(); var rest6 = new TimeSpan(); var rest0w1 = new TimeSpan(); var rest1w1 = new TimeSpan(); var rest2w1 = new TimeSpan(); var rest3w1 = new TimeSpan(); var rest4w1 = new TimeSpan(); var rest5w1 = new TimeSpan(); var rest6w1 = new TimeSpan(); var rest0w2 = new TimeSpan(); var rest1w2 = new TimeSpan(); var rest2w2 = new TimeSpan(); var rest3w2 = new TimeSpan(); var rest4w2 = new TimeSpan(); var rest5w2 = new TimeSpan(); var rest6w2 = new TimeSpan(); var rest0w3 = new TimeSpan(); var rest1w3 = new TimeSpan(); var rest2w3 = new TimeSpan(); var rest3w3 = new TimeSpan(); var rest4w3 = new TimeSpan(); var rest5w3 = new TimeSpan(); var rest6w3 = new TimeSpan(); var rest0w4 = new TimeSpan(); var rest1w4 = new TimeSpan(); var rest2w4 = new TimeSpan(); var rest3w4 = new TimeSpan(); var rest4w4 = new TimeSpan(); var rest5w4 = new TimeSpan(); var rest6w4 = new TimeSpan(); var SumSingle = new TimeSpan(); var SumTow = new TimeSpan(); var SumSingleHourses = 0; var SumTowHourses = 0; var sumRest = new TimeSpan(); var SumComplexDays = 0; var OfficialHoliday = 0; var conStartGr = command.ContarctStart.ToGeorgianDateTime(); var conEndGr = command.ContractEnd.ToGeorgianDateTime(); #endregion #region SumRestTimesOneShift switch (command.ShiftWork) { case "1": case "2": command.RestTime = command.RestTime == "0" ? "00" : command.RestTime; command.RestTimeYekshanbeh = command.RestTimeYekshanbeh == "0" ? "00" : command.RestTimeYekshanbeh; command.RestTimeDoshanbeh = command.RestTimeDoshanbeh == "0" ? "00" : command.RestTimeDoshanbeh; command.RestTimeSeshanbeh = command.RestTimeSeshanbeh == "0" ? "00" : command.RestTimeSeshanbeh; command.RestTimeCheharshanbeh = command.RestTimeCheharshanbeh == "0" ? "00" : command.RestTimeCheharshanbeh; command.RestTimePanjshanbeh = command.RestTimePanjshanbeh == "0" ? "00" : command.RestTimePanjshanbeh; command.RestTimeJomeh = command.RestTimeJomeh == "0" ? "00" : command.RestTimeJomeh; command.RestTimeMin = command.RestTimeMin == "0" ? "00" : command.RestTimeMin; command.RestTimeYekshanbehMin = command.RestTimeYekshanbehMin == "0" ? "00" : command.RestTimeYekshanbehMin; command.RestTimeDoshanbehMin = command.RestTimeDoshanbehMin == "0" ? "00" : command.RestTimeDoshanbehMin; command.RestTimeSeshanbehMin = command.RestTimeSeshanbehMin == "0" ? "00" : command.RestTimeSeshanbehMin; command.RestTimeCheharshanbehMin = command.RestTimeCheharshanbehMin == "0" ? "00" : command.RestTimeCheharshanbehMin; command.RestTimePanjshanbehMin = command.RestTimePanjshanbehMin == "0" ? "00" : command.RestTimePanjshanbehMin; command.RestTimeJomehMin = command.RestTimeJomehMin == "0" ? "00" : command.RestTimeJomehMin; rest0 = TimeSpan.Parse($"{command.RestTime}:{command.RestTimeMin}"); sumRest = sumRest.Add(rest0); rest1 = TimeSpan.Parse($"{command.RestTimeYekshanbeh}:{command.RestTimeYekshanbehMin}"); sumRest = sumRest.Add(rest1); rest2 = TimeSpan.Parse($"{command.RestTimeDoshanbeh}:{command.RestTimeDoshanbehMin}"); sumRest = sumRest.Add(rest2); rest3 = TimeSpan.Parse($"{command.RestTimeSeshanbeh}:{command.RestTimeSeshanbehMin}"); sumRest = sumRest.Add(rest3); rest4 = TimeSpan.Parse($"{command.RestTimeCheharshanbeh}:{command.RestTimeCheharshanbehMin}"); sumRest = sumRest.Add(rest4); rest5 = TimeSpan.Parse($"{command.RestTimePanjshanbeh}:{command.RestTimePanjshanbehMin}"); sumRest = sumRest.Add(rest5); rest6 = TimeSpan.Parse($"{command.RestTimeJomeh}:{command.RestTimeJomehMin}"); sumRest = sumRest.Add(rest6); break; case "4": //week1 command.RestTimeShanbe1 = command.RestTimeShanbe1 == "0" ? "00" : command.RestTimeShanbe1; command.RestTimeShanbe1Min = command.RestTimeShanbe1Min == "0" ? "00" : command.RestTimeShanbe1Min; command.RestTimeYekShanbe1 = command.RestTimeYekShanbe1 == "0" ? "00" : command.RestTimeYekShanbe1; command.RestTimeYekShanbe1Min = command.RestTimeYekShanbe1Min == "0" ? "00" : command.RestTimeYekShanbe1Min; command.RestTimeDoShanbe1 = command.RestTimeDoShanbe1 == "0" ? "00" : command.RestTimeDoShanbe1; command.RestTimeDoShanbe1Min = command.RestTimeDoShanbe1Min == "0" ? "00" : command.RestTimeDoShanbe1Min; command.RestTimeSeShanbe1 = command.RestTimeSeShanbe1 == "0" ? "00" : command.RestTimeSeShanbe1; command.RestTimeSeShanbe1Min = command.RestTimeSeShanbe1Min == "0" ? "00" : command.RestTimeSeShanbe1Min; command.RestTimeCheharShanbe1 = command.RestTimeCheharShanbe1 == "0" ? "00" : command.RestTimeCheharShanbe1; command.RestTimeCheharShanbe1Min = command.RestTimeCheharShanbe1Min == "0" ? "00" : command.RestTimeCheharShanbe1Min; command.RestTimePanjShanbe1 = command.RestTimePanjShanbe1 == "0" ? "00" : command.RestTimePanjShanbe1; command.RestTimePanjShanbe1Min = command.RestTimePanjShanbe1Min == "0" ? "00" : command.RestTimePanjShanbe1Min; command.RestTimeJome1 = command.RestTimeJome1 == "0" ? "00" : command.RestTimeJome1; command.RestTimeJome1Min = command.RestTimeJome1Min == "0" ? "00" : command.RestTimeJome1Min; //week2 command.RestTimeShanbe2 = command.RestTimeShanbe2 == "0" ? "00" : command.RestTimeShanbe2; command.RestTimeShanbe2Min = command.RestTimeShanbe2Min == "0" ? "00" : command.RestTimeShanbe2Min; command.RestTimeYekShanbe2 = command.RestTimeYekShanbe2 == "0" ? "00" : command.RestTimeYekShanbe2; command.RestTimeYekShanbe2Min = command.RestTimeYekShanbe2Min == "0" ? "00" : command.RestTimeYekShanbe2Min; command.RestTimeDoShanbe2 = command.RestTimeDoShanbe2 == "0" ? "00" : command.RestTimeDoShanbe2; command.RestTimeDoShanbe2Min = command.RestTimeDoShanbe2Min == "0" ? "00" : command.RestTimeDoShanbe2Min; command.RestTimeSeShanbe2 = command.RestTimeSeShanbe2 == "0" ? "00" : command.RestTimeSeShanbe2; command.RestTimeSeShanbe2Min = command.RestTimeSeShanbe2Min == "0" ? "00" : command.RestTimeSeShanbe2Min; command.RestTimeCheharShanbe2 = command.RestTimeCheharShanbe2 == "0" ? "00" : command.RestTimeCheharShanbe2; command.RestTimeCheharShanbe2Min = command.RestTimeCheharShanbe2Min == "0" ? "00" : command.RestTimeCheharShanbe2Min; command.RestTimePanjShanbe2 = command.RestTimePanjShanbe2 == "0" ? "00" : command.RestTimePanjShanbe2; command.RestTimePanjShanbe2Min = command.RestTimePanjShanbe2Min == "0" ? "00" : command.RestTimePanjShanbe2Min; command.RestTimeJome2 = command.RestTimeJome2 == "0" ? "00" : command.RestTimeJome2; command.RestTimeJome2Min = command.RestTimeJome2Min == "0" ? "00" : command.RestTimeJome2Min; //week3 command.RestTimeShanbe3 = command.RestTimeShanbe3 == "0" ? "00" : command.RestTimeShanbe3; command.RestTimeShanbe3Min = command.RestTimeShanbe3Min == "0" ? "00" : command.RestTimeShanbe3Min; command.RestTimeYekShanbe3 = command.RestTimeYekShanbe3 == "0" ? "00" : command.RestTimeYekShanbe3; command.RestTimeYekShanbe3Min = command.RestTimeYekShanbe3Min == "0" ? "00" : command.RestTimeYekShanbe3Min; command.RestTimeDoShanbe3 = command.RestTimeDoShanbe3 == "0" ? "00" : command.RestTimeDoShanbe3; command.RestTimeDoShanbe3Min = command.RestTimeDoShanbe3Min == "0" ? "00" : command.RestTimeDoShanbe3Min; command.RestTimeSeShanbe3 = command.RestTimeSeShanbe3 == "0" ? "00" : command.RestTimeSeShanbe3; command.RestTimeSeShanbe3Min = command.RestTimeSeShanbe3Min == "0" ? "00" : command.RestTimeSeShanbe3Min; command.RestTimeCheharShanbe3 = command.RestTimeCheharShanbe3 == "0" ? "00" : command.RestTimeCheharShanbe3; command.RestTimeCheharShanbe3Min = command.RestTimeCheharShanbe3Min == "0" ? "00" : command.RestTimeCheharShanbe3Min; command.RestTimePanjShanbe3 = command.RestTimePanjShanbe3 == "0" ? "00" : command.RestTimePanjShanbe3; command.RestTimePanjShanbe3Min = command.RestTimePanjShanbe3Min == "0" ? "00" : command.RestTimePanjShanbe3Min; command.RestTimeJome3 = command.RestTimeJome3 == "0" ? "00" : command.RestTimeJome3; command.RestTimeJome3Min = command.RestTimeJome3Min == "0" ? "00" : command.RestTimeJome3Min; //week4 command.RestTimeShanbe4 = command.RestTimeShanbe4 == "0" ? "00" : command.RestTimeShanbe4; command.RestTimeShanbe4Min = command.RestTimeShanbe4Min == "0" ? "00" : command.RestTimeShanbe4Min; command.RestTimeYekShanbe4 = command.RestTimeYekShanbe4 == "0" ? "00" : command.RestTimeYekShanbe4; command.RestTimeYekShanbe4Min = command.RestTimeYekShanbe4Min == "0" ? "00" : command.RestTimeYekShanbe4Min; command.RestTimeDoShanbe4 = command.RestTimeDoShanbe4 == "0" ? "00" : command.RestTimeDoShanbe4; command.RestTimeDoShanbe4Min = command.RestTimeDoShanbe4Min == "0" ? "00" : command.RestTimeDoShanbe4Min; command.RestTimeSeShanbe4 = command.RestTimeSeShanbe4 == "0" ? "00" : command.RestTimeSeShanbe4; command.RestTimeSeShanbe4Min = command.RestTimeSeShanbe4Min == "0" ? "00" : command.RestTimeSeShanbe4Min; command.RestTimeCheharShanbe4 = command.RestTimeCheharShanbe4 == "0" ? "00" : command.RestTimeCheharShanbe4; command.RestTimeCheharShanbe4Min = command.RestTimeCheharShanbe4Min == "0" ? "00" : command.RestTimeCheharShanbe4Min; command.RestTimePanjShanbe4 = command.RestTimePanjShanbe4 == "0" ? "00" : command.RestTimePanjShanbe4; command.RestTimePanjShanbe4Min = command.RestTimePanjShanbe4Min == "0" ? "00" : command.RestTimePanjShanbe4Min; command.RestTimeJome4 = command.RestTimeJome4 == "0" ? "00" : command.RestTimeJome4; command.RestTimeJome4Min = command.RestTimeJome4Min == "0" ? "00" : command.RestTimeJome4Min; // sumrest week1 rest0w1 = TimeSpan.Parse($"{command.RestTimeShanbe1}:{command.RestTimeShanbe1Min}"); rest1w1 = TimeSpan.Parse($"{command.RestTimeYekShanbe1}:{command.RestTimeYekShanbe1Min}"); rest2w1 = TimeSpan.Parse($"{command.RestTimeDoShanbe1}:{command.RestTimeDoShanbe1Min}"); rest3w1 = TimeSpan.Parse($"{command.RestTimeSeShanbe1}:{command.RestTimeSeShanbe1Min}"); rest4w1 = TimeSpan.Parse($"{command.RestTimeCheharShanbe1}:{command.RestTimeCheharShanbe1Min}"); rest5w1 = TimeSpan.Parse($"{command.RestTimePanjShanbe1}:{command.RestTimePanjShanbe1Min}"); rest6w1 = TimeSpan.Parse($"{command.RestTimeJome1}:{command.RestTimeJome1Min}"); // sumrest week2 rest0w2 = TimeSpan.Parse($"{command.RestTimeShanbe2}:{command.RestTimeShanbe2Min}"); rest1w2 = TimeSpan.Parse($"{command.RestTimeYekShanbe2}:{command.RestTimeYekShanbe2Min}"); rest2w2 = TimeSpan.Parse($"{command.RestTimeDoShanbe2}:{command.RestTimeDoShanbe2Min}"); rest3w2 = TimeSpan.Parse($"{command.RestTimeSeShanbe2}:{command.RestTimeSeShanbe2Min}"); rest4w2 = TimeSpan.Parse($"{command.RestTimeCheharShanbe2}:{command.RestTimeCheharShanbe2Min}"); rest5w2 = TimeSpan.Parse($"{command.RestTimePanjShanbe2}:{command.RestTimePanjShanbe2Min}"); rest6w2 = TimeSpan.Parse($"{command.RestTimeJome2}:{command.RestTimeJome2Min}"); // sumrest week3 rest0w3 = TimeSpan.Parse($"{command.RestTimeShanbe3}:{command.RestTimeShanbe3Min}"); rest1w3 = TimeSpan.Parse($"{command.RestTimeYekShanbe3}:{command.RestTimeYekShanbe3Min}"); rest2w3 = TimeSpan.Parse($"{command.RestTimeDoShanbe3}:{command.RestTimeDoShanbe3Min}"); rest3w3 = TimeSpan.Parse($"{command.RestTimeSeShanbe3}:{command.RestTimeSeShanbe3Min}"); rest4w3 = TimeSpan.Parse($"{command.RestTimeCheharShanbe3}:{command.RestTimeCheharShanbe3Min}"); rest5w3 = TimeSpan.Parse($"{command.RestTimePanjShanbe3}:{command.RestTimePanjShanbe3Min}"); rest6w3 = TimeSpan.Parse($"{command.RestTimeJome3}:{command.RestTimeJome3Min}"); // sumrest week4 rest0w4 = TimeSpan.Parse($"{command.RestTimeShanbe4}:{command.RestTimeShanbe4Min}"); rest1w4 = TimeSpan.Parse($"{command.RestTimeYekShanbe4}:{command.RestTimeYekShanbe4Min}"); rest2w4 = TimeSpan.Parse($"{command.RestTimeDoShanbe4}:{command.RestTimeDoShanbe4Min}"); rest3w4 = TimeSpan.Parse($"{command.RestTimeSeShanbe4}:{command.RestTimeSeShanbe4Min}"); rest4w4 = TimeSpan.Parse($"{command.RestTimeCheharShanbe4}:{command.RestTimeCheharShanbe4Min}"); rest5w4 = TimeSpan.Parse($"{command.RestTimePanjShanbe4}:{command.RestTimePanjShanbe4Min}"); rest6w4 = TimeSpan.Parse($"{command.RestTimeJome4}:{command.RestTimeJome4Min}"); break; } #endregion #region SumSingleAndTowShifts var StartShanbehSingle = Convert.ToDateTime(command.SingleShift1); var EndShanbehSingle = Convert.ToDateTime(command.SingleShift2); if (StartShanbehSingle > EndShanbehSingle) EndShanbehSingle = EndShanbehSingle.AddDays(1); var ShanbehSingle = (EndShanbehSingle - StartShanbehSingle); SumSingle = SumSingle.Add(ShanbehSingle); var StartYekShanbehSingle = Convert.ToDateTime(command.SingleShift1Yekshanbeh); var EndYekShanbehSingle = Convert.ToDateTime(command.SingleShift2Yekshanbeh); if (StartYekShanbehSingle > EndYekShanbehSingle) EndYekShanbehSingle = EndYekShanbehSingle.AddDays(1); var YekShanbehSingle = (EndYekShanbehSingle - StartYekShanbehSingle); SumSingle = SumSingle.Add(YekShanbehSingle); var StartDoShanbehSingle = Convert.ToDateTime(command.SingleShift1Doshanbeh); var EndDoShanbehSingle = Convert.ToDateTime(command.SingleShift2Doshanbeh); if (StartDoShanbehSingle > EndDoShanbehSingle) EndDoShanbehSingle = EndDoShanbehSingle.AddDays(1); var DoShanbehSingle = (EndDoShanbehSingle - StartDoShanbehSingle); SumSingle = SumSingle.Add(DoShanbehSingle); var StartSehShanbehSingle = Convert.ToDateTime(command.SingleShift1Seshanbeh); var EndSehShanbehSingle = Convert.ToDateTime(command.SingleShift2Seshanbeh); if (StartSehShanbehSingle > EndSehShanbehSingle) EndSehShanbehSingle = EndSehShanbehSingle.AddDays(1); var SeShanbehSingle = (EndSehShanbehSingle - StartSehShanbehSingle); SumSingle = SumSingle.Add(SeShanbehSingle); var StartCheharShanbehSingle = Convert.ToDateTime(command.SingleShift1Cheharshanbeh); var EndCheharShanbehSingle = Convert.ToDateTime(command.SingleShift2Cheharshanbeh); if (StartCheharShanbehSingle > EndCheharShanbehSingle) EndCheharShanbehSingle = EndCheharShanbehSingle.AddDays(1); var CheharShanbehSingle = (EndCheharShanbehSingle - StartCheharShanbehSingle); SumSingle = SumSingle.Add(CheharShanbehSingle); var StartPanjShanbehSingle = Convert.ToDateTime(command.SingleShift1Panjshanbeh); var EndPanjShanbehSingle = Convert.ToDateTime(command.SingleShift2Panjshanbeh); if (StartPanjShanbehSingle > EndPanjShanbehSingle) EndPanjShanbehSingle = EndPanjShanbehSingle.AddDays(1); var PanjShanbehSingle = (EndPanjShanbehSingle - StartPanjShanbehSingle); SumSingle = SumSingle.Add(PanjShanbehSingle); var StartJomehSingle = Convert.ToDateTime(command.SingleShift1Jomeh); var EndjomehSingle = Convert.ToDateTime(command.SingleShift2Jomeh); if (StartJomehSingle > EndjomehSingle) EndjomehSingle = EndjomehSingle.AddDays(1); var JomehSingle = (EndjomehSingle - StartJomehSingle); SumSingle = SumSingle.Add(JomehSingle); if (command.ShiftWork == "1") { SumSingle = SumSingle.Subtract(sumRest); } //SumSingleHourses = (int)SumSingle.TotalHours; var StartShanbehTow = Convert.ToDateTime(command.TowShifts1); var EndShanbehTow = Convert.ToDateTime(command.TowShifts2); if (StartShanbehTow > EndShanbehTow) EndShanbehTow = EndShanbehTow.AddDays(1); var ShanbehTow = (EndShanbehTow - StartShanbehTow); SumTow = SumTow.Add(ShanbehTow); var StartYekShanbehTow = Convert.ToDateTime(command.TowShifts1Yekshanbeh); var EndYekShanbehTow = Convert.ToDateTime(command.TowShifts2Yekshanbeh); if (StartYekShanbehTow > EndYekShanbehTow) EndYekShanbehTow = EndYekShanbehTow.AddDays(1); var YekShanbehTow = (EndYekShanbehTow - StartYekShanbehTow); SumTow = SumTow.Add(YekShanbehTow); var StartDoShanbehTow = Convert.ToDateTime(command.TowShifts1Doshanbeh); var EndDoShanbehTow = Convert.ToDateTime(command.TowShifts2Doshanbeh); if (StartDoShanbehTow > EndDoShanbehTow) EndDoShanbehTow = EndDoShanbehTow.AddDays(1); var DoShanbehTow = (EndDoShanbehTow - StartDoShanbehTow); SumTow = SumTow.Add(DoShanbehTow); var StartSehShanbehTow = Convert.ToDateTime(command.TowShifts1Seshanbeh); var EndSehShanbehTow = Convert.ToDateTime(command.TowShifts2Seshanbeh); if (StartSehShanbehTow > EndSehShanbehTow) EndSehShanbehTow = EndSehShanbehTow.AddDays(1); var SeShanbehTow = (EndSehShanbehTow - StartSehShanbehTow); SumTow = SumTow.Add(SeShanbehTow); var StartCheharShanbehTow = Convert.ToDateTime(command.TowShifts1Cheharshanbeh); var EndCheharShanbehTow = Convert.ToDateTime(command.TowShifts2Cheharshanbeh); if (StartCheharShanbehTow > EndCheharShanbehTow) EndCheharShanbehTow = EndCheharShanbehTow.AddDays(1); var CheharShanbehTow = (EndCheharShanbehTow - StartCheharShanbehTow); SumTow = SumTow.Add(CheharShanbehTow); var StartPanjShanbehTow = Convert.ToDateTime(command.TowShifts1Panjshanbeh); var EndPanjShanbehTow = Convert.ToDateTime(command.TowShifts2Panjshanbeh); if (StartPanjShanbehTow > EndPanjShanbehTow) EndPanjShanbehTow = EndPanjShanbehTow.AddDays(1); var PanjShanbehTow = (EndPanjShanbehTow - StartPanjShanbehTow); SumTow = SumTow.Add(PanjShanbehTow); var StartJomehTow = Convert.ToDateTime(command.TowShifts1Jomeh); var EndjomehTow = Convert.ToDateTime(command.TowShifts2Jomeh); if (StartJomehTow > EndjomehTow) EndjomehTow = EndjomehTow.AddDays(1); var jomehTow = (EndjomehTow - StartJomehTow); SumTow = SumTow.Add(jomehTow); //SumTowHourses = (int)SumTow.TotalHours; #endregion #region ComplexSumWorkTime if (command.ShiftWork == "5") { SumWorkeTime = "24 - 12"; } else if (command.ShiftWork == "6") { SumWorkeTime = "24 - 24"; } else if (command.ShiftWork == "7") { SumWorkeTime = "36 - 12"; } else if (command.ShiftWork == "8") { SumWorkeTime = "48 - 24"; } #endregion #region OneAndTowShiftsCompute var dailyFix = TimeSpan.Parse("07:20"); var notHolidays = new TimeSpan(); var HolidaysAndNot = new TimeSpan(); var jomeh = new TimeSpan(); var sdate = command.ContarctStart.ToEnglishNumber(); var edate = command.ContractEnd.ToEnglishNumber(); var syear = Convert.ToInt32(sdate.Substring(0, 4)); var smonth = Convert.ToInt32(sdate.Substring(5, 2)); var sday = Convert.ToInt32(sdate.Substring(8, 2)); var eyear = Convert.ToInt32(edate.Substring(0, 4)); var emonth = Convert.ToInt32(edate.Substring(5, 2)); var eday = Convert.ToInt32(edate.Substring(8, 2)); var d1 = new PersianDateTime(syear, smonth, sday); var d2 = new PersianDateTime(eyear, emonth, eday); int i = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; var holidayList = _holidayItemRepository.GetHolidayItem(sdate.Substring(0, 4)); var leavInfo = leavId > 0 ? _leaveApplication.GetDetails(leavId) : null; #region shiftWork 1&2 if (command.ShiftWork == "1" || command.ShiftWork == "2") { for (var da = d1; da <= d2; da.AddDays(1)) { var currentDay = da.ToGregorianDateTime(); if (da.DayOfWeek == "شنبه" && command.shanbeh == true && leavId == 0) { var checkHoliday = _holidayItemRepository.GetHoliday(currentDay); if (checkHoliday == false) { i += 1; if (command.ShiftWork == "1") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest0); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); //Over22Compute = Over22Compute.Subtract(rest); Over22 = Over22.Add(Over22Compute); } else if (command.ShiftWork == "2") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); } } } else if (da.DayOfWeek == "شنبه" && command.shanbeh == true && leavId > 0) { if (currentDay >= leavInfo.StartLeaveGr && currentDay <= leavInfo.EndLeaveGr) { if (leavInfo.LeaveType == "استحقاقی" && leavInfo.PaidLeaveType == "ساعتی") { var leaavHoursesInt = Convert.ToInt32(leavInfo.LeaveHourses); var leavHourses = new TimeSpan(0, leaavHoursesInt,0,0); i += 1; if (command.ShiftWork == "1") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest0); //کم کردن مرخصی ساعتی از ساعت کارکرد آن روز singleSpan1 = singleSpan1.Subtract(leavHourses); notHolidays = notHolidays.Add(singleSpan1); //کم کردن ساعت مرخصی از پایان ساعات کاری endTimeSingel2 = endTimeSingel2.AddHours(-leaavHoursesInt); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); } else if (command.ShiftWork == "2") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); } } } } if (da.DayOfWeek == "یکشنبه" && command.yekshanbeh == true && leavId == 0) { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (checkHoliday == false) { i1 += 1; if (command.ShiftWork == "1") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest1); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); //Over22Compute = Over22Compute.Subtract(rest); Over22 = Over22.Add(Over22Compute); } else if (command.ShiftWork == "2") { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Yekshanbeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Yekshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); } } } else if (da.DayOfWeek == "یکشنبه" && command.yekshanbeh == true && leavId > 0) { } if (da.DayOfWeek == "دوشنبه" && command.doshanbeh == true && leavId == 0) { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (checkHoliday == false) { i2 += 1; switch (command.ShiftWork) { case "1": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest2); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); break; case "2": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Doshanbeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Doshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); break; } } } else if (da.DayOfWeek == "دوشنبه" && command.doshanbeh == true && leavId > 0) { } if (da.DayOfWeek == "سه شنبه" && command.seshanbeh == true && leavId == 0) { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (checkHoliday == false) { i3 += 1; switch (command.ShiftWork) { case "1": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest3); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); break; case "2": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Seshanbeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Seshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); break; } } } else if (da.DayOfWeek == "سه شنبه" && command.seshanbeh == true && leavId > 0) { } if (da.DayOfWeek == "چهارشنبه" && command.cheharshanbeh == true && leavId == 0) { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (checkHoliday == false) { i4 += 1; switch (command.ShiftWork) { case "1": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest4); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); break; case "2": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Cheharshanbeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Cheharshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); break; } } } else if (da.DayOfWeek == "چهارشنبه" && command.cheharshanbeh == true && leavId > 0) { } if (da.DayOfWeek == "پنج شنبه" && command.pangshanbeh == true && leavId == 0) { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (checkHoliday == false) { i5 += 1; switch (command.ShiftWork) { case "1": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; singleOver24 = (endTimeSingel2 - singleShiftOver24); endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest5); singleSpan1 = singleSpan1.Subtract(singleOver24); jomeh = jomeh.Add(singleOver24); notHolidays = notHolidays.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); break; case "2": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Panjshanbeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Panjshanbeh); var singleOver24Tow = new TimeSpan(); if (starTimeSingel1 > endTimeSingel2) { overNight = true; singleOver24 = (endTimeSingel2 - singleShiftOver24); endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; singleOver24Tow = (endTimeTowSh2 - singleShiftOver24); endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); singleSpanTow1 = singleSpanTow1.Subtract(singleOver24); singleSpanTow2 = singleSpanTow2.Subtract(singleOver24Tow); jomeh = jomeh.Add(singleOver24); jomeh = jomeh.Add(singleOver24Tow); notHolidays = notHolidays.Add(singleSpanTow1); notHolidays = notHolidays.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); break; } } } else if (da.DayOfWeek == "پنج شنبه" && command.pangshanbeh == true && leavId > 0) { } if (da.DayOfWeek == "جمعه" && command.jomeh == true && leavId == 0) { i6 += 1; switch (command.ShiftWork) { case "1": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jomeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jomeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } var singleSpan1 = (endTimeSingel2 - starTimeSingel1); singleSpan1 = singleSpan1.Subtract(rest6); jomeh = jomeh.Add(singleSpan1); var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22Compute); break; case "2": starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jomeh); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jomeh); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jomeh); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jomeh); if (starTimeSingel1 > endTimeSingel2) { overNight = true; endTimeSingel2 = endTimeSingel2.AddDays(1); } if (startTimeTowSh1 > endTimeTowSh2) { overNight = true; endTimeTowSh2 = endTimeTowSh2.AddDays(1); } var singleSpanTow1 = (endTimeSingel2 - starTimeSingel1); var singleSpanTow2 = (endTimeTowSh2 - startTimeTowSh1); jomeh = jomeh.Add(singleSpanTow1); jomeh = jomeh.Add(singleSpanTow2); var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2); Over22 = Over22.Add(Over22ComputeTow1); var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2); Over22 = Over22.Add(Over22ComputeTow2); break; } } else if (da.DayOfWeek == "جمعه" && command.jomeh == true && leavId > 0) { } else if (command.jomeh == false) { i6 = 0; } if (da.DayOfWeek == "جمعه") { FridayStartToEnd += 1; } } } #endregion #endregion #region Rotating else if (command.ShiftWork == "4") { for (var da = d1; da <= d2; da.AddDays(1)) { var FirstDayOfMonth = new PersianDateTime(da.Year, da.Month, 1); int w1 = 0; int w2 = 0; int w3 = 0; int w4 = 0; int w5 = 0; int w6 = 0; switch (FirstDayOfMonth.DayOfWeek) { case "شنبه": w1 = 7; w2 = 14; w3 = 28; w4 = 31; break; case "یکشنبه": w1 = 6; w2 = 13; w3 = 20; w4 = 27; w5 = 31; break; case "دوشنبه": w1 = 5; w2 = 12; w3 = 19; w4 = 26; w5 = 31; break; case "سه شنبه": w1 = 4; w2 = 11; w3 = 18; w4 = 25; w5 = 31; break; case "چهارشنبه": w1 = 3; w2 = 10; w3 = 17; w4 = 24; w5 = 31; break; case "پنج شنبه": w1 = 2; w2 = 9; w3 = 16; w4 = 23; w5 = 30; w6 = 31; break; case "جمعه": w1 = 1; w2 = 8; w3 = 15; w4 = 22; w5 = 29; w6 = 31; break; } switch (da.DayOfWeek) { case "شنبه": if (da.Day <= w1) { if (command.Shanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w1) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); sumRest = sumRest.Add(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w1) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.Shanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w2) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); sumRest = sumRest.Add(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w2) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.Shanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w3) endTimeSingel2 = endTimeSingel2.Subtract(rest0w3); sumRest = sumRest.Add(rest0w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3); // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w3) endTimeSingel2 = endTimeSingel2.Subtract(rest0w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.Shanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4); // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w4) endTimeSingel2 = endTimeSingel2.Subtract(rest0w4); sumRest = sumRest.Add(rest0w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4); // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w3) endTimeSingel2 = endTimeSingel2.Subtract(rest0w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.Shanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w1) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); sumRest = sumRest.Add(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w1) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.Shanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w2) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); sumRest = sumRest.Add(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2); // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest0w2) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.Shanbe2 && leavId > 0) { } } break; case "یکشنبه": if (da.Day <= w1) { if (command.YekShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1); // if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w1) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); sumRest = sumRest.Add(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w1) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.YekShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w2) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); sumRest = sumRest.Add(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w2) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.YekShanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3); // if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w3) endTimeSingel2 = endTimeSingel2.Subtract(rest1w3); sumRest = sumRest.Add(rest1w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w3) endTimeSingel2 = endTimeSingel2.Subtract(rest1w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.YekShanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w4) endTimeSingel2 = endTimeSingel2.Subtract(rest1w4); sumRest = sumRest.Add(rest1w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w4) endTimeSingel2 = endTimeSingel2.Subtract(rest1w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.YekShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w1) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); sumRest = sumRest.Add(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w1) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.YekShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w2) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); sumRest = sumRest.Add(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest1w2) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.YekShanbe2 && leavId > 0) { } } break; case "دوشنبه": if (da.Day <= w1) { if (command.DoShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w1) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); sumRest = sumRest.Add(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w1) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.DoShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2); // if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w2) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); sumRest = sumRest.Add(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w2) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.DoShanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w3) endTimeSingel2 = endTimeSingel2.Subtract(rest2w3); sumRest = sumRest.Add(rest2w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w3) endTimeSingel2 = endTimeSingel2.Subtract(rest2w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.DoShanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w4) endTimeSingel2 = endTimeSingel2.Subtract(rest2w4); sumRest = sumRest.Add(rest2w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4); // if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w4) endTimeSingel2 = endTimeSingel2.Subtract(rest2w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.DoShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w1) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); sumRest = sumRest.Add(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w1) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.DoShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w2) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); sumRest = sumRest.Add(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest2w2) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.DoShanbe2 && leavId > 0) { } } break; case "سه شنبه": if (da.Day <= w1) { if (command.SeShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w1) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); sumRest = sumRest.Add(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w1) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.SeShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w2) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); sumRest = sumRest.Add(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w2) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.SeShanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w3) endTimeSingel2 = endTimeSingel2.Subtract(rest3w3); sumRest = sumRest.Add(rest3w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w3) endTimeSingel2 = endTimeSingel2.Subtract(rest3w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.SeShanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w4) endTimeSingel2 = endTimeSingel2.Subtract(rest3w4); sumRest = sumRest.Add(rest3w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w4) endTimeSingel2 = endTimeSingel2.Subtract(rest3w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.SeShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w1) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); sumRest = sumRest.Add(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w1) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.SeShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w2) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); sumRest = sumRest.Add(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest3w2) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.SeShanbe2 && leavId > 0) { } } break; case "چهارشنبه": if (da.Day <= w1) { if (command.CheharShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w1) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); sumRest = sumRest.Add(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w1) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.CheharShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w2) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); sumRest = sumRest.Add(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w2) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.CheharShanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w3) endTimeSingel2 = endTimeSingel2.Subtract(rest4w3); sumRest = sumRest.Add(rest4w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3); // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w3) endTimeSingel2 = endTimeSingel2.Subtract(rest4w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.CheharShanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w4) endTimeSingel2 = endTimeSingel2.Subtract(rest4w4); sumRest = sumRest.Add(rest4w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4); // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w4) endTimeSingel2 = endTimeSingel2.Subtract(rest4w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.CheharShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w1) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); sumRest = sumRest.Add(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1); // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w1) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.CheharShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w2) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); sumRest = sumRest.Add(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest4w2) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.CheharShanbe2 && leavId > 0) { } } break; case "پنج شنبه": if (da.Day <= w1) { if (command.PanjShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w1) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); sumRest = sumRest.Add(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1); // if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w1) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.PanjShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2); // if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w2) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); sumRest = sumRest.Add(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w2) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.PanjShanbe3 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w3) endTimeSingel2 = endTimeSingel2.Subtract(rest5w3); sumRest = sumRest.Add(rest5w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w3) endTimeSingel2 = endTimeSingel2.Subtract(rest5w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.PanjShanbe4 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w4) endTimeSingel2 = endTimeSingel2.Subtract(rest5w4); sumRest = sumRest.Add(rest5w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w4) endTimeSingel2 = endTimeSingel2.Subtract(rest5w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.PanjShanbe1 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w1) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); sumRest = sumRest.Add(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w1) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.PanjShanbe2 && leavId == 0) { var test = $"{da}"; var checkHoliday = holidayList.Any(x => x == test); if (checkHoliday == false) { i += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w2) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); sumRest = sumRest.Add(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else { starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2); //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2)) if ((endTimeSingel2 - starTimeSingel1) >= rest5w2) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } else if (command.PanjShanbe2 && leavId > 0) { } } break; case "جمعه": if (da.Day <= w1) { if (command.Jome1 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome1); //if (string.IsNullOrWhiteSpace(command.TowShifts1Jome1)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w1) endTimeSingel2 = endTimeSingel2.Subtract(rest6w1); sumRest = sumRest.Add(rest6w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome1 && leavId > 0) { } } else if (da.Day > w1 && da.Day <= w2) { if (command.Jome2 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome2); //if (string.IsNullOrWhiteSpace(command.TowShifts1Jome2)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w2) endTimeSingel2 = endTimeSingel2.Subtract(rest6w2); sumRest = sumRest.Add(rest6w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome2 && leavId > 0) { } } else if (da.Day > w2 && da.Day <= w3) { if (command.Jome3 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome3); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome3); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome3); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome3); //if (string.IsNullOrWhiteSpace(command.TowShifts1Jome3)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w3) endTimeSingel2 = endTimeSingel2.Subtract(rest6w3); sumRest = sumRest.Add(rest6w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome3 && leavId > 0) { } } else if (da.Day > w3 && da.Day <= w4) { if (command.Jome4 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome4); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome4); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome4); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome4); //if (string.IsNullOrWhiteSpace(command.TowShifts1Jome4)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w4) endTimeSingel2 = endTimeSingel2.Subtract(rest6w4); sumRest = sumRest.Add(rest6w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome4 && leavId > 0) { } } else if (da.Day > w4 && da.Day <= w5) { if (command.Jome1 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome1); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome1); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome1); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome1); // if (string.IsNullOrWhiteSpace(command.TowShifts1Jome1)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w1) endTimeSingel2 = endTimeSingel2.Subtract(rest6w1); sumRest = sumRest.Add(rest6w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome1 && leavId > 0) { } } else if (da.Day > w5 && da.Day <= w6) { if (command.Jome2 && leavId == 0) { var test = $"{da}"; i6 += 1; SumComplexDays += 1; starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome2); endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome2); startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome2); endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome2); //if (string.IsNullOrWhiteSpace(command.TowShifts1Jome2)) if ((endTimeSingel2 - starTimeSingel1) >= rest6w2) endTimeSingel2 = endTimeSingel2.Subtract(rest6w2); sumRest = sumRest.Add(rest6w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); } else if (command.Jome2 && leavId > 0) { } } break; } if (da.DayOfWeek != "جمعه") { var testDay = $"{da}"; var IsHoliday = holidayList.Any(x => x == testDay); if (IsHoliday) { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } rotatingResultList = rotatingResultList.Where(x => x.IsMorningShift == true || x.IsEveningShift == true || x.IsNightShift == true).ToList(); } #endregion #region ComplexCompute else if (command.ShiftWork == "5")//12-24 { var now = DateTime.Now; var sdate2 = command.ContarctStart.ToEnglishNumber(); var edate2 = command.ContractEnd.ToEnglishNumber(); var syear2 = Convert.ToInt32(sdate.Substring(0, 4)); var smonth2 = Convert.ToInt32(sdate.Substring(5, 2)); var sday2 = Convert.ToInt32(sdate.Substring(8, 2)); var eyear2 = Convert.ToInt32(edate.Substring(0, 4)); var emonth2 = Convert.ToInt32(edate.Substring(5, 2)); var eday2 = Convert.ToInt32(edate.Substring(8, 2)); var d1b = new PersianDateTime(syear2, smonth2, sday2); var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59); var start = Convert.ToDateTime(command.StartComplex); var end = Convert.ToDateTime(command.EndComplex); var sh = start.Hour; var sm = start.Minute; var eh = end.Hour; var em = end.Minute; var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm); var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em); end = endDateTime.ToGregorianDateTime(); for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(36)) { var test = $"{da2}"; if (da2.DayOfWeek == "جمعه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpanTow1 = new TimeSpan(); i6 += 1; if (start.Date < end.Date) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); singleSpanTow1 = (end - start); singleSpanTow1 = singleSpanTow1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleOver24); jomeh = jomeh.Add(singleSpanTow1); i += 1; } else { singleSpanTow1 = (end - start); jomeh = jomeh.Add(singleSpanTow1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var endCal = (end - start); var NextStart = start.AddHours(36); end = NextStart.Add(endCal); } else if (da2.DayOfWeek == "پنج شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = new TimeSpan(); i5 += 1; if (start.Date < end.Date && start.Day != end.Day) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); jomeh = jomeh.Add(singleOver24); i6 += 1; singleSpan1 = (end - start); singleSpan1 = singleSpan1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleSpan1); } else { singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var endCal = (end - start); var NextStart = start.AddHours(36); end = NextStart.Add(endCal); } else if (da2.DayOfWeek == "شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "یکشنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i1 += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "دوشنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i2 += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "سه شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i3 += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "چهارشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i4 += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (daa.DayOfWeek != "جمعه") { if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "6")//24-24 { var now = DateTime.Now; var sdate2 = command.ContarctStart.ToEnglishNumber(); var edate2 = command.ContractEnd.ToEnglishNumber(); var syear2 = Convert.ToInt32(sdate.Substring(0, 4)); var smonth2 = Convert.ToInt32(sdate.Substring(5, 2)); var sday2 = Convert.ToInt32(sdate.Substring(8, 2)); var eyear2 = Convert.ToInt32(edate.Substring(0, 4)); var emonth2 = Convert.ToInt32(edate.Substring(5, 2)); var eday2 = Convert.ToInt32(edate.Substring(8, 2)); var d1b = new PersianDateTime(syear2, smonth2, sday2); var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59); var start = Convert.ToDateTime(command.StartComplex); var end = Convert.ToDateTime(command.EndComplex); var sh = start.Hour; var sm = start.Minute; var eh = end.Hour; var em = end.Minute; var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm); var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em); //if (start > end) //{ // endDateTime.AddDays(1); //} endDateTime.AddDays(1); end = endDateTime.ToGregorianDateTime(); for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48)) { var test = $"{da2}"; if (da2.DayOfWeek == "جمعه") { start = da2.ToGregorianDateTime(); var singleSpanTow1 = new TimeSpan(); var WorkHours = (end - start); i6 += 1; if (start.Date < end.Date) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); singleSpanTow1 = (end - start); singleSpanTow1 = singleSpanTow1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleOver24); jomeh = jomeh.Add(singleSpanTow1); i += 1; } else { singleSpanTow1 = (end - start); jomeh = jomeh.Add(singleSpanTow1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var NextStart = start.AddHours(48); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "پنج شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = new TimeSpan(); var WorkHours = (end - start); i5 += 1; if (start.Date < end.Date && start.Day != end.Day) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); jomeh = jomeh.Add(singleOver24); i6 += 1; singleSpan1 = (end - start); singleSpan1 = singleSpan1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleSpan1); } else { singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var NextStart = start.AddHours(48); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "یکشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i1 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "دوشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i2 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "سه شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i3 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "چهارشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i4 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (daa.DayOfWeek != "جمعه") { if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "7")//12-36 { var now = DateTime.Now; var sdate2 = command.ContarctStart.ToEnglishNumber(); var edate2 = command.ContractEnd.ToEnglishNumber(); var syear2 = Convert.ToInt32(sdate.Substring(0, 4)); var smonth2 = Convert.ToInt32(sdate.Substring(5, 2)); var sday2 = Convert.ToInt32(sdate.Substring(8, 2)); var eyear2 = Convert.ToInt32(edate.Substring(0, 4)); var emonth2 = Convert.ToInt32(edate.Substring(5, 2)); var eday2 = Convert.ToInt32(edate.Substring(8, 2)); var d1b = new PersianDateTime(syear2, smonth2, sday2); var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59); var start = Convert.ToDateTime(command.StartComplex); var end = Convert.ToDateTime(command.EndComplex); var sh = start.Hour; var sm = start.Minute; var eh = end.Hour; var em = end.Minute; var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm); var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em); //if (start > end) //{ // endDateTime.AddDays(1); //} //endDateTime.AddDays(1); end = endDateTime.ToGregorianDateTime(); for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48)) { var test = $"{da2}"; if (da2.DayOfWeek == "جمعه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpanTow1 = new TimeSpan(); i6 += 1; if (start.Date < end.Date) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); singleSpanTow1 = (end - start); singleSpanTow1 = singleSpanTow1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleOver24); jomeh = jomeh.Add(singleSpanTow1); i += 1; } else { singleSpanTow1 = (end - start); jomeh = jomeh.Add(singleSpanTow1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var WorkHours = (end - start); var NextStart = start.AddHours(48); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "پنج شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = new TimeSpan(); i5 += 1; if (start.Date < end.Date && start.Day != end.Day) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); jomeh = jomeh.Add(singleOver24); i6 += 1; singleSpan1 = (end - start); singleSpan1 = singleSpan1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleSpan1); } else { singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var WorkHours = (end - start); var NextStart = start.AddHours(48); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "یکشنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i1 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "دوشنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i2 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "سه شنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i3 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "چهارشنبه") { start = da2.ToGregorianDateTime(); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i4 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (daa.DayOfWeek != "جمعه") { if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "8")//24-48 { var now = DateTime.Now; var sdate2 = command.ContarctStart.ToEnglishNumber(); var edate2 = command.ContractEnd.ToEnglishNumber(); var syear2 = Convert.ToInt32(sdate.Substring(0, 4)); var smonth2 = Convert.ToInt32(sdate.Substring(5, 2)); var sday2 = Convert.ToInt32(sdate.Substring(8, 2)); var eyear2 = Convert.ToInt32(edate.Substring(0, 4)); var emonth2 = Convert.ToInt32(edate.Substring(5, 2)); var eday2 = Convert.ToInt32(edate.Substring(8, 2)); var d1b = new PersianDateTime(syear2, smonth2, sday2); var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59); var start = Convert.ToDateTime(command.StartComplex); var end = Convert.ToDateTime(command.EndComplex); var sh = start.Hour; var sm = start.Minute; var eh = end.Hour; var em = end.Minute; var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm); var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em); //if (start > end) //{ // endDateTime.AddDays(1); //} end = endDateTime.ToGregorianDateTime(); end = end.AddDays(1); for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(72)) { var test = $"{da2}"; if (da2.DayOfWeek == "جمعه") { start = da2.ToGregorianDateTime(); var singleSpanTow1 = new TimeSpan(); i6 += 1; if (start.Date < end.Date) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); singleSpanTow1 = (end - start); singleSpanTow1 = singleSpanTow1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleOver24); jomeh = jomeh.Add(singleSpanTow1); i += 1; } else { singleSpanTow1 = (end - start); jomeh = jomeh.Add(singleSpanTow1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var WorkHours = (end - start); var NextStart = start.AddHours(72); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "پنج شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = new TimeSpan(); i5 += 1; if (start.Date < end.Date && start.Day != end.Day) { overNight = true; var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0); singleOver24 = (end - over24); jomeh = jomeh.Add(singleOver24); i6 += 1; singleSpan1 = (end - start); singleSpan1 = singleSpan1.Subtract(singleOver24); notHolidays = notHolidays.Add(singleSpan1); } else { singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); } var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); var WorkHours = (end - start); var NextStart = start.AddHours(72); end = NextStart.Add(WorkHours); } else if (da2.DayOfWeek == "شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "یکشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i1 += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "دوشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i2 += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "سه شنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i3 += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } else if (da2.DayOfWeek == "چهارشنبه") { start = da2.ToGregorianDateTime(); var singleSpan1 = (end - start); notHolidays = notHolidays.Add(singleSpan1); var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute, end.Second); var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2); rotatingCheck.RotatingDate = test; rotatingResultList.Add(rotatingCheck); //var Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(rotatingCheck.NightWorkSpan); i4 += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHoliday(test); if (daa.DayOfWeek != "جمعه") { if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } #endregion #region DayCounterAndDailyFix var sumDays = i + i1 + i2 + i3 + i4 + i5 + i6; var holidaysCount = i6; var notHolidaysCount = i + i1 + i2 + i3 + i4 + i5; // ساعات موظفی var ComplexFix = dailyFix.Multiply(SumComplexDays); dailyFix = dailyFix.Multiply(sumDays); Notholiday = notHolidaysCount.ToString(); Holidays = holidaysCount.ToString(); var searchModel = new LeftWorkSearchModel() { EmployeeId = command.EmployeeId, WorkshopId = command.WorkshopId, }; var leftworkList = _leftWorkApplication.search(searchModel); var lastLeftWork = leftworkList.FirstOrDefault(); var conStart = conStartGr; var EndOfM = Convert.ToInt32(command.ContractEnd.Substring(8, 2)); var conEnd = conEndGr; if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < conEnd) { conEnd = lastLeftWork.LeftWorkDateGr.AddDays(-1); } else { if (EndOfM == 31) { conEnd = conEnd.AddDays(-1); } } var AllDaysCount = (conEnd - conStart).TotalDays + 1; var endContract = command.ContractEnd.ToGeorgianDateTime(); var allDays = (endContract - conStart).TotalDays + 1; var jomeh2 = new TimeSpan(); var notHolidays2 = new TimeSpan(); var Mandatory = new TimeSpan(); notHolidays = notHolidays.Add(jomeh); var workingDaysH = (int)notHolidays.TotalHours; var workingDaysM = notHolidays.TotalMinutes % 60; //ساعات کاری پرسنل با احتساب تعطیلات رسمی HolidaysAndNot = HolidaysAndNot.Add(notHolidays); var totalHolidaysAndNotH = (int)HolidaysAndNot.TotalHours; var totalHolidaysAndNotM = HolidaysAndNot.TotalMinutes % 60; notHolidays2 = notHolidays2.Add(jomeh2); var SumNotHolidays = notHolidays.Add(notHolidays2); var SumNotHolidaysHours = (int)SumNotHolidays.TotalHours; var SumNotHolidaysMinuts = SumNotHolidays.Minutes % 60; var SumHolidays = jomeh.Add(jomeh2); var SumHolidaysHours = (int)SumHolidays.TotalHours; var SumHolidaysMinuts = SumHolidays.Minutes % 60; var totalHoursShift1 = notHolidays; var totalHoursShift1And2 = SumNotHolidays; #endregion #region DailyFeeCompute var basic = "0"; var GetWorkStartDate = command.GetWorkDateHide.ToEnglishNumber(); var GetWorkEndDate = command.ContractEnd.ToEnglishNumber(); var styear = Convert.ToInt32(GetWorkStartDate.Substring(0, 4)); var stmonth = Convert.ToInt32(GetWorkStartDate.Substring(5, 2)); var stday = Convert.ToInt32(GetWorkStartDate.Substring(8, 2)); var edyear = Convert.ToInt32(GetWorkEndDate.Substring(0, 4)); var edmonth = Convert.ToInt32(GetWorkEndDate.Substring(5, 2)); var edday = Convert.ToInt32(GetWorkEndDate.Substring(8, 2)); var startDate = command.GetWorkDateHide.ToGeorgianDateTime(); var endDate = command.ContractEnd.ToGeorgianDateTime(); var dayliFee = "خطای تاریخ"; if (styear >= 1370) { if (leftworkList == null) leftworkList = new List(); var ContractStart = command.ContarctStart.ToGeorgianDateTime(); var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, ContractStart, endDate, command.EmployeeId, command.WorkshopId, leftworkList); dayliFee = dayliFeeResult.DayliFee; dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble(); basic = dayliFeeResult.Basic; } #endregion #region ConsumableItemsAndHousingAndFamily var ConsumableItems = _yearlySalaryRepository.ConsumableItems(endDate); var HousingAllowance = _yearlySalaryRepository.HousingAllowance(endDate); var familyAllowance = _yearlySalaryRepository.FamilyAllowance(command.EmployeeId, endDate); var MarriedAllowance = _yearlySalaryRepository.MarriedAllowance(endDate, command.EmployeeId); #endregion #region Fix44Compute var dailyFixx = TimeSpan.Parse("07:20"); var fix44 = dailyFixx.Multiply(6); var divideNum = TimeSpan.Parse("06:00"); // حق تاهل string MarriedAllowanceStr = MarriedAllowance > 0 ? MarriedAllowance.ToMoney() : "0"; if (command.ShiftWork == "1") { if (SumSingle < fix44) { // مجموع ساعت کار هفته تقسیم بر 6 ساعت var dividTo6Days = SumSingle.Divide(divideNum); var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var DailyFeeNumberType = dayliFee.MoneyToDouble(); //مزد روزانه تقسیم بر 7/33 var dailyStep1 = DailyFeeNumberType / 7.33; //نتیجه ضربدر جواب مجموع ساعت تقسیم بر 6 روز هفته var dailyStep2 = dailyStep1 * dividTo6Days; dayliFee = dailyStep2.ToMoney(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep2 = HousingStep1 / 7.33; var HousingStep3 = HousingStep2 * dividTo6Days; var HousingStep4 = HousingStep3 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep2 = consumableItemsStep1 / 7.33; var consumableItemsStep3 = consumableItemsStep2 * dividTo6Days; var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep2 = MarriedStep1 / 7.33; var MarriedStep3 = MarriedStep2 * dividTo6Days; var MarriedStep4 = MarriedStep3 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep2 = familyAllowanceStep1 / 7.33; var familyAllowanceStep3 = familyAllowanceStep2 * dividTo6Days; var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } var sumSingleRound = Math.Round(SumSingle.TotalHours, 2); weeklyTime = SumSingle; SumWorkeTime = $"{sumSingleRound}"; } else { var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep4 = HousingStep1 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep4 = MarriedStep1 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } SumWorkeTime = $"{44}"; } } else if (command.ShiftWork == "2") { var totalShift = SumSingle + SumTow; if (totalShift < fix44) { var dividTo6Days = totalShift.Divide(divideNum); var DailyFeeNumberType = dayliFee.MoneyToDouble(); var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var step1 = DailyFeeNumberType / 7.33; var step2 = step1 * dividTo6Days; dayliFee = step2.ToMoney(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep2 = HousingStep1 / 7.33; var HousingStep3 = HousingStep2 * dividTo6Days; var HousingStep4 = HousingStep3 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep2 = consumableItemsStep1 / 7.33; var consumableItemsStep3 = consumableItemsStep2 * dividTo6Days; var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep2 = MarriedStep1 / 7.33; var MarriedStep3 = MarriedStep2 * dividTo6Days; var MarriedStep4 = MarriedStep3 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep2 = familyAllowanceStep1 / 7.33; var familyAllowanceStep3 = familyAllowanceStep2 * dividTo6Days; var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } var totalShiftRound = Math.Round(totalShift.TotalHours, 2); SumWorkeTime = $"{totalShiftRound}"; weeklyTime = totalShift; } else { var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep4 = HousingStep1 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep4 = MarriedStep1 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } SumWorkeTime = $"{44}"; } } else if (command.ShiftWork == "4") { var TotalContractDays = (conEndGr - conStartGr).TotalDays + 1; var totalWeek = (int)(TotalContractDays / 6); var TotalDaysNoFriday = TotalContractDays - FridayStartToEnd; var FixHourses = TotalDaysNoFriday * 7.33; var totalHourses = (HolidaysAndNot.TotalMinutes) / 60; //var dividedForOneDay = totalHourses / notHolidaysCount; if (totalHourses < FixHourses) { var DailyFeeNumberType = dayliFee.MoneyToDouble(); var dailyStep1 = DailyFeeNumberType / 7.33; var hoursesPerDay = totalHourses / TotalDaysNoFriday; var result = hoursesPerDay * dailyStep1; dayliFee = result.ToMoney(); var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep2 = HousingStep1 / 7.33; var HousingStep3 = HousingStep2 * hoursesPerDay; var HousingStep4 = HousingStep3 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep2 = consumableItemsStep1 / 7.33; var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay; var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep2 = MarriedStep1 / 7.33; var MarriedStep3 = MarriedStep2 * hoursesPerDay; var MarriedStep4 = MarriedStep3 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep2 = familyAllowanceStep1 / 7.33; var familyAllowanceStep3 = familyAllowanceStep2 * hoursesPerDay; var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } if (totalWeek > 1) { double weekAvrage = 0; if (totalHourses < 44.00) { weekAvrage = (totalHourses * 6) / TotalContractDays; } else { weekAvrage = (totalHourses * 6) / TotalDaysNoFriday; } //var oneday = weekAvrage * 6; var totalShiftRound = Math.Round(weekAvrage, 2); SumWorkeTime = $"{totalShiftRound}"; } else if (totalWeek <= 1 && TotalDaysNoFriday <= 6) { var totalShiftRound = Math.Round(totalHourses, 2); SumWorkeTime = $"{totalShiftRound}"; } else if (totalWeek <= 1 && TotalDaysNoFriday > 6) { var perDyeWorked = totalHourses / TotalDaysNoFriday; var weekAvrage = perDyeWorked * 6; var totalShiftRound = Math.Round(weekAvrage, 2); SumWorkeTime = $"{totalShiftRound}"; } weeklyTime = totalHoursShift1; } else { var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep4 = HousingStep1 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep4 = MarriedStep1 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } SumWorkeTime = $"{44}"; } } else { var TotalContractDays = (conEndGr - conStartGr).TotalDays + 1; var TotalDaysNoFriday = TotalContractDays - FridayStartToEnd; var FixHourses = TotalDaysNoFriday * 7.33; var totalHourses = (totalHoursShift1.TotalMinutes) / 60; if (totalHourses < FixHourses) { var dailyFeeNumberType = dayliFee.MoneyToDouble(); var dailyStep1 = dailyFeeNumberType / 7.33; var hoursesPerDay = totalHourses / TotalDaysNoFriday; var result = hoursesPerDay * dailyStep1; dayliFee = result.ToMoney(); var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep2 = HousingStep1 / 7.33; var HousingStep3 = HousingStep2 * hoursesPerDay; var HousingStep4 = HousingStep3 * AllDaysCount; HousingAllowance = HousingStep4.ToMoney(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var consumableItemsStep1 = ConsumableItemsNumberType / 30; var consumableItemsStep2 = consumableItemsStep1 / 7.33; var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay; var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount; ConsumableItems = consumableItemsStep4.ToMoney(); //حق تاهل if (MarriedAllowance > 0) { var MarriedStep1 = MarriedAllowance / 30; var MarriedStep2 = MarriedStep1 / 7.33; var MarriedStep3 = MarriedStep2 * hoursesPerDay; var MarriedStep4 = MarriedStep3 * AllDaysCount; MarriedAllowanceStr = MarriedStep4.ToMoney(); } if (familyAllowance != "0") { var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep2 = familyAllowanceStep1 / 7.33; var familyAllowanceStep3 = familyAllowanceStep2 * hoursesPerDay; var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } } } #endregion #region MandatoryTimeCompute if (command.ShiftWork == "1" && totalHoursShift1 > dailyFix) { Mandatory = totalHoursShift1.Subtract(dailyFix); } if (command.ShiftWork == "2" && totalHoursShift1And2 > dailyFix) { Mandatory = totalHoursShift1And2.Subtract(dailyFix); } if (command.ShiftWork == "4" && totalHoursShift1 > dailyFix) { Mandatory = totalHoursShift1.Subtract(dailyFix); } if ((command.ShiftWork == "5" && totalHoursShift1 > ComplexFix) || (command.ShiftWork == "6" && totalHoursShift1 > ComplexFix) || (command.ShiftWork == "7" && totalHoursShift1 > ComplexFix) || (command.ShiftWork == "8" && totalHoursShift1 > ComplexFix)) { Mandatory = totalHoursShift1.Subtract(ComplexFix); } var mandatoryHours = (int)Mandatory.TotalHours; var mandatoryminuts = Mandatory.Minutes % 60; //Over22 = Over22.Multiply(sumDays); var Over22hours = (int)Over22.TotalHours; var Over22Minuts = Over22.TotalMinutes % 60; if (command.ShiftWork == "1" || command.ShiftWork == "4") { shift1Hourse = workingDaysH.ToString(); shift1Minuts = workingDaysM.ToString(); if (totalHoursShift1 > dailyFix) { overMandatoryHours = mandatoryHours.ToString(); overMandatoryMinuts = mandatoryminuts.ToString(); //line3 = "مجموع ساعات اضافه کاری " + " : " + $" {mandatoryHours} " + "ساعت و " + $" {mandatoryminuts} " + "دقیقه"; } shiftOver22Hours = Over22hours.ToString(); shiftOver22Minuts = Over22Minuts.ToString(); } if (command.ShiftWork == "2") { shift1Hourse = SumNotHolidaysHours.ToString(); shift1Minuts = SumNotHolidaysMinuts.ToString(); if (totalHoursShift1And2 > dailyFix) { overMandatoryHours = mandatoryHours.ToString(); overMandatoryMinuts = mandatoryminuts.ToString(); } shiftOver22Hours = Over22hours.ToString(); shiftOver22Minuts = Over22Minuts.ToString(); } if (command.ShiftWork == "5" || command.ShiftWork == "6" || command.ShiftWork == "7" || command.ShiftWork == "8") { shift1Hourse = workingDaysH.ToString(); shift1Minuts = workingDaysM.ToString(); // اضافه کاری if (totalHoursShift1 > ComplexFix) { overMandatoryHours = mandatoryHours.ToString(); overMandatoryMinuts = mandatoryminuts.ToString(); //line3 = "مجموع ساعات اضافه کاری " + " : " + $" {mandatoryHours} " + "ساعت و " + $" {mandatoryminuts} " + "دقیقه"; } shiftOver22Hours = Over22hours.ToString(); shiftOver22Minuts = Over22Minuts.ToString(); } var ComplexNotHolidays = string.Empty; if (command.ShiftWork == "5" || command.ShiftWork == "6" || command.ShiftWork == "7" || command.ShiftWork == "8") { ComplexNotHolidays = Notholiday; Notholiday = "0"; } #endregion #region RtatingStatus var moriningCount = rotatingResultList.Count(x => x.IsMorningShift == true); var eveningCount = rotatingResultList.Count(x => x.IsEveningShift == true); var nightCount = rotatingResultList.Count(x => x.IsNightShift == true); var RotatingfaName = new List(); if (moriningCount > 0) RotatingfaName.Add("صبح"); if (eveningCount > 0) RotatingfaName.Add("عصر"); if (nightCount > 0) RotatingfaName.Add("شب"); var rotatingFaResult = ""; if (RotatingfaName.Count > 1) { shiftOver22Hours = "0"; shiftOver22Minuts = "0"; for (int rotateNumber = 0; rotateNumber < RotatingfaName.Count; rotateNumber++) { if (rotateNumber == 0) rotatingFaResult = $"{RotatingfaName[rotateNumber]}"; if (rotateNumber == 1) rotatingFaResult += $" و {RotatingfaName[rotateNumber]}"; if (rotateNumber == 2) rotatingFaResult += $" و {RotatingfaName[rotateNumber]}"; } } else if (RotatingfaName.Count <= 1) { rotatingFaResult = "نوبت کاری ندارد"; } #endregion #region ShiftPayPercent if (rotatingFaResult != "نوبت کاری ندارد" || rotatingFaResult != "") { var TotalDays = (command.ContractEndGr - command.ContractStartGr).TotalDays + 1; var DailyFeeNumberType = dayliFee.MoneyToDouble(); if (rotatingFaResult == "صبح و عصر") { var shiftPyaPercent = (DailyFeeNumberType * 10) / 100; ShiftPayResult = shiftPyaPercent * TotalDays; } else if (rotatingFaResult == "صبح و عصر و شب") { var shiftPyaPercent = (DailyFeeNumberType * 15) / 100; ShiftPayResult = shiftPyaPercent * TotalDays; } else if (rotatingFaResult == "صبح و شب" || rotatingFaResult == "عصر و شب") { var shiftPyaPercent = (DailyFeeNumberType * 22.5) / 100; ShiftPayResult = shiftPyaPercent * TotalDays; } } #endregion #region sendResult rotatingResultList = rotatingResultList.Take(28).ToList(); var ress = new ComputingViewModel() { NumberOfWorkingDays = Notholiday == "0" ? ComplexNotHolidays : Notholiday, NumberOfFriday = Holidays, TotalHoursesH = shift1Hourse, TotalHoursesM = shift1Minuts, E = shift1HolidayHours, F = shift1HolidayMinuts, Interference = InterferenceMessage, OverTimeWorkH = overMandatoryHours, OverTimeWorkM = overMandatoryMinuts, OverNightWorkH = shiftOver22Hours, OverNightWorkM = shiftOver22Minuts, ComplexNumberOfWorkingDays = ComplexNotHolidays, SalaryCompute = dayliFee, SumTime44 = SumWorkeTime, ConsumableItems = ConsumableItems, HousingAllowance = HousingAllowance, FamilyAllowance = familyAllowance, OfficialHoliday = OfficialHoliday, weeklyTime = weeklyTime, RotatingResultList = rotatingResultList, RotatingStatus = rotatingFaResult, ShiftPay = ShiftPayResult, Basic = basic, FridayStartToEnd = FridayStartToEnd, TotalHolidayAndNotH = totalHolidaysAndNotH.ToString(), TotalHolidayAndNotM = totalHolidaysAndNotM.ToString(), DayliFeeComplete = dayliFeeComplete, MarriedAllowance = MarriedAllowanceStr, }; return ress; #endregion } #endregion #region MandatoryDependingMetods public RotatingShiftViewModel RotatingShiftCheck(DateTime? singleShift1, DateTime? singleShift2, DateTime? towShift1, DateTime? towShift2) { #region Entityes var nullDateTme = new DateTime(0001, 01, 01); var midNight24 = Convert.ToDateTime("00:00"); TimeSpan morningWorkingTime1 = new TimeSpan(); TimeSpan eveningWorkingTime1 = new TimeSpan(); TimeSpan nightWorkingTime1 = new TimeSpan(); TimeSpan morningWorkingTime2 = new TimeSpan(); TimeSpan eveningWorkingTime2 = new TimeSpan(); TimeSpan nightWorkingTime2 = new TimeSpan(); var morningStart = Convert.ToDateTime("06:00"); var morningEnd = Convert.ToDateTime("14:00"); var eveningStart = Convert.ToDateTime("14:00"); var eveningEnd = Convert.ToDateTime("22:00"); var nightStart = Convert.ToDateTime("22:00"); var nightEnd = Convert.ToDateTime("6:00"); var nightEndNextday = nightEnd.AddDays(1); var morningEndNextday = morningEnd.AddDays(1); #endregion #region shift1 if (singleShift1 != nullDateTme && singleShift2 != nullDateTme) { if (singleShift2 < singleShift1) { singleShift2 = singleShift2?.AddDays(1); } if (singleShift1 == singleShift2) // example 22<---22 { nightWorkingTime1 = new TimeSpan(8, 0, 0); morningWorkingTime1 = new TimeSpan(8, 0, 0); eveningWorkingTime1 = new TimeSpan(8, 0, 0); } else { #region morning enter 14 <- 6 if (singleShift1 >= morningStart // 14<---<6 && singleShift1 < morningEnd && singleShift2 > morningStart && singleShift2 <= morningEnd) { morningWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1); } else if (singleShift1 >= morningStart // <---14---6 && singleShift1 < morningEnd && singleShift2 > morningStart && singleShift2 <= nightEndNextday) { if (singleShift2 <= eveningEnd) // 22<---14---6 { morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1); eveningWorkingTime1 = (TimeSpan)(singleShift2 - eveningStart); } else if (singleShift2 > eveningEnd) // 6<---22---14---6 { morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1); eveningWorkingTime1 = new TimeSpan(8, 0, 0); nightWorkingTime1 = (TimeSpan)(singleShift2 - eveningEnd); } } else if (singleShift1 >= morningStart // 14<---<6 && singleShift1 < morningEnd && singleShift2 > morningStart && singleShift2 > nightEndNextday) { eveningWorkingTime1 = new TimeSpan(8, 0, 0); nightWorkingTime1 = new TimeSpan(8, 0, 0); morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1); morningWorkingTime1 += (TimeSpan)(singleShift2 - nightEndNextday); } #endregion #region evening enter 22 <- 14 if (singleShift1 >= eveningStart // 22<---<14 && singleShift1 < eveningEnd && singleShift2 > eveningStart && singleShift2 <= eveningEnd) { eveningWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1); } else if (singleShift1 >= eveningStart // <14---6---22---14 && singleShift1 < eveningEnd && singleShift2 > eveningStart && singleShift2 <= morningEndNextday) { if (singleShift2 <= nightEndNextday) // 6<---22---14 { eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1); nightWorkingTime1 = (TimeSpan)(singleShift2 - eveningEnd); } else if (singleShift2 > nightEndNextday) // 14<---6---22---14 { eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1); nightWorkingTime1 = new TimeSpan(8, 0, 0); morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEndNextday); } } else if (singleShift1 >= eveningStart // <22---14---6---22---14 && singleShift1 < eveningEnd && singleShift2 > eveningStart && singleShift2 > morningEndNextday) { nightWorkingTime1 = new TimeSpan(8, 0, 0); morningWorkingTime1 = new TimeSpan(8, 0, 0); eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1); eveningWorkingTime1 += (TimeSpan)(singleShift2 - morningEndNextday); } #endregion #region night enter 6 <- 22 if ((singleShift1 >= nightStart // 6<---<22 && singleShift1 < nightEndNextday && singleShift2 > nightStart && singleShift2 <= nightEndNextday) || (singleShift1 >= midNight24 && singleShift1 < nightEnd && singleShift2 > midNight24 && singleShift2 <= nightEnd)) { nightWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1); } else if (singleShift1 >= nightStart // <---6---22 && singleShift1 < nightEndNextday && singleShift2 > nightStart && singleShift2 > nightEndNextday) { if (singleShift2 <= morningEndNextday) // 14<---6---22 { nightWorkingTime1 = (TimeSpan)(nightEndNextday - singleShift1); morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEndNextday); } else if (singleShift2 > morningEndNextday) // 22<---14---6---22 { nightWorkingTime1 = (TimeSpan)(nightEndNextday - singleShift1); morningWorkingTime1 = new TimeSpan(8, 0, 0); eveningWorkingTime1 = (TimeSpan)(singleShift2 - morningEndNextday); } } else if ((singleShift1 >= midNight24 // <---6---00 && singleShift1 < nightEnd && singleShift2 > midNight24 && singleShift2 > nightEnd)) { if (singleShift2 <= morningEnd) // 14<---6---00 { nightWorkingTime1 = (TimeSpan)(nightEnd - singleShift1); morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEnd); } else if (singleShift2 > morningEnd && singleShift1 >= midNight24) // 22<---14---6--00 { nightWorkingTime1 = (TimeSpan)(nightEnd - singleShift1); morningWorkingTime1 = new TimeSpan(8, 0, 0); eveningWorkingTime1 = (TimeSpan)(singleShift2 - morningEnd); } } #endregion } } #endregion #region shift2 if (towShift1 != nullDateTme && towShift2 != nullDateTme) { if (towShift2 < towShift1) { towShift2 = towShift2?.AddDays(1); } if (towShift1 == towShift2) // example 22<---22 { nightWorkingTime2 = new TimeSpan(8, 0, 0); morningWorkingTime2 = new TimeSpan(8, 0, 0); eveningWorkingTime2 = new TimeSpan(8, 0, 0); } else { #region morning enter 14 <- 6 if (towShift1 >= morningStart // 14<---<6 && towShift1 < morningEnd && towShift2 > morningStart && towShift2 <= morningEnd) { morningWorkingTime2 = (TimeSpan)(towShift2 - towShift1); } else if (towShift1 >= morningStart // <---14---6 && towShift1 < morningEnd && towShift2 > morningStart && towShift2 <= nightEndNextday) { if (towShift2 <= eveningEnd) // 22<---14---6 { morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1); eveningWorkingTime2 = (TimeSpan)(towShift2 - eveningStart); } else if (towShift2 > eveningEnd) // 6<---22---14---6 { morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1); eveningWorkingTime2 = new TimeSpan(8, 0, 0); nightWorkingTime2 = (TimeSpan)(towShift2 - eveningEnd); } } else if (towShift1 >= morningStart // 14<---<6 && towShift1 < morningEnd && towShift2 > morningStart && towShift2 > nightEndNextday) { eveningWorkingTime2 = new TimeSpan(8, 0, 0); nightWorkingTime2 = new TimeSpan(8, 0, 0); morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1); morningWorkingTime2 += (TimeSpan)(towShift2 - nightEndNextday); } #endregion #region evening enter 22 <- 14 if (towShift1 >= eveningStart // 22<---<14 && towShift1 < eveningEnd && towShift2 > eveningStart && towShift2 <= eveningEnd) { eveningWorkingTime2 = (TimeSpan)(towShift2 - towShift1); } else if (towShift1 >= eveningStart // <14---6---22---14 && towShift1 < eveningEnd && towShift2 > eveningStart && towShift2 <= morningEndNextday) { if (towShift2 <= nightEndNextday) // 6<---22---14 { eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1); nightWorkingTime2 = (TimeSpan)(towShift2 - eveningEnd); } else if (towShift2 > nightEndNextday) // 14<---6---22---14 { eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1); nightWorkingTime2 = new TimeSpan(8, 0, 0); morningWorkingTime2 = (TimeSpan)(towShift2 - nightEndNextday); } } else if (towShift1 >= eveningStart // <22---14---6---22---14 && towShift1 < eveningEnd && towShift2 > eveningStart && towShift2 > morningEndNextday) { nightWorkingTime2 = new TimeSpan(8, 0, 0); morningWorkingTime2 = new TimeSpan(8, 0, 0); eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1); eveningWorkingTime2 += (TimeSpan)(towShift2 - morningEndNextday); } #endregion #region night enter 6 <- 22 if ((towShift1 >= nightStart // 6<---<22 && towShift1 < nightEndNextday && towShift2 > nightStart && towShift2 <= nightEndNextday) || (towShift1 >= midNight24 && towShift1 < nightEnd && towShift2 > midNight24 && towShift2 <= nightEnd)) { nightWorkingTime2 = (TimeSpan)(towShift2 - towShift1); } else if (towShift1 >= nightStart // <---6---22 && towShift1 < nightEndNextday && towShift2 > nightStart && towShift2 > nightEndNextday) { if (towShift2 <= morningEndNextday) // 14<---6---22 { nightWorkingTime2 = (TimeSpan)(nightEndNextday - towShift1); morningWorkingTime2 = (TimeSpan)(towShift2 - nightEndNextday); } else if (towShift2 > morningEndNextday) // 22<---14---6---22 { nightWorkingTime2 = (TimeSpan)(nightEndNextday - towShift1); morningWorkingTime2 = new TimeSpan(8, 0, 0); eveningWorkingTime2 = (TimeSpan)(towShift2 - morningEndNextday); } } else if ((towShift1 >= midNight24 // <---6---00 && towShift1 < nightEnd && towShift2 > midNight24 && towShift2 > nightEnd)) { if (towShift2 <= morningEnd) // 14<---6---00 { nightWorkingTime2 = (TimeSpan)(nightEnd - towShift1); morningWorkingTime2 = (TimeSpan)(towShift2 - nightEnd); } else if (towShift2 > morningEnd && towShift1 >= midNight24) // 22<---14---6--00 { nightWorkingTime2 = (TimeSpan)(nightEnd - towShift1); morningWorkingTime2 = new TimeSpan(8, 0, 0); eveningWorkingTime2 = (TimeSpan)(towShift2 - morningEnd); } } #endregion } } #endregion #region FinalResult var result = new RotatingShiftViewModel(); result.MorningWorkSpan = morningWorkingTime1.Add(morningWorkingTime2); result.EveningWorkSpan = eveningWorkingTime1.Add(eveningWorkingTime2); result.NightWorkSpan = nightWorkingTime1.Add(nightWorkingTime2); var nullWorkspan = new TimeSpan(0, 0, 0); var totalTime = result.TotalWorkingTime.Add(result.MorningWorkSpan); totalTime = totalTime.Add(result.EveningWorkSpan); totalTime = totalTime.Add(result.NightWorkSpan); result.TotalWorkingTime = totalTime; var morningH = (int)result.MorningWorkSpan.TotalHours; var morningM = result.MorningWorkSpan.Minutes % 60; var morningMS = "00"; if (morningM < 10 && morningM > 0) morningMS = $"0{morningM}"; if (morningM > 10) morningMS = $"{morningM}"; result.MorningString = $"0{morningH}:{morningMS}"; var eveningH = (int)result.EveningWorkSpan.TotalHours; var eveningM = result.EveningWorkSpan.Minutes % 60; var eveningMS = "00"; if (eveningM < 10 && eveningM > 0) eveningMS = $"0{eveningM}"; if (eveningM > 10) eveningMS = $"{eveningM}"; result.EveningString = $"0{eveningH}:{eveningMS}"; var nightH = (int)result.NightWorkSpan.TotalHours; var nightM = result.NightWorkSpan.Minutes % 60; var nightMS = "00"; if (nightM < 10 && nightM > 0) nightMS = $"0{nightM}"; if (nightM > 10) nightMS = $"{nightM}"; result.NightString = $"0{nightH}:{nightMS}"; if (result.MorningWorkSpan > result.EveningWorkSpan || result.MorningWorkSpan == result.EveningWorkSpan)// if morning bigerThan evening or equal { if (result.MorningWorkSpan != nullWorkspan) { result.IsMorningShift = true; result.IsNightShift = false; result.IsEveningShift = false; result.RotatingShiftStatus = "صبح"; } if (result.MorningWorkSpan < result.NightWorkSpan || result.MorningWorkSpan == result.NightWorkSpan)// if night bigerThan morning or equal { if (result.NightWorkSpan != nullWorkspan) { result.IsMorningShift = false; result.IsNightShift = true; result.IsEveningShift = false; result.RotatingShiftStatus = "شب"; } } } else if (result.MorningWorkSpan < result.EveningWorkSpan)// if evening bigerThan morning { if (result.EveningWorkSpan != nullWorkspan) { result.IsEveningShift = true; result.IsMorningShift = false; result.IsNightShift = false; result.RotatingShiftStatus = "عصر"; } if (result.EveningWorkSpan < result.NightWorkSpan || result.EveningWorkSpan == result.NightWorkSpan)// if night bigerThan evening or equal { if (result.NightWorkSpan != nullWorkspan) { result.IsMorningShift = false; result.IsEveningShift = false; result.IsNightShift = true; result.RotatingShiftStatus = "شب"; } } } #endregion return result; } public TimeSpan Over22Check(DateTime date1, DateTime date2) { TimeSpan Over22 = new TimeSpan(); DateTime singleShiftOver24 = Convert.ToDateTime("00:00"); DateTime nightWork22 = Convert.ToDateTime("22:00"); DateTime nightWork6 = Convert.ToDateTime("06:00"); DateTime starTimeSingel1 = date1; DateTime endTimeSingel2 = date2; bool check = false; if ((endTimeSingel2 > nightWork22 || endTimeSingel2 == singleShiftOver24) && (starTimeSingel1 < nightWork22 && starTimeSingel1 > nightWork6)) { var nightWork6NextDay = new DateTime(); if (endTimeSingel2.Date > starTimeSingel1.Date) { // 15:00 - 00:00 nightWork6NextDay = nightWork6.AddDays(1); } check = true; if (endTimeSingel2 <= nightWork6NextDay) { check = true; Over22 = (endTimeSingel2 - nightWork22); } else { check = true; Over22 = (nightWork6NextDay - nightWork22); } } if ((date2 > singleShiftOver24 && endTimeSingel2 <= nightWork6) && (starTimeSingel1 < nightWork22 && starTimeSingel1 > nightWork6)) { check = true; endTimeSingel2 = endTimeSingel2.AddDays(1); Over22 = (endTimeSingel2 - nightWork22); } if ((endTimeSingel2 > singleShiftOver24 && endTimeSingel2 <= nightWork6) && (starTimeSingel1 >= nightWork22)) { check = true; endTimeSingel2 = endTimeSingel2.AddDays(1); Over22 = (endTimeSingel2 - starTimeSingel1); } if ((endTimeSingel2 > singleShiftOver24 && endTimeSingel2 <= nightWork6) && (starTimeSingel1 >= singleShiftOver24 && starTimeSingel1 <= nightWork6)) { check = true; Over22 = (endTimeSingel2 - starTimeSingel1); } if (starTimeSingel1 >= nightWork22 && endTimeSingel2 > nightWork22) { check = true; var nightWork6NextDay = new DateTime(); if (endTimeSingel2.Date > starTimeSingel1.Date) { nightWork6NextDay = nightWork6.AddDays(1); if (endTimeSingel2 <= nightWork6NextDay) { check = true; Over22 = (endTimeSingel2 - starTimeSingel1); } else { check = true; Over22 = (nightWork6NextDay - starTimeSingel1); } } } if (endTimeSingel2.Date == starTimeSingel1.Date) { if (endTimeSingel2 <= nightWork6 && starTimeSingel1 >= singleShiftOver24) { check = true; Over22 = (endTimeSingel2 - starTimeSingel1); } else if (endTimeSingel2 >= nightWork6 && starTimeSingel1 >= singleShiftOver24 && endTimeSingel2 <= nightWork22) { if (starTimeSingel1 >= nightWork6 && endTimeSingel2 <= nightWork22) { Over22 = TimeSpan.Zero; } else { Over22 = (nightWork6 - starTimeSingel1); } } else if (starTimeSingel1 >= singleShiftOver24 && endTimeSingel2 > nightWork22) { if (starTimeSingel1 >= nightWork22) { Over22 = (endTimeSingel2 - starTimeSingel1); } else if (starTimeSingel1 < nightWork22 && endTimeSingel2 > nightWork22) { if (starTimeSingel1 < nightWork6) { var step1 = (nightWork6 - starTimeSingel1); var step2 = (endTimeSingel2 - nightWork22); var step3 = step1 + step2; Over22 = step3; } else { Over22 = (endTimeSingel2 - nightWork22); } } } else if (starTimeSingel1 > nightWork22 && endTimeSingel2 > nightWork22) { Over22 = (endTimeSingel2 - starTimeSingel1); } } return Over22; } public TimeSpan Over22Complex(DateTime date1, DateTime date2) { TimeSpan Over22Result = new TimeSpan(); DateTime Over24 = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0); DateTime nightWork22 = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0); DateTime nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0); DateTime nightWork6 = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0); DateTime nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0); DateTime starTime = date1; DateTime endTime = date2; if (endTime > nightWork22 && starTime < nightWork22) { if (starTime.Date == endTime.Date) { nightWork6 = nightWork6.AddDays(1); } if (endTime <= nightWork6) { Over22Result = (endTime - nightWork22); } else if (endTime > nightWork6) { Over22Result = (nightWork6 - nightWork22); } } if (endTime > nightWork22 && starTime >= nightWork22) { if (endTime <= nightWork6) { Over22Result = (endTime - starTime); } else if (endTime > nightWork6) { Over22Result = (nightWork6 - starTime); } } if ((starTime.Hour >= 0 && starTime.Minute >= 0) && (starTime < nightWork6 && starTime.Date == nightWork6.Date)) { if (endTime > nightWork6) { Over22Result = (nightWork6 - starTime); } else if (endTime <= nightWork6) { Over22Result = (endTime - starTime); } //nightWork22 = nightWork22.Subtract(new TimeSpan(1, 0, 0, 0)); } return Over22Result; } public TimeSpan Over22Complex2424(DateTime date1, DateTime date2) { TimeSpan Over22Result = new TimeSpan(); DateTime Over24a = new DateTime(date1.Year, date1.Month, date1.Day, 0, 0, 0); DateTime Over24b = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0); DateTime nightWork22a = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0); DateTime nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0); DateTime nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0); DateTime nightWork6b = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0); DateTime starTime = date1; DateTime endTime = date2; if (starTime >= Over24a && starTime <= nightWork6a) { if (endTime > nightWork22a && endTime <= nightWork6b) { TimeSpan night1 = (nightWork6a - starTime); TimeSpan night2 = (endTime - nightWork22a); Over22Result = night1.Add(night2); } if (endTime > nightWork6a && endTime < nightWork22a) { Over22Result = (nightWork6a - starTime); } } if (starTime >= nightWork6a && starTime < nightWork22a) { if (endTime > nightWork22a && endTime <= nightWork6b) { Over22Result = (endTime - nightWork22a); } if (endTime > nightWork6b) { Over22Result = (nightWork6b - nightWork22a); } } if (starTime >= nightWork22a && starTime < Over24b) { if (endTime <= nightWork22b) { Over22Result = (nightWork6b - starTime); } if (endTime > nightWork22b) { TimeSpan night1 = (nightWork6b - starTime); TimeSpan night2 = (endTime - nightWork22b); Over22Result = night1.Add(night2); } } return Over22Result; } #endregion #region NewChangeByHeydari public IActionResult OnPostDeleteAllCheckouts(List ids, long workshopId) { var op = new OperationResult(); var workshop = _workshopApplication.GetDetails(workshopId); var empId = workshop.EmployerIdList.FirstOrDefault(); var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId); if (isBlock == "true") { return new JsonResult(new { successDelete = false, }); } else { var hasSignatureIds = _checkoutApplication.CheckHasSignature(ids); if (hasSignatureIds == null || (hasSignatureIds != null && hasSignatureIds.Count == 0))//امضا نداشته باشد { op = _checkoutApplication.DeleteAllCheckouts(ids); } return new JsonResult(new { hasSignature = (hasSignatureIds != null && hasSignatureIds.Count() > 0) ? true : false, signatureList = hasSignatureIds, successDelete = op.IsSuccedded, }); } } public IActionResult OnPostDeleteCheckout(long id) { var ids = new List(); ids.Add(id); var op = new OperationResult(); var hasSignatureIds = _checkoutApplication.CheckHasSignature(ids); if (hasSignatureIds == null || (hasSignatureIds != null && hasSignatureIds.Count == 0)) //امضا نداشته باشد { op = _checkoutApplication.DeleteCheckout(id); } return new JsonResult(new { hasSignature = (hasSignatureIds != null && hasSignatureIds.Count() > 0) ? true : false, signatureList = hasSignatureIds, successDelete = op.IsSuccedded, }); } public IActionResult OnPostSignatureAll(List ids, long workshopId) { var result = new OperationResult(); var workshop = _workshopApplication.GetDetails(workshopId); var empId = workshop.EmployerIdList.FirstOrDefault(); var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId); if (isBlock == "true") { return new JsonResult(new { isSuccedded = false, }); } else { foreach (var item in ids) { result = _checkoutApplication.Sign(item); if (!result.IsSuccedded) break; } return new JsonResult(result); } } public IActionResult OnPostDeleteAllSignature(List ids, long workshopId) { var permissions = _authHelper.GetPermissions(); var checkHasPermission = permissions.Any(n => n.Equals(20222)); var result = new OperationResult(); var workshop = _workshopApplication.GetDetails(workshopId); var empId = workshop.EmployerIdList.FirstOrDefault(); var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId); if (isBlock == "true" || !checkHasPermission) { return new JsonResult(new { isSuccedded = false, }); } else { foreach (var item in ids) { result = _checkoutApplication.UnSign(item); if (!result.IsSuccedded) break; } return new JsonResult(result); } } #endregion } public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } } }