Files
Backend-Api/backService/JobWorker.cs
2024-07-05 21:36:15 +03:30

4796 lines
254 KiB
C#

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<JobWorker> _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<JobWorker> 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<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<RotatingShiftViewModel>();
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<LeftWorkViewModel>();
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<string>();
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
}
}