using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using _0_Framework.Application; using Company.Domain.HolidayItemAgg; using Company.Domain.YearlySalaryAgg; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.LeftWork; using CompanyManagment.App.Contracts.WorkingHours; using CompanyManagment.App.Contracts.WorkingHoursTemp; using CompanyManagment.Application; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using PersianTools.Core; namespace backService { public class JobWorker : BackgroundService { private readonly ILogger _logger; private readonly IWorkingHoursApplication _workingHoursApplication; private readonly IWorkingHoursTempApplication _workingHoursTempApplication; private readonly IContractApplication _contractApplication; private readonly IYearlySalaryRepository _yearlySalaryRepository; private readonly IHolidayItemRepository _holidayItemRepository; private readonly ILeftWorkApplication _leftWorkApplication; public JobWorker(ILogger logger, IWorkingHoursApplication workingHoursApplication, IWorkingHoursTempApplication workingHoursTempApplication, IContractApplication contractApplication, IYearlySalaryRepository yearlySalaryRepository, IHolidayItemRepository holidayItemRepository, ILeftWorkApplication leftWorkApplication) { _logger = logger; _workingHoursApplication = workingHoursApplication; _workingHoursTempApplication = workingHoursTempApplication; _contractApplication = contractApplication; _yearlySalaryRepository = yearlySalaryRepository; _holidayItemRepository = holidayItemRepository; _leftWorkApplication = leftWorkApplication; } [SuppressMessage("ReSharper.DPA", "DPA0006: Large number of DB commands", MessageId = "count: 820")] protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("job is running..."); var contractList = await _workingHoursTempApplication.Correct(); int i = 1; foreach (var item in contractList) { var result = await _workingHoursTempApplication.GetByContractIdAsync(item.Id); result.EmployeeId = item.EmployeeId; result.WorkshopId = item.WorkshopIds; result.GetWorkDate = item.GetWorkDate; result.GetWorkDateHide = item.GetWorkDateHide; result.ContarctStart = item.ContarctStart; result.ContractEnd = item.ContractEnd; var compute = MandatoryHours(result); Task.Delay(30); item.DayliWage = compute.SalaryCompute; item.ConsumableItems = compute.ConsumableItems; item.HousingAllowance = compute.HousingAllowance; item.FamilyAllowance = compute.FamilyAllowance; item.WorkingHoursWeekly = compute.SumTime44; item.AgreementSalary = "0"; var editContract =await _contractApplication.EditComputeAsync(item); Task.Delay(30); await _workingHoursApplication.removeWorkingHoursAsync(item.Id); Task.Delay(30); result.ContractId = item.Id; result.ContractNo = item.ContractNo; result.NumberOfWorkingDays = compute.NumberOfWorkingDays; result.NumberOfFriday = compute.NumberOfFriday; result.TotalHoursesH = compute.TotalHoursesH; result.TotalHoursesM = compute.TotalHoursesM; result.OverTimeWorkH = compute.OverTimeWorkH; result.OverTimeWorkM = compute.OverTimeWorkM; result.OverNightWorkH = compute.OverNightWorkH; result.OverNightWorkM = compute.OverNightWorkM; result.WeeklyWorkingTime = compute.SumTime44; await _workingHoursApplication.CreateNewAsync(result); _logger.LogInformation(i + "- finish no : " + item.ContractNo); i++; } _logger.LogInformation("task completed " ); return Task.CompletedTask; } #region MandatoryCompute public ComputingViewModel MandatoryHours(CreateWorkingHoursTemp command) { #region entityes string Notholiday = String.Empty; string Holidays = string.Empty; 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"; 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.GetHolidayItemAsync(sdate.Substring(0, 4)).Result; #region shiftWork 1&2 if (command.ShiftWork == "1" || command.ShiftWork == "2") { for (var da = d1; da <= d2; da.AddDays(1)) { if (command.ShiftWork == "1" || command.ShiftWork == "2") { if (command.shanbeh == true) { if (da.DayOfWeek == "شنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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); } } } } if (command.yekshanbeh == true) { if (da.DayOfWeek == "یکشنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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); } } } } if (command.doshanbeh == true) { if (da.DayOfWeek == "دوشنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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; } } } } if (command.seshanbeh == true) { if (da.DayOfWeek == "سه شنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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; } } } } if (command.cheharshanbeh == true) { if (da.DayOfWeek == "چهارشنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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; } } } } if (command.pangshanbeh == true) { if (da.DayOfWeek == "پنج شنبه") { var test = da.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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; } } } } if (command.jomeh == true) { if (da.DayOfWeek == "جمعه") { 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 { i6 = 0; } } } } #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) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.Shanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.Shanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.Shanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.Shanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.Shanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest0w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "یکشنبه": if (da.Day <= w1) { if (command.YekShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.YekShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.YekShanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.YekShanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.YekShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.YekShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest1w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "دوشنبه": if (da.Day <= w1) { if (command.DoShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.DoShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.DoShanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.DoShanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.DoShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.DoShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest2w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "سه شنبه": if (da.Day <= w1) { if (command.SeShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.SeShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.SeShanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.SeShanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.SeShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.SeShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest3w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "چهارشنبه": if (da.Day <= w1) { if (command.CheharShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.CheharShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.CheharShanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.CheharShanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.CheharShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.CheharShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest4w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "پنج شنبه": if (da.Day <= w1) { if (command.PanjShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w1 && da.Day <= w2) { if (command.PanjShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w2 && da.Day <= w3) { if (command.PanjShanbe3) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w3); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w3 && da.Day <= w4) { if (command.PanjShanbe4) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w4); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w4 && da.Day <= w5) { if (command.PanjShanbe1) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w1); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } else if (da.Day > w5 && da.Day <= w6) { if (command.PanjShanbe2) { 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)) 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)) endTimeSingel2 = endTimeSingel2.Subtract(rest5w2); var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1, endTimeTowSh2); HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime); } } } break; case "جمعه": if (da.Day <= w1) { if (command.Jome1) { 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)) 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 (da.Day > w1 && da.Day <= w2) { if (command.Jome2) { 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)) 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 (da.Day > w2 && da.Day <= w3) { if (command.Jome3) { 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)) 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 (da.Day > w3 && da.Day <= w4) { if (command.Jome4) { 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)) 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 (da.Day > w4 && da.Day <= w5) { if (command.Jome1) { 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)) 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 (da.Day > w5 && da.Day <= w6) { if (command.Jome2) { 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)) 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); } } 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") { 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.Start1224); var end = Convert.ToDateTime(command.End1224); if (string.IsNullOrWhiteSpace(command.Start1224)) start = Convert.ToDateTime(command.StartComplex); if (string.IsNullOrWhiteSpace(command.End1224)) start = 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)) { 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 Over22Computer = Over22Complex(start, end); Over22 = Over22.Add(Over22Computer); 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 Over22Computer2 = Over22Complex(start, end); Over22 = Over22.Add(Over22Computer2); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); i4 += 1; var NextStart = start.AddHours(36); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { if (daa.DayOfWeek != "جمعه") { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "6") { 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.Start2424); var end = Convert.ToDateTime(command.End2424); if (string.IsNullOrWhiteSpace(command.Start2424)) start = Convert.ToDateTime(command.StartComplex); if (string.IsNullOrWhiteSpace(command.End2424)) start = 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)) { 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 Over22Computer = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computer); 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 Over22Computer2 = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computer2); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); i4 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { if (daa.DayOfWeek != "جمعه") { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "7") { 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.Start1236); var end = Convert.ToDateTime(command.End1236); if (string.IsNullOrWhiteSpace(command.Start1236)) start = Convert.ToDateTime(command.StartComplex); if (string.IsNullOrWhiteSpace(command.End1236)) start = 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)) { 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 Over22Computer = Over22Complex(start, end); Over22 = Over22.Add(Over22Computer); 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 Over22Computer2 = Over22Complex(start, end); Over22 = Over22.Add(Over22Computer2); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex(start, end); Over22 = Over22.Add(Over22Computing); i4 += 1; var NextStart = start.AddHours(48); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { if (daa.DayOfWeek != "جمعه") { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; if (checkHoliday == false) { SumComplexDays += 1; } else { OfficialHoliday += 1; } } else { FridayStartToEnd += 1; } } } else if (command.ShiftWork == "8") { 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.Start2448); var end = Convert.ToDateTime(command.End2448); if (string.IsNullOrWhiteSpace(command.Start2448)) start = Convert.ToDateTime(command.StartComplex); if (string.IsNullOrWhiteSpace(command.End2448)) start = 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)) { 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 Over22Computer = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computer); 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 Over22Computer2 = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computer2); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); 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 Over22Computing = Over22Complex2424(start, end); Over22 = Over22.Add(Over22Computing); i4 += 1; var NextStart = start.AddHours(72); end = NextStart.Add(singleSpan1); } } for (var daa = d1b; daa <= d2b; daa.AddDays(1)) { if (daa.DayOfWeek != "جمعه") { var test = daa.ToGregorianDateTime(); var checkHoliday = _holidayItemRepository.GetHolidayAsync(test).Result; 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(notHolidaysCount); Notholiday = notHolidaysCount.ToString(); Holidays = holidaysCount.ToString(); var searchModel = new LeftWorkSearchModel() { EmployeeId = command.EmployeeId, WorkshopId = command.WorkshopId, }; var leftworkList = _leftWorkApplication.searchAsync(searchModel).Result; 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.DayliFeeComputingAsync(startDate, ContractStart, endDate, command.EmployeeId, command.WorkshopId, leftworkList).Result; dayliFee = dayliFeeResult.DayliFee; basic = dayliFeeResult.Basic; } #endregion #region ConsumableItemsAndHousingAndFamily var ConsumableItems = _yearlySalaryRepository.ConsumableItemsAsync(endDate).Result; var HousingAllowance = _yearlySalaryRepository.HousingAllowanceAsync(endDate).Result; var familyAllowance = _yearlySalaryRepository.FamilyAllowanceAsync(command.EmployeeId, endDate).Result; #endregion #region Fix44Compute var dailyFixx = TimeSpan.Parse("07:20"); var fix44 = dailyFixx.Multiply(6); var divideNum = TimeSpan.Parse("06:00"); //ساعت موظفی برای یک ماه var TotalContractDays = (conEndGr - conStartGr).TotalDays + 1; var totalWeek = (int)(TotalContractDays / 6); var TotalDaysNoFriday = TotalContractDays - FridayStartToEnd; var FixHourses = TotalDaysNoFriday * 7.33; 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 (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 (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 (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 (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } SumWorkeTime = $"{44}"; } } else if (command.ShiftWork == "4") { var totalHourses = (HolidaysAndNot.TotalMinutes) / 60; //var totalHourses = (totalHoursShift1.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 (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) { var totalShiftRound = Math.Round(totalHourses, 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 (familyAllowance != "0") { var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount; familyAllowance = familyAllowanceStep4.ToMoney(); } SumWorkeTime = $"{44}"; } } else { 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 (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} " + "دقیقه"; } //else if(totalHoursShift1 < ComplexFix) //{ // var totalHourses = (totalHoursShift1.TotalMinutes) / 60; // var DailyFeeNumberType = dayliFee.MoneyToDouble(); // var dailyStep1 = DailyFeeNumberType / 7.33; // var dailyStep2 = totalHourses / notHolidaysCount; // var result = dailyStep2 * dailyStep1; // dayliFee = result.ToMoney(); //} 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 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, Basic = basic, }; 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 } }