diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs
index 7fb0c7e3..f28e3246 100644
--- a/0_Framework/Application/Tools.cs
+++ b/0_Framework/Application/Tools.cs
@@ -1396,6 +1396,73 @@ public static class Tools
return false;
return true;
}
+
+ ///
+ /// چک میکند که در دو شیفت استاتیک تداخل زمانی وجود دارد یا خیر
+ /// چک میکند که آیا ساعات وارد شده ولید هستند یا خیر
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool InterferenceTime(string start1, string end1, string start2, string end2)
+ {
+ if (!CheckValidHm(start1))
+ return true;
+
+ if (!CheckValidHm(end1))
+ return true;
+
+ if (!CheckValidHm(start2))
+ return true;
+
+ if (!CheckValidHm(end2))
+ return true;
+
+ //اگه دو شیفت نبود
+ if (string.IsNullOrWhiteSpace(start1) || string.IsNullOrWhiteSpace(start2))
+ return false;
+
+
+ try
+ {
+ var start1Gr = Convert.ToDateTime(start1);
+ var end1Gr = Convert.ToDateTime(end1);
+
+ if (end1Gr < start1Gr)
+ end1Gr = end1Gr.AddDays(1);
+
+ var start2Gr = Convert.ToDateTime(start2);
+ var end2Gr = Convert.ToDateTime(end2);
+
+
+ start2Gr = new DateTime(end1Gr.Year, end1Gr.Month, end1Gr.Day, start2Gr.Hour, start2Gr.Minute,
+ start2Gr.Second);
+
+
+ end2Gr = new DateTime(end1Gr.Year, end1Gr.Month, end1Gr.Day, end2Gr.Hour, end2Gr.Minute,
+ end2Gr.Second);
+ if (end2Gr < start2Gr)
+ end2Gr = end2Gr.AddDays(1);
+
+ var diff = (end1Gr - start1Gr).Add((end2Gr - start2Gr));
+ if (diff > new TimeSpan(24,0,0))
+ return true;
+
+ if (start2Gr <= end1Gr)
+ return true;
+
+ return false;
+ }
+ catch (Exception)
+ {
+
+ return true;
+ }
+
+
+ }
public static DateTime FindFirstDayOfMonthGr(this DateTime date)
{
var pc = new PersianCalendar();
diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs
index 3a204db6..2359a221 100644
--- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs
+++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs
@@ -636,45 +636,75 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll
}
else if (totalDays >= 28) // بالای 28 روز حد اقل 8 تغییر شیفت
{
- validCount = 8;
+ validCount = 6;
}
else
{
// تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است
- validCount = (int)((totalDays * 8) / 28);
+ validCount = (int)((totalDays * 6) / 28);
}
+ string maxName;
+ int maxValue = moriningCount;
- if (moriningCount >= validCount)
- RotatingfaName.Add("صبح");
- if (eveningCount >= validCount)
- RotatingfaName.Add("عصر");
- if (nightCount >= validCount)
- RotatingfaName.Add("شب");
- var rotatingFaResult = "";
- if (RotatingfaName.Count > 1)// اگر تعداد شیفت های محاسبه شده بیش از یک بود
- {
- shiftOver22Hours = "0";
- shiftOver22Minuts = "0";
- for (var 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 = "نوبت کاری ندارد";
+ maxName = "moriningCount";
+ if (eveningCount > maxValue)
+ {
+ maxValue = eveningCount;
+ maxName = "eveningCount";
+ }
+ if (nightCount > maxValue)
+ {
+ maxValue = nightCount;
+ maxName = "nightCount";
+ }
- var over22Hours = (int)over22.TotalHours;
- var over22Minuts = (int)(over22.TotalMinutes % 60);
- shiftOver22Hours = over22Hours.ToString();
- shiftOver22Minuts = over22Minuts.ToString();
+ int countOutOfRange = 0;
- }
+ switch (maxName)
+ {
+ case "moriningCount":
+ countOutOfRange = eveningCount + nightCount;
+ break;
+ case "eveningCount":
+ countOutOfRange = moriningCount + nightCount;
+ break;
+ case "nightCount":
+ countOutOfRange = moriningCount + eveningCount;
+ break;
+ }
+ var rotatingFaResult = "";
+ if (countOutOfRange >= validCount)
+ {
+ shiftOver22Hours = "0";
+ shiftOver22Minuts = "0";
+ if (moriningCount >= 1)
+ RotatingfaName.Add("صبح");
+ if (eveningCount >= 1)
+ RotatingfaName.Add("عصر");
+ if (nightCount >= 1)
+ RotatingfaName.Add("شب");
+ for (var 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
+ {
+ rotatingFaResult = "نوبت کاری ندارد";
+
+ var over22Hours = (int)over22.TotalHours;
+ var over22Minuts = (int)(over22.TotalMinutes % 60);
+ shiftOver22Hours = over22Hours.ToString();
+ shiftOver22Minuts = over22Minuts.ToString();
+
+ }
+
#endregion
//******* محاسبه مبلغ نوبت کاری *************
#region ShiftPayPercent
@@ -879,20 +909,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll
// شبکاری
TimeSpan over22 = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks));
var RotatingfaName = new List();
- //if (shiftwork != "1" && shiftwork != "2" && shiftwork != "4")//اگر چرخشی بود و منظم نبود
- //{
- // if (moriningCount > 0)
- // RotatingfaName.Add("صبح");
- // if (eveningCount > 0)
- // RotatingfaName.Add("عصر");
- // if (nightCount > 0)
- // RotatingfaName.Add("شب");
- //}
- //else// اگر منظم و شیفتی بود
- //{
-
- //}
var totalDays = (int)(contractEnd - contractStart).TotalDays + 1;
int validCount = 0;
if (totalDays <= 7) // زیر 7 روز باید حد اقل 2 تغییر شیفت داشته باشد
@@ -909,37 +926,66 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll
validCount = (int)((totalDays * 6) / 28);
}
- Console.WriteLine(validCount);
- if (moriningCount >= validCount)
- RotatingfaName.Add("صبح");
- if (eveningCount >= validCount)
- RotatingfaName.Add("عصر");
- if (nightCount >= validCount)
- RotatingfaName.Add("شب");
- var rotatingFaResult = "";
- if (RotatingfaName.Count > 1)// اگر تعداد شیفت های محاسبه شده بیش از یک بود
- {
+ string maxName;
+ int maxValue = moriningCount;
- for (var 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 = "نوبت کاری ندارد";
+ maxName = "moriningCount";
+ if (eveningCount > maxValue)
+ {
+ maxValue = eveningCount;
+ maxName = "eveningCount";
+ }
+ if (nightCount > maxValue)
+ {
+ maxValue = nightCount;
+ maxName = "nightCount";
+ }
+
+ int countOutOfRange = 0;
+
+ switch (maxName)
+ {
+ case "moriningCount":
+ countOutOfRange = eveningCount + nightCount;
+ break;
+ case "eveningCount":
+ countOutOfRange = moriningCount + nightCount;
+ break;
+ case "nightCount":
+ countOutOfRange = moriningCount + eveningCount;
+ break;
+ }
+ var rotatingFaResult = "";
+ if (countOutOfRange >= validCount)
+ {
+
+ if (moriningCount >= 1)
+ RotatingfaName.Add("صبح");
+ if (eveningCount >= 1)
+ RotatingfaName.Add("عصر");
+ if (nightCount >= 1)
+ RotatingfaName.Add("شب");
+ for (var 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
+ {
+ rotatingFaResult = "نوبت کاری ندارد";
+ }
- }
return new ComputingViewModel
{
diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs
index 5dd119ce..014082b0 100644
--- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs
+++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/AutoExtension.cshtml.cs
@@ -24,148 +24,148 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops;
public class AutoExtensionModel : PageModel
{
- private readonly ICheckoutApplication _checkoutApplication;
- private readonly IContractApplication _contractApplication;
- private readonly IContractRepository _contractRepository;
- private readonly IEmployeeApplication _employeeApplication;
- private readonly IEmployerApplication _employerApplication;
- private readonly IHolidayItemRepository _holidayItemRepository;
- private readonly IHubContext _hubContext;
- private readonly ILeftWorkApplication _leftWorkApplication;
- private readonly IPersonnelCodeApplication _personnelCodeApplication;
- private readonly IWorkingHoursApplication _workingHoursApplication;
- private readonly IWorkingHoursTempApplication _workingHoursTempApplication;
- private readonly IWorkshopApplication _workshopApplication;
- private readonly IYearlySalaryApplication _yearlySalaryApplication;
- private readonly IYearlySalaryRepository _yearlySalaryRepository;
- public List EmployeeList;
- public SelectList EmployeeSelectList { get; set; }
- private string InterferenceMessage = string.Empty;
- public List YearlyList;
+ private readonly ICheckoutApplication _checkoutApplication;
+ private readonly IContractApplication _contractApplication;
+ private readonly IContractRepository _contractRepository;
+ private readonly IEmployeeApplication _employeeApplication;
+ private readonly IEmployerApplication _employerApplication;
+ private readonly IHolidayItemRepository _holidayItemRepository;
+ private readonly IHubContext _hubContext;
+ private readonly ILeftWorkApplication _leftWorkApplication;
+ private readonly IPersonnelCodeApplication _personnelCodeApplication;
+ private readonly IWorkingHoursApplication _workingHoursApplication;
+ private readonly IWorkingHoursTempApplication _workingHoursTempApplication;
+ private readonly IWorkshopApplication _workshopApplication;
+ private readonly IYearlySalaryApplication _yearlySalaryApplication;
+ private readonly IYearlySalaryRepository _yearlySalaryRepository;
+ public List EmployeeList;
+ public SelectList EmployeeSelectList { get; set; }
+ private string InterferenceMessage = string.Empty;
+ public List YearlyList;
- public AutoExtensionModel(IWorkshopApplication workshopApplication, ILeftWorkApplication leftWorkApplication,
- IPersonnelCodeApplication personnelCodeApplication, IContractApplication contractApplication,
- ICheckoutApplication checkoutApplication, IWorkingHoursTempApplication workingHoursTempApplication,
- IHolidayItemRepository holidayItemRepository, IYearlySalaryRepository yearlySalaryRepository,
- IContractRepository contractRepository, IYearlySalaryApplication yearlySalaryApplication,
- IWorkingHoursApplication workingHoursApplication, IHubContext hubContext,
- IEmployerApplication employerApplication, IEmployeeApplication employeeApplication)
- {
- _workshopApplication = workshopApplication;
- _leftWorkApplication = leftWorkApplication;
- _personnelCodeApplication = personnelCodeApplication;
- _contractApplication = contractApplication;
- _checkoutApplication = checkoutApplication;
- _workingHoursTempApplication = workingHoursTempApplication;
- _holidayItemRepository = holidayItemRepository;
- _yearlySalaryRepository = yearlySalaryRepository;
- _contractRepository = contractRepository;
- _yearlySalaryApplication = yearlySalaryApplication;
- _workingHoursApplication = workingHoursApplication;
- _hubContext = hubContext;
- _employerApplication = employerApplication;
- _employeeApplication = employeeApplication;
- }
+ public AutoExtensionModel(IWorkshopApplication workshopApplication, ILeftWorkApplication leftWorkApplication,
+ IPersonnelCodeApplication personnelCodeApplication, IContractApplication contractApplication,
+ ICheckoutApplication checkoutApplication, IWorkingHoursTempApplication workingHoursTempApplication,
+ IHolidayItemRepository holidayItemRepository, IYearlySalaryRepository yearlySalaryRepository,
+ IContractRepository contractRepository, IYearlySalaryApplication yearlySalaryApplication,
+ IWorkingHoursApplication workingHoursApplication, IHubContext hubContext,
+ IEmployerApplication employerApplication, IEmployeeApplication employeeApplication)
+ {
+ _workshopApplication = workshopApplication;
+ _leftWorkApplication = leftWorkApplication;
+ _personnelCodeApplication = personnelCodeApplication;
+ _contractApplication = contractApplication;
+ _checkoutApplication = checkoutApplication;
+ _workingHoursTempApplication = workingHoursTempApplication;
+ _holidayItemRepository = holidayItemRepository;
+ _yearlySalaryRepository = yearlySalaryRepository;
+ _contractRepository = contractRepository;
+ _yearlySalaryApplication = yearlySalaryApplication;
+ _workingHoursApplication = workingHoursApplication;
+ _hubContext = hubContext;
+ _employerApplication = employerApplication;
+ _employeeApplication = employeeApplication;
+ }
- public string workshopName { get; set; }
- public string FirstPersonStartWork { get; set; }
- public string End { get; set; }
- public bool HavingPersonel { get; set; }
- public long MaxPersonnelCode { get; set; }
- public long WorkshopId { get; set; }
- public string ArchiveCode { get; private set; }
- public string WAddress1 { get; set; }
- public long EmployerId { get; set; }
- public bool EmployerWarning { get; set; }
- public string EmployerWarningMessage { get; set; }
+ public string workshopName { get; set; }
+ public string FirstPersonStartWork { get; set; }
+ public string End { get; set; }
+ public bool HavingPersonel { get; set; }
+ public long MaxPersonnelCode { get; set; }
+ public long WorkshopId { get; set; }
+ public string ArchiveCode { get; private set; }
+ public string WAddress1 { get; set; }
+ public long EmployerId { get; set; }
+ public bool EmployerWarning { get; set; }
+ public string EmployerWarningMessage { get; set; }
- public void OnGet(long id)
- {
- var selctedWorkshop = _workshopApplication.GetDetails(id);
- workshopName = selctedWorkshop?.WorkshopFullName;
- YearlyList =
- _yearlySalaryApplication.GetYears();
- var employerId = selctedWorkshop.EmployerIdList.FirstOrDefault()!;
- var employer = _employerApplication.GetDetails(employerId);
- if (employer.IsLegal == "حقوقی")
- {
- if (string.IsNullOrWhiteSpace(employer.NationalId) || string.IsNullOrWhiteSpace(employer.RegisterId))
- {
- EmployerWarning = true;
- EmployerWarningMessage = "شناسه ملی ، شماره ثبت کارفرمای این کارگاه را بررسی کنید";
- }
- }
- else
- {
- if (string.IsNullOrWhiteSpace(employer.Nationalcode) || string.IsNullOrWhiteSpace(employer.Gender))
- {
- EmployerWarning = true;
- EmployerWarningMessage = "کد ملی ، جنسیت کارفرمای این کارگاه را بررسی گنید";
- }
- }
+ public void OnGet(long id)
+ {
+ var selctedWorkshop = _workshopApplication.GetDetails(id);
+ workshopName = selctedWorkshop?.WorkshopFullName;
+ YearlyList =
+ _yearlySalaryApplication.GetYears();
+ var employerId = selctedWorkshop.EmployerIdList.FirstOrDefault()!;
+ var employer = _employerApplication.GetDetails(employerId);
+ if (employer.IsLegal == "حقوقی")
+ {
+ if (string.IsNullOrWhiteSpace(employer.NationalId) || string.IsNullOrWhiteSpace(employer.RegisterId))
+ {
+ EmployerWarning = true;
+ EmployerWarningMessage = "شناسه ملی ، شماره ثبت کارفرمای این کارگاه را بررسی کنید";
+ }
+ }
+ else
+ {
+ if (string.IsNullOrWhiteSpace(employer.Nationalcode) || string.IsNullOrWhiteSpace(employer.Gender))
+ {
+ EmployerWarning = true;
+ EmployerWarningMessage = "کد ملی ، جنسیت کارفرمای این کارگاه را بررسی گنید";
+ }
+ }
- var LeftWorkSerchModel = new LeftWorkSearchModel
- {
- WorkshopId = id
- };
- var LeftWorkList = _leftWorkApplication.SearchCreateContract(LeftWorkSerchModel);
- var personnelCodeSearch = new PersonnelCodeSearchModel
- {
- WorkshopId = id
- };
- var pcodes = _personnelCodeApplication.Search(personnelCodeSearch);
- if (pcodes.Any(x => x.PersonnelCode > 0))
- {
- MaxPersonnelCode = pcodes.Select(x => x.PersonnelCode).Max();
- MaxPersonnelCode += 1;
- }
- else
- {
- MaxPersonnelCode = 1;
- }
+ var LeftWorkSerchModel = new LeftWorkSearchModel
+ {
+ WorkshopId = id
+ };
+ var LeftWorkList = _leftWorkApplication.SearchCreateContract(LeftWorkSerchModel);
+ var personnelCodeSearch = new PersonnelCodeSearchModel
+ {
+ WorkshopId = id
+ };
+ var pcodes = _personnelCodeApplication.Search(personnelCodeSearch);
+ if (pcodes.Any(x => x.PersonnelCode > 0))
+ {
+ MaxPersonnelCode = pcodes.Select(x => x.PersonnelCode).Max();
+ MaxPersonnelCode += 1;
+ }
+ else
+ {
+ MaxPersonnelCode = 1;
+ }
- if (LeftWorkList.Count > 0)
- {
- HavingPersonel = true;
- var firstStartWork = LeftWorkList.OrderBy(x => x.StartWorkDateGr).FirstOrDefault();
- var personelList = LeftWorkList.GroupBy(x => x.EmployeeId).Select(x => x.First()).ToList();
- //FirstPersonStartWork = firstStartWork.StartWorkDateGr.ToFarsi();
- //End = DateTime.Now.ToFarsi();
- personelList = personelList.OrderBy(x => x.StartWorkDateGr).ToList();
- if (!string.IsNullOrWhiteSpace(selctedWorkshop.Address))
- selctedWorkshop.Address =
- $"{selctedWorkshop.State} - {selctedWorkshop.City} - {selctedWorkshop.Address}";
+ if (LeftWorkList.Count > 0)
+ {
+ HavingPersonel = true;
+ var firstStartWork = LeftWorkList.OrderBy(x => x.StartWorkDateGr).FirstOrDefault();
+ var personelList = LeftWorkList.GroupBy(x => x.EmployeeId).Select(x => x.First()).ToList();
+ //FirstPersonStartWork = firstStartWork.StartWorkDateGr.ToFarsi();
+ //End = DateTime.Now.ToFarsi();
+ personelList = personelList.OrderBy(x => x.StartWorkDateGr).ToList();
+ if (!string.IsNullOrWhiteSpace(selctedWorkshop.Address))
+ selctedWorkshop.Address =
+ $"{selctedWorkshop.State} - {selctedWorkshop.City} - {selctedWorkshop.Address}";
- WorkshopId = id;
- ArchiveCode = selctedWorkshop.ArchiveCode;
- WAddress1 = selctedWorkshop.Address;
- EmployerId = selctedWorkshop.EmployerIdList.FirstOrDefault();
- EmployeeList = personelList.Select(x => new ContractViweModel
- {
- EmployeeId = x.EmployeeId,
- EmployeeName = x.EmployeeFullName,
- ContarctStart = FirstPersonStartWork,
- ContractEnd = End,
- WorkshopIds = id,
- PersonnelCode = pcodes.Any(p => p.EmployeeId == x.EmployeeId)
- ? pcodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId)!.PersonnelCode
- : 0,
- JobType = x.JobName,
- JobTypeId = x.JobId,
- EmployerId = employerId,
- ArchiveCode = selctedWorkshop.ArchiveCode,
- WorkshopAddress1 = selctedWorkshop.Address
- }).OrderBy(x => x.PersonnelCode).ToList();
- EmployeeSelectList = new SelectList(personelList, "EmployeeId", "EmployeeFullName");
- }
- else
- {
- HavingPersonel = false;
- }
- //Correction();
- }
+ WorkshopId = id;
+ ArchiveCode = selctedWorkshop.ArchiveCode;
+ WAddress1 = selctedWorkshop.Address;
+ EmployerId = selctedWorkshop.EmployerIdList.FirstOrDefault();
+ EmployeeList = personelList.Select(x => new ContractViweModel
+ {
+ EmployeeId = x.EmployeeId,
+ EmployeeName = x.EmployeeFullName,
+ ContarctStart = FirstPersonStartWork,
+ ContractEnd = End,
+ WorkshopIds = id,
+ PersonnelCode = pcodes.Any(p => p.EmployeeId == x.EmployeeId)
+ ? pcodes.FirstOrDefault(p => p.EmployeeId == x.EmployeeId)!.PersonnelCode
+ : 0,
+ JobType = x.JobName,
+ JobTypeId = x.JobId,
+ EmployerId = employerId,
+ ArchiveCode = selctedWorkshop.ArchiveCode,
+ WorkshopAddress1 = selctedWorkshop.Address
+ }).OrderBy(x => x.PersonnelCode).ToList();
+ EmployeeSelectList = new SelectList(personelList, "EmployeeId", "EmployeeFullName");
+ }
+ else
+ {
+ HavingPersonel = false;
+ }
+ //Correction();
+ }
public IActionResult OnPostEmployeesStartedWorkInSelectedPeriod(long workshopId, string startDate, string endDate, bool manualDate)
{
@@ -194,13 +194,13 @@ public class AutoExtensionModel : PageModel
{
return new JsonResult(new
{
- founded = true,
- leftWorkList = res,
- error = false
+ founded = true,
+ leftWorkList = res,
+ error = false
});
}
-
+
}
return new JsonResult(new
@@ -211,6347 +211,6269 @@ public class AutoExtensionModel : PageModel
});
}
- public IActionResult OnGetContractStatus(long employeeId, long workshopId, string employeeName, string workshopname)
- {
- var command = new ContractStatusViewModel();
- var contractSearch = new ContractSearchModel
- {
- EmployeeId = employeeId,
- WorkshopIds = workshopId
- };
- var checkoutSearch = new CheckoutSearchModel
- {
- EmployeeId = employeeId,
- WorkshopId = workshopId
- };
- var contractResult = _contractApplication.Search(contractSearch);
- var checkoutResult = _checkoutApplication.SimpleSearch(checkoutSearch);
-
- if (contractResult.Count > 0)
- {
- var divideList = new List();
- var ChekoutDivideList = new List();
-
- var groupList = new List();
-
- foreach (var item in contractResult)
- {
- var divide = new ContractStatusDivide
- {
- ContractStart = item.ContarctStart,
- ContractEnd = item.ContractEnd,
- Year = item.ContarctStart.Substring(0, 4),
- MonthStart = Convert.ToInt32(item.ContarctStart.Substring(5, 2)),
- MonthEnd = Convert.ToInt32(item.ContractEnd.Substring(5, 2)),
- SignaturStatus = item.Signature
- };
- divideList.Add(divide);
- }
-
- foreach (var item in checkoutResult)
- {
- var CheckoutDivide = new CheckoutStatusDivide
- {
- CheckoutStart = item.ContractStart,
- CheckoutEnd = item.ContractEnd,
- Year = item.ContractStart.Substring(0, 4),
- MonthStart = Convert.ToInt32(item.ContractStart.Substring(5, 2)),
- MonthEnd = Convert.ToInt32(item.ContractEnd.Substring(5, 2)),
- SignaturStatus = item.Signature
- };
- ChekoutDivideList.Add(CheckoutDivide);
- }
-
- var contractByYear = divideList.GroupBy(x => x.Year).Select(x => x.First()).ToList();
- foreach (var year in contractByYear)
- {
- var divided = divideList.Where(x => x.Year == year.Year).ToList();
- var chDivided = ChekoutDivideList.Where(x => x.Year == year.Year).ToList();
- if (chDivided.Count < 1) chDivided = new List();
-
- var group = new ContractStatusGroup
- {
- Year = year.Year,
- ContractStatusDivideList = divided,
- CheckoutStatusDivideList = chDivided
- };
- groupList.Add(group);
- }
-
- command.EmployeeName = employeeName;
- command.WorkshopName = workshopname;
- command.HavingContract = true;
- command.ContractStatusGroupList = groupList;
- }
- else
- {
- command.EmployeeName = employeeName;
- command.WorkshopName = workshopname;
- command.HavingContract = false;
- }
-
-
- return Partial("ContractStatus", command);
- }
-
- public IActionResult OnGetClock(long employeeId, long workshopId, string workshopAddress, long personelCode,
- long jobId, string startContract, string endContract, string employeeName)
- {
- var start = new DateTime();
- var end = new DateTime();
- var psCodeZeroCheck = "";
- var jobIdZeroCheck = "";
- var leftWorkCheckExist = "";
- var dateValid = "";
- var getWorkDateHide = "";
- var contractExistCheck = string.Empty;
- if (personelCode == 0)
- psCodeZeroCheck = $"برای {employeeName} در این کارگاه کد پرسنلی مشخص نشده است";
- if (jobId == 0)
- jobIdZeroCheck = $" برای {employeeName} در این کارگاه سمت مشخص نشده است";
-
-
- var leftWorkSerachModel = new LeftWorkSearchModel
- {
- EmployeeId = employeeId,
- WorkshopId = workshopId
- };
- if (!string.IsNullOrWhiteSpace(startContract) && !string.IsNullOrWhiteSpace(endContract))
- {
- start = startContract.ToGeorgianDateTime();
- end = endContract.ToGeorgianDateTime();
-
- var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
- if (leftWoekSerchResult.Count > 0)
- {
- getWorkDateHide = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
- var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
- x.LeftWorkDateGr > start);
-
- if (check != null)
- {
- var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
-
- if (leftWorkDate != "1500/01/01")
- {
- var endOfmonth = leftWorkDate.FindeEndOfMonth();
- var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
- if (end <= endOfMonthGr)
- {
- }
- else
- {
- leftWorkCheckExist =
- $" با تو جه به ترک کار پرسنل در تاریخ {leftWorkDate} می توانید تا تاریخ {endOfmonth} قرارداد ایجاد نمایید";
- }
- }
- }
- else
- {
- leftWorkCheckExist = $" برای {employeeName} در بازه تاریخ وارد شده شروع به کار وجود ندارد";
- }
- }
-
- contractExistCheck = _contractRepository.ContractStartCheck(start, end, employeeId, workshopId);
- if (start > end)
- dateValid = "تاریخ شروع از تاریخ پایان بزرگتر است";
-
- if (start == end)
- dateValid = "تاریخ شروع و تاریخ پایان برابر وارد شده اند";
- }
- else
- {
- if (string.IsNullOrWhiteSpace(startContract) && string.IsNullOrWhiteSpace(endContract))
- dateValid = "تاریخ شروع و پایان قرارداد را وارد کنید";
- else if (string.IsNullOrWhiteSpace(startContract))
- dateValid = "تاریخ شروع قرارداد را وارد کنید";
- else if (string.IsNullOrWhiteSpace(endContract)) dateValid = "تاریخ پایان قرارداد را وارد کنید";
- }
-
-
- if (!string.IsNullOrWhiteSpace(psCodeZeroCheck) || !string.IsNullOrWhiteSpace(jobIdZeroCheck)
- || !string.IsNullOrWhiteSpace(leftWorkCheckExist) ||
- !string.IsNullOrWhiteSpace(contractExistCheck)
- || !string.IsNullOrWhiteSpace(dateValid))
- {
- var alarm = new AlarmViewModel
- {
- PersonnelCodeZeroCheck = psCodeZeroCheck,
- JobIdZeroCheck = jobIdZeroCheck,
- LeftWorkExistCheck = leftWorkCheckExist,
- ContractExistCheck = contractExistCheck,
- DateValidCheck = dateValid,
- EmployeeName = employeeName
- };
- return Partial("Alert", alarm);
- }
-
- var result = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(workshopId, employeeId);
- if (result == null) result = new CreateWorkingHoursTemp();
-
-
- result.WorkshopAddress1 = workshopAddress;
- //var today = DateTime.Now;
- //var start = today.ToFarsi();
- result.StartDate = startContract;
- result.EndDate = endContract;
- result.GetWorkDateHide = getWorkDateHide;
- return Partial("clock", result);
- }
-
- //FirstCheck
- public IActionResult OnPostContractSet(long employeeId, long workshopId, string workshopAddress,
- long personelCode, long jobId, string startContract, string endContract, string employeeName)
- {
- var employeeDetails = _employeeApplication.GetDetails(employeeId);
- var workingHoursResult = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(workshopId, employeeId);
- var start = new DateTime();
- var end = new DateTime();
- var employeeWarning = "";
- var psCodeZeroCheck = "";
- var jobIdZeroCheck = "";
- var leftWorkCheckExist = "";
- var dateValid = "";
- var getWorkDateHide = "";
- var contractExistCheck = "";
- var workingHoursCheck = "";
- var leftValidForEndMonth = false;
- var leftValid = true;
- var contractExist = false;
-
- if ((string.IsNullOrWhiteSpace(employeeDetails.NationalCode) && employeeDetails.Nationality == "ایرانی")
- || string.IsNullOrWhiteSpace(employeeDetails.Address)
- || string.IsNullOrWhiteSpace(employeeDetails.City)
- || string.IsNullOrWhiteSpace(employeeDetails.State)
- || string.IsNullOrWhiteSpace(employeeDetails.MaritalStatus))
- employeeWarning = $"برای {employeeName} موارد اجباری مانند کدملی و وضعیت تاهل و نشانی را بررسی کنید";
-
- if (personelCode == 0)
- psCodeZeroCheck = $"برای {employeeName} در این کارگاه کد پرسنلی مشخص نشده است";
- if (jobId == 0)
- jobIdZeroCheck = $" برای {employeeName} در این کارگاه سمت مشخص نشده است";
-
- #region leftworkCheck
-
- var leftWorkSerachModel = new LeftWorkSearchModel
- {
- EmployeeId = employeeId,
- WorkshopId = workshopId
- };
-
- start = startContract.ToGeorgianDateTime();
- end = endContract.ToGeorgianDateTime();
-
- var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
- if (leftWoekSerchResult.Count > 0)
- {
- getWorkDateHide = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
- var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
- x.LeftWorkDateGr > start);
-
- if (check != null)
- {
- var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
-
- if (leftWorkDate != "1500/01/01")
- {
- var endOfmonth = leftWorkDate.FindeEndOfMonth();
- var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
- if (end <= endOfMonthGr)
- {
- }
- else
- {
- leftWorkCheckExist =
- $" با تو جه به ترک کار پرسنل در تاریخ {leftWorkDate} می توانید تا تاریخ {endOfmonth} قرارداد ایجاد نمایید";
- leftValidForEndMonth = true;
- }
- }
- }
- else
- {
- leftWorkCheckExist = $" برای {employeeName} در بازه تاریخ وارد شده شروع به کار وجود ندارد";
- leftValid = false;
- }
- }
-
- #endregion
-
-
- contractExistCheck = _contractRepository.ContractStartCheck(start, end, employeeId, workshopId);
- if (start > end)
- dateValid = "تاریخ شروع از تاریخ پایان بزرگتر است";
-
- if (start == end)
- dateValid = "تاریخ شروع و تاریخ پایان برابر وارد شده اند";
-
-
- if (!string.IsNullOrWhiteSpace(dateValid))
- {
- leftWorkCheckExist = "";
- contractExistCheck = "";
- }
-
- if (string.IsNullOrWhiteSpace(workingHoursResult.ShiftWork))
- workingHoursCheck = "ساعت کار را تنظیم نمایید";
- if (leftValid && (!string.IsNullOrWhiteSpace(psCodeZeroCheck)
- || !string.IsNullOrWhiteSpace(jobIdZeroCheck) || !string.IsNullOrWhiteSpace(employeeWarning)
- || leftValidForEndMonth
- || !string.IsNullOrWhiteSpace(dateValid) || !string.IsNullOrWhiteSpace(workingHoursCheck)))
- return new JsonResult(new
- {
- success = false,
- errPersonnelCodeZeroCheck = psCodeZeroCheck,
- errJobIdZeroCheck = jobIdZeroCheck,
- errLeftWorkExistCheck = leftWorkCheckExist,
- errLeftValidForEndMonth = leftValidForEndMonth,
-
- errDateValidCheck = dateValid,
- errEmployeeName = employeeName,
- errWorkingHoursCheck = workingHoursCheck,
- errEmployeeWarning = employeeWarning
- });
- //var alarm = new AlarmViewModel()
- //{
- // PersonnelCodeZeroCheck = psCodeZeroCheck,
- // JobIdZeroCheck = jobIdZeroCheck,
- // LeftWorkExistCheck = leftWorkCheckExist,
- // ContractExistCheck = contractExistCheck,
- // DateValidCheck = dateValid,
- // EmployeeName = employeeName,
- // WorkingHoursCheck = workingHoursCheck
- //};
- //return Partial("Alert", alarm);
- if (!string.IsNullOrWhiteSpace(contractExistCheck)) contractExist = true;
-
- return new JsonResult(new
- {
- success = true,
- getWorkDate = getWorkDateHide,
- errContractExist = contractExist,
- errLeftValid = leftValid
- });
- }
-
- public IActionResult OnGetAlertModal(string errPsCodeZeroCheck, string errJobIdZeroCheck, string errDateValid,
- string errLeftWorkExistCheck, string errEmployeeName, string errWorkingHoursCheck, bool errLeftValidForEndMonth,
- string errEmployeeWarning)
- {
- var alarm = new AlarmViewModel
- {
- PersonnelCodeZeroCheck = errPsCodeZeroCheck,
- JobIdZeroCheck = errJobIdZeroCheck,
- LeftWorkExistCheck = errLeftValidForEndMonth ? errLeftWorkExistCheck : "",
- DateValidCheck = errDateValid,
- EmployeeName = errEmployeeName,
- WorkingHoursCheck = errWorkingHoursCheck,
- EmployeeWarning = errEmployeeWarning
- };
- return Partial("Alert", alarm);
- }
-
- #region CorrectNullSHift
-
- public IActionResult OnGetCorrection()
- {
- //var contractList = _workingHoursTempApplication.Correct();
- // int i = 1;
- // foreach (var item in contractList)
- // {
-
- // var result = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(item.WorkshopIds, item.EmployeeId);
- // 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);
-
- // 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 = _contractApplication.EditCompute(item);
-
- // _workingHoursApplication.removeWorkingHours(item.Id);
- // 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;
- // _workingHoursApplication.CreateNew(result);
-
- // Console.WriteLine(i +"- finish no : " + item.ContractNo);
- // i++;
- // }
-
- return RedirectToPage("./Index");
- }
-
- #endregion
-
- #region CreateContract
-
- public IActionResult OnPostCreateContract(List createContarctList)
- {
- var contractCount = createContarctList.Count;
- var successProcess = 0;
- double maxNumber = contractCount;
- var i = 1;
- if (contractCount > 0)
- {
- var yearlysalaryList = _yearlySalaryRepository.GetYearlySalary();
- var yearlySalarId = yearlysalaryList.FirstOrDefault().Id;
-
- foreach (var item in createContarctList)
- {
- var result =
- _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(item.WorkshopId,
- item.EmployeeId);
- result.EmployeeId = item.EmployeeId;
- result.WorkshopId = item.WorkshopId;
- result.ContarctStart = item.ContractStart;
- result.ContractEnd = item.ContractEnd;
- var leftWorkSerachModel = new LeftWorkSearchModel
- {
- EmployeeId = item.EmployeeId,
- WorkshopId = item.WorkshopId
- };
- var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
- var getWorkDateHide = leftWoekSerchResult?.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()
- ?.StartWorkDate;
- result.GetWorkDate = getWorkDateHide;
- result.GetWorkDateHide = getWorkDateHide;
- var compute = MandatoryHours(result);
- item.DayliWage = compute.SalaryCompute;
- item.GetWorkDate = getWorkDateHide;
- item.ConsumableItems = compute.ConsumableItems;
- item.HousingAllowance = compute.HousingAllowance;
- item.FamilyAllowance = compute.FamilyAllowance;
- item.WorkingHoursWeekly = compute.SumTime44;
- item.NumberOfWorkingDays = compute.NumberOfWorkingDays;
- item.NumberOfFriday = compute.NumberOfFriday;
- item.TotalHoursesH = compute.TotalHoursesH;
- item.TotalHoursesM = compute.TotalHoursesM;
- item.OverTimeWorkH = compute.OverTimeWorkH;
- item.OverTimeWorkM = compute.OverTimeWorkM;
- item.OverNightWorkH = compute.OverNightWorkH;
- item.OverNightWorkM = compute.OverNightWorkM;
- item.WorkshopAddress2 = result.WorkshopAddress2;
-
- item.YearlySalaryId = yearlySalarId;
- var createContractResult = _contractApplication.CreateNew(item);
- var percent = i / maxNumber * 100;
- _hubContext.Clients.Group(CreateContractTarckingHub.GetGroupName(item.WorkshopId))
- .SendAsync("showStatus", (int)percent);
- if (createContractResult.IsSuccedded)
- successProcess += 1;
-
-
- i++;
- }
-
- if (successProcess == contractCount)
- {
- return new JsonResult(new
- {
- isSuccess = true,
- contractCount = successProcess
- });
- }
-
- var failds = contractCount - successProcess;
- return new JsonResult(new
- {
- isSuccess = false,
- contractCount = failds
- });
- }
-
- return new JsonResult(new
- {
- isSuccess = false,
- contractCount = 0
- });
- }
-
- #endregion
-
- public IActionResult OnGetCreateGroupCompute(CreateWorkingHoursTemp command)
- {
- var result =
- _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(command.WorkshopId,
- command.EmployeeId);
- result.EmployeeId = command.EmployeeId;
- result.WorkshopId = command.WorkshopId;
- result.ContarctStart = command.ContarctStart;
- //result.ContractStartGr = command.ContarctStart.ToGeorgianDateTime();
- result.ContractEnd = command.ContractEnd;
- //result.ContractEndGr = command.ContractEnd.ToGeorgianDateTime();
-
- if (result.ShiftWork != "")
- {
- var leftWorkSerachModel = new LeftWorkSearchModel
- {
- EmployeeId = command.EmployeeId,
- WorkshopId = command.WorkshopId
- };
- var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
- var getWorkDateHide = leftWoekSerchResult?.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
- result.GetWorkDate = getWorkDateHide;
- result.GetWorkDateHide = getWorkDateHide;
- var compute = MandatoryHours(result);
- return new JsonResult(new
- {
- isSuccess = true,
- compute.NumberOfWorkingDays,
- compute.NumberOfFriday,
- compute.TotalHoursesH,
- compute.TotalHoursesM,
- OverTimeWorkH = compute.OverNightWorkH,
- compute.OverTimeWorkM,
- compute.OverNightWorkH,
- compute.OverNightWorkM,
- WeeklyWorkingTime = $"{compute.weeklyTime}",
- compute.SumTime44,
- compute.SalaryCompute,
- compute.ConsumableItems,
- compute.HousingAllowance,
- compute.FamilyAllowance,
- getWorkDate = getWorkDateHide
- });
- }
-
- return new JsonResult(new
- {
- isSuccess = false
- });
- }
-
- #region clockSave
-
- public IActionResult OnPostCreateWorkingHoursTemp(CreateWorkingHoursTemp command)
- {
- #region WeekEmptyValidation
-
- if (command.ShiftWork == "4")
- {
- //week1
-
- #region week1
-
- var week1Valid = true;
- if (command.Shanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Shanbe1)) part1 = false;
-
- if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Shanbe1))
- part2 = false;
-
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.TowShifts1Shanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2Shanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1Shanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2Shanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.YekShanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe1))
- part2 = false;
-
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1YekShanbe1) ||
- !Tools.CheckValidHm(command.SingleShift2YekShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1YekShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2YekShanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.DoShanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe1))
- part2 = false;
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1DoShanbe1) ||
- !Tools.CheckValidHm(command.SingleShift1DoShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1DoShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2DoShanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.SeShanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe1))
- part2 = false;
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1SeShanbe1) ||
- !Tools.CheckValidHm(command.SingleShift2SeShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1SeShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2SeShanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.CheharShanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe1))
- part2 = false;
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1CheharShanbe1) ||
- !Tools.CheckValidHm(command.SingleShift2CheharShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1CheharShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2CheharShanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.PanjShanbe1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe1))
- part2 = false;
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1PanjShanbe1) ||
- !Tools.CheckValidHm(command.SingleShift2PanjShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts1PanjShanbe1) ||
- !Tools.CheckValidHm(command.TowShifts2PanjShanbe1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.Jome1)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Jome1) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Jome1))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Jome1) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Jome1))
- part2 = false;
-
- if (!part1 && !part2)
- week1Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Jome1) ||
- !Tools.CheckValidHm(command.SingleShift2Jome1) ||
- !Tools.CheckValidHm(command.TowShifts1Jome1) ||
- !Tools.CheckValidHm(command.TowShifts2Jome1))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = false,
- week2Valid = true,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- #endregion
-
- //week2
-
- #region Week2
-
- var week2Valid = true;
- if (command.Shanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Shanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Shanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Shanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2Shanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1Shanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2Shanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.YekShanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1YekShanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2YekShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1YekShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2YekShanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.DoShanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1DoShanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2DoShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1DoShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2DoShanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.SeShanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1SeShanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2SeShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1SeShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2SeShanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.CheharShanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1CheharShanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2CheharShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1CheharShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2CheharShanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.PanjShanbe2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1PanjShanbe2) ||
- !Tools.CheckValidHm(command.SingleShift2PanjShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts1PanjShanbe2) ||
- !Tools.CheckValidHm(command.TowShifts2PanjShanbe2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- if (command.Jome2)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Jome2) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Jome2))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Jome2) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Jome2))
- part2 = false;
-
- if (!part1 && !part2)
- week2Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Jome2) ||
- !Tools.CheckValidHm(command.SingleShift2Jome2) ||
- !Tools.CheckValidHm(command.TowShifts1Jome2) ||
- !Tools.CheckValidHm(command.TowShifts2Jome2))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = false,
- week3Valid = true,
- week4Valid = true
- });
- }
-
- #endregion
-
- //week3
-
- #region Week3
-
- var week3Valid = true;
- if (command.Shanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Shanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Shanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Shanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2Shanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1Shanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2Shanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.YekShanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1YekShanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2YekShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1YekShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2YekShanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.DoShanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1DoShanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2DoShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1DoShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2DoShanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.SeShanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1SeShanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2SeShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1SeShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2SeShanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.CheharShanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1CheharShanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2CheharShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1CheharShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2CheharShanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.PanjShanbe3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1PanjShanbe3) ||
- !Tools.CheckValidHm(command.SingleShift2PanjShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts1PanjShanbe3) ||
- !Tools.CheckValidHm(command.TowShifts2PanjShanbe3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- if (command.Jome3)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Jome3) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Jome3))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Jome3) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Jome3))
- part2 = false;
-
- if (!part1 && !part2)
- week3Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Jome3) ||
- !Tools.CheckValidHm(command.SingleShift2Jome3) ||
- !Tools.CheckValidHm(command.TowShifts1Jome3) ||
- !Tools.CheckValidHm(command.TowShifts2Jome3))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = false,
- week4Valid = true
- });
- }
-
- #endregion
-
- //week4
-
- #region Week4
-
- var week4Valid = true;
- if (command.Shanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Shanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Shanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Shanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2Shanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1Shanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2Shanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.YekShanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1YekShanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2YekShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1YekShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2YekShanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.DoShanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1DoShanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2DoShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1DoShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2DoShanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.SeShanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1SeShanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2SeShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1SeShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2SeShanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.CheharShanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1CheharShanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2CheharShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1CheharShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2CheharShanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.PanjShanbe4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1PanjShanbe4) ||
- !Tools.CheckValidHm(command.SingleShift2PanjShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts1PanjShanbe4) ||
- !Tools.CheckValidHm(command.TowShifts2PanjShanbe4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- if (command.Jome4)
- {
- var part1 = true;
- var part2 = true;
- if (string.IsNullOrWhiteSpace(command.SingleShift1Jome4) ||
- string.IsNullOrWhiteSpace(command.SingleShift2Jome4))
- part1 = false;
- if (string.IsNullOrWhiteSpace(command.TowShifts1Jome4) ||
- string.IsNullOrWhiteSpace(command.TowShifts2Jome4))
- part2 = false;
-
- if (!part1 && !part2)
- week4Valid = false;
- if (!Tools.CheckValidHm(command.SingleShift1Jome4) ||
- !Tools.CheckValidHm(command.SingleShift2Jome4) ||
- !Tools.CheckValidHm(command.TowShifts1Jome4) ||
- !Tools.CheckValidHm(command.TowShifts2Jome4))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid = true,
- week2Valid = true,
- week3Valid = true,
- week4Valid = false
- });
- }
-
- #endregion
-
- if (!week1Valid || !week2Valid || !week3Valid || !week4Valid)
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "4",
- week1Valid,
- week2Valid,
- week3Valid,
- week4Valid
- });
- }
- else if (command.ShiftWork == "5")
- {
- if (string.IsNullOrWhiteSpace(command.Start1224) || string.IsNullOrWhiteSpace(command.End1224))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "5"
- });
- }
- else if (command.ShiftWork == "6")
- {
- if (string.IsNullOrWhiteSpace(command.Start2424) || string.IsNullOrWhiteSpace(command.End2424))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "6"
- });
- }
- else if (command.ShiftWork == "7")
- {
- if (string.IsNullOrWhiteSpace(command.Start1236) || string.IsNullOrWhiteSpace(command.End1236))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "7"
- });
- }
- else if (command.ShiftWork == "8")
- {
- if (string.IsNullOrWhiteSpace(command.Start2448) || string.IsNullOrWhiteSpace(command.End2448))
- return new JsonResult(new
- {
- isSuccess = false,
- shiftErr = "7"
- });
- }
-
- #endregion
-
- var result = _workingHoursTempApplication.Create(command);
- var compute = MandatoryHours(command);
- return new JsonResult(new
- {
- isSuccess = result.IsSuccedded,
- compute.NumberOfWorkingDays,
- compute.NumberOfFriday,
- compute.TotalHoursesH,
- compute.TotalHoursesM,
- OverTimeWorkH = compute.OverNightWorkH,
- compute.OverTimeWorkM,
- compute.OverNightWorkH,
- compute.OverNightWorkM,
- WeeklyWorkingTime = $"{compute.weeklyTime}",
- compute.SumTime44,
- compute.SalaryCompute,
- compute.ConsumableItems,
- compute.HousingAllowance,
- compute.FamilyAllowance
- });
- }
-
- #endregion
-
- #region TestCompute
-
- [SuppressMessage("ReSharper.DPA", "DPA0009: High execution time of DB command", MessageId = "time: 1490ms")]
- public IActionResult OnPostCompute(CreateWorkingHoursTemp command)
- {
- var result = MandatoryHours(command);
- return new JsonResult(result);
- //string leftWorkStartDate = "";
- //bool exsit = false;
- //var serachModel = new LeftWorkSearchModel()
- //{
- // EmployeeId = command.EmployeeId,
- // WorkshopId = command.WorkshopId,
-
- //};
- //var leftWoekSerchResult = _leftWorkApplication.search(serachModel);
- //leftWorkStartDate = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
- //if (leftWoekSerchResult.Count > 0)
- //{
- // var start = command.ContarctStart.ToGeorgianDateTime();
- // var end = command.ContractEnd.ToGeorgianDateTime();
- // var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
- // x.LeftWorkDateGr > start);
- // if (check != null)
- // {
- // var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
- // if (leftWorkDate != "1500/01/01")
- // {
- // var endOfmonth = leftWorkDate.FindeEndOfMonth();
- // var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
- // if (end <= endOfMonthGr)
- // exsit = true;
- // }
- // else
- // {
- // exsit = true;
- // }
-
- // }
-
-
- //}
-
- //if (!string.IsNullOrEmpty(leftWorkStartDate))
- //{
- // if (exsit)
- // {
- // command.GetWorkDate = leftWorkStartDate;
- // command.GetWorkDateHide = leftWorkStartDate;
- // var result = MandatoryHours(command);
- // return new JsonResult(result);
- // }
- // else
- // {
- // return new JsonResult(new
- // {
- // checkDate = false,
- // });
- // }
- //}
- //else
- //{
- // return new JsonResult(new
- // {
- // checkExist = false,
- // });
- //}
- }
-
- #region MandatoryCompute
-
- public ComputingViewModel MandatoryHours(CreateWorkingHoursTemp command)
- {
- #region entityes
-
- var Notholiday = string.Empty;
- var Holidays = string.Empty;
- var SingleShiftResult = string.Empty;
- var shift1Hourse = "0";
- var shift1Minuts = "0";
- var shift1HolidayHours = "0";
- var shift1HolidayMinuts = "0";
- var overMandatoryHours = "0";
- var overMandatoryMinuts = "0";
- var shiftOver22Hours = "0";
- var shiftOver22Minuts = "0";
- var SumWorkeTime = string.Empty;
- var weeklyTime = new TimeSpan();
- var FridayStartToEnd = 0;
- var overNight = false;
- var overNightTow = false;
- var singleOver24 = new TimeSpan();
- var towOver24 = new TimeSpan();
- var panjshanbehOver24 = new TimeSpan();
- var panjshanbehOver24Tow = new TimeSpan();
- var rest = new TimeSpan();
- var Over22 = new TimeSpan();
-
- var starTimeSingel1 = new DateTime();
- var endTimeSingel2 = new DateTime();
- var singleShiftOver24 = new DateTime();
- var startTimeTowSh1 = new DateTime();
- var endTimeTowSh2 = new DateTime();
- var nightWork22 = new DateTime();
- var nightWork6 = new DateTime();
-
- var rotatingResultList = new List();
-
-
- singleShiftOver24 = Convert.ToDateTime("00:00");
- nightWork22 = Convert.ToDateTime("22:00");
- nightWork6 = Convert.ToDateTime("06:00");
-
- var rest0 = new TimeSpan();
- var rest1 = new TimeSpan();
- var rest2 = new TimeSpan();
- var rest3 = new TimeSpan();
- var rest4 = new TimeSpan();
- var rest5 = new TimeSpan();
- var rest6 = new TimeSpan();
-
- var rest0w1 = new TimeSpan();
- var rest1w1 = new TimeSpan();
- var rest2w1 = new TimeSpan();
- var rest3w1 = new TimeSpan();
- var rest4w1 = new TimeSpan();
- var rest5w1 = new TimeSpan();
- var rest6w1 = new TimeSpan();
-
- var rest0w2 = new TimeSpan();
- var rest1w2 = new TimeSpan();
- var rest2w2 = new TimeSpan();
- var rest3w2 = new TimeSpan();
- var rest4w2 = new TimeSpan();
- var rest5w2 = new TimeSpan();
- var rest6w2 = new TimeSpan();
-
- var rest0w3 = new TimeSpan();
- var rest1w3 = new TimeSpan();
- var rest2w3 = new TimeSpan();
- var rest3w3 = new TimeSpan();
- var rest4w3 = new TimeSpan();
- var rest5w3 = new TimeSpan();
- var rest6w3 = new TimeSpan();
-
- var rest0w4 = new TimeSpan();
- var rest1w4 = new TimeSpan();
- var rest2w4 = new TimeSpan();
- var rest3w4 = new TimeSpan();
- var rest4w4 = new TimeSpan();
- var rest5w4 = new TimeSpan();
- var rest6w4 = new TimeSpan();
-
- var SumSingle = new TimeSpan();
- var SumTow = new TimeSpan();
- var SumSingleHourses = 0;
- var SumTowHourses = 0;
-
- var sumRest = new TimeSpan();
- var SumComplexDays = 0;
- var OfficialHoliday = 0;
-
- var conStartGr = command.ContarctStart.ToGeorgianDateTime();
- var conEndGr = command.ContractEnd.ToGeorgianDateTime();
-
- #endregion
-
- #region SumRestTimesOneShift
-
- switch (command.ShiftWork)
- {
- case "1":
- case "2":
- command.RestTime = command.RestTime == "0" ? "00" : command.RestTime;
- command.RestTimeYekshanbeh = command.RestTimeYekshanbeh == "0" ? "00" : command.RestTimeYekshanbeh;
- command.RestTimeDoshanbeh = command.RestTimeDoshanbeh == "0" ? "00" : command.RestTimeDoshanbeh;
- command.RestTimeSeshanbeh = command.RestTimeSeshanbeh == "0" ? "00" : command.RestTimeSeshanbeh;
- command.RestTimeCheharshanbeh =
- command.RestTimeCheharshanbeh == "0" ? "00" : command.RestTimeCheharshanbeh;
- command.RestTimePanjshanbeh = command.RestTimePanjshanbeh == "0" ? "00" : command.RestTimePanjshanbeh;
- command.RestTimeJomeh = command.RestTimeJomeh == "0" ? "00" : command.RestTimeJomeh;
- command.RestTimeMin = command.RestTimeMin == "0" ? "00" : command.RestTimeMin;
- command.RestTimeYekshanbehMin =
- command.RestTimeYekshanbehMin == "0" ? "00" : command.RestTimeYekshanbehMin;
- command.RestTimeDoshanbehMin =
- command.RestTimeDoshanbehMin == "0" ? "00" : command.RestTimeDoshanbehMin;
- command.RestTimeSeshanbehMin =
- command.RestTimeSeshanbehMin == "0" ? "00" : command.RestTimeSeshanbehMin;
- command.RestTimeCheharshanbehMin =
- command.RestTimeCheharshanbehMin == "0" ? "00" : command.RestTimeCheharshanbehMin;
- command.RestTimePanjshanbehMin =
- command.RestTimePanjshanbehMin == "0" ? "00" : command.RestTimePanjshanbehMin;
- command.RestTimeJomehMin = command.RestTimeJomehMin == "0" ? "00" : command.RestTimeJomehMin;
-
- rest0 = TimeSpan.Parse($"{command.RestTime}:{command.RestTimeMin}");
- sumRest = sumRest.Add(rest0);
- rest1 = TimeSpan.Parse($"{command.RestTimeYekshanbeh}:{command.RestTimeYekshanbehMin}");
- sumRest = sumRest.Add(rest1);
- rest2 = TimeSpan.Parse($"{command.RestTimeDoshanbeh}:{command.RestTimeDoshanbehMin}");
- sumRest = sumRest.Add(rest2);
- rest3 = TimeSpan.Parse($"{command.RestTimeSeshanbeh}:{command.RestTimeSeshanbehMin}");
- sumRest = sumRest.Add(rest3);
- rest4 = TimeSpan.Parse($"{command.RestTimeCheharshanbeh}:{command.RestTimeCheharshanbehMin}");
- sumRest = sumRest.Add(rest4);
- rest5 = TimeSpan.Parse($"{command.RestTimePanjshanbeh}:{command.RestTimePanjshanbehMin}");
- sumRest = sumRest.Add(rest5);
- rest6 = TimeSpan.Parse($"{command.RestTimeJomeh}:{command.RestTimeJomehMin}");
- sumRest = sumRest.Add(rest6);
- break;
-
- case "4":
- //week1
- command.RestTimeShanbe1 = command.RestTimeShanbe1 == "0" ? "00" : command.RestTimeShanbe1;
- command.RestTimeShanbe1Min = command.RestTimeShanbe1Min == "0" ? "00" : command.RestTimeShanbe1Min;
- command.RestTimeYekShanbe1 = command.RestTimeYekShanbe1 == "0" ? "00" : command.RestTimeYekShanbe1;
- command.RestTimeYekShanbe1Min =
- command.RestTimeYekShanbe1Min == "0" ? "00" : command.RestTimeYekShanbe1Min;
- command.RestTimeDoShanbe1 = command.RestTimeDoShanbe1 == "0" ? "00" : command.RestTimeDoShanbe1;
- command.RestTimeDoShanbe1Min =
- command.RestTimeDoShanbe1Min == "0" ? "00" : command.RestTimeDoShanbe1Min;
- command.RestTimeSeShanbe1 = command.RestTimeSeShanbe1 == "0" ? "00" : command.RestTimeSeShanbe1;
- command.RestTimeSeShanbe1Min =
- command.RestTimeSeShanbe1Min == "0" ? "00" : command.RestTimeSeShanbe1Min;
- command.RestTimeCheharShanbe1 =
- command.RestTimeCheharShanbe1 == "0" ? "00" : command.RestTimeCheharShanbe1;
- command.RestTimeCheharShanbe1Min =
- command.RestTimeCheharShanbe1Min == "0" ? "00" : command.RestTimeCheharShanbe1Min;
- command.RestTimePanjShanbe1 = command.RestTimePanjShanbe1 == "0" ? "00" : command.RestTimePanjShanbe1;
- command.RestTimePanjShanbe1Min =
- command.RestTimePanjShanbe1Min == "0" ? "00" : command.RestTimePanjShanbe1Min;
- command.RestTimeJome1 = command.RestTimeJome1 == "0" ? "00" : command.RestTimeJome1;
- command.RestTimeJome1Min = command.RestTimeJome1Min == "0" ? "00" : command.RestTimeJome1Min;
-
- //week2
- command.RestTimeShanbe2 = command.RestTimeShanbe2 == "0" ? "00" : command.RestTimeShanbe2;
- command.RestTimeShanbe2Min = command.RestTimeShanbe2Min == "0" ? "00" : command.RestTimeShanbe2Min;
- command.RestTimeYekShanbe2 = command.RestTimeYekShanbe2 == "0" ? "00" : command.RestTimeYekShanbe2;
- command.RestTimeYekShanbe2Min =
- command.RestTimeYekShanbe2Min == "0" ? "00" : command.RestTimeYekShanbe2Min;
- command.RestTimeDoShanbe2 = command.RestTimeDoShanbe2 == "0" ? "00" : command.RestTimeDoShanbe2;
- command.RestTimeDoShanbe2Min =
- command.RestTimeDoShanbe2Min == "0" ? "00" : command.RestTimeDoShanbe2Min;
- command.RestTimeSeShanbe2 = command.RestTimeSeShanbe2 == "0" ? "00" : command.RestTimeSeShanbe2;
- command.RestTimeSeShanbe2Min =
- command.RestTimeSeShanbe2Min == "0" ? "00" : command.RestTimeSeShanbe2Min;
- command.RestTimeCheharShanbe2 =
- command.RestTimeCheharShanbe2 == "0" ? "00" : command.RestTimeCheharShanbe2;
- command.RestTimeCheharShanbe2Min =
- command.RestTimeCheharShanbe2Min == "0" ? "00" : command.RestTimeCheharShanbe2Min;
- command.RestTimePanjShanbe2 = command.RestTimePanjShanbe2 == "0" ? "00" : command.RestTimePanjShanbe2;
- command.RestTimePanjShanbe2Min =
- command.RestTimePanjShanbe2Min == "0" ? "00" : command.RestTimePanjShanbe2Min;
- command.RestTimeJome2 = command.RestTimeJome2 == "0" ? "00" : command.RestTimeJome2;
- command.RestTimeJome2Min = command.RestTimeJome2Min == "0" ? "00" : command.RestTimeJome2Min;
-
- //week3
- command.RestTimeShanbe3 = command.RestTimeShanbe3 == "0" ? "00" : command.RestTimeShanbe3;
- command.RestTimeShanbe3Min = command.RestTimeShanbe3Min == "0" ? "00" : command.RestTimeShanbe3Min;
- command.RestTimeYekShanbe3 = command.RestTimeYekShanbe3 == "0" ? "00" : command.RestTimeYekShanbe3;
- command.RestTimeYekShanbe3Min =
- command.RestTimeYekShanbe3Min == "0" ? "00" : command.RestTimeYekShanbe3Min;
- command.RestTimeDoShanbe3 = command.RestTimeDoShanbe3 == "0" ? "00" : command.RestTimeDoShanbe3;
- command.RestTimeDoShanbe3Min =
- command.RestTimeDoShanbe3Min == "0" ? "00" : command.RestTimeDoShanbe3Min;
- command.RestTimeSeShanbe3 = command.RestTimeSeShanbe3 == "0" ? "00" : command.RestTimeSeShanbe3;
- command.RestTimeSeShanbe3Min =
- command.RestTimeSeShanbe3Min == "0" ? "00" : command.RestTimeSeShanbe3Min;
- command.RestTimeCheharShanbe3 =
- command.RestTimeCheharShanbe3 == "0" ? "00" : command.RestTimeCheharShanbe3;
- command.RestTimeCheharShanbe3Min =
- command.RestTimeCheharShanbe3Min == "0" ? "00" : command.RestTimeCheharShanbe3Min;
- command.RestTimePanjShanbe3 = command.RestTimePanjShanbe3 == "0" ? "00" : command.RestTimePanjShanbe3;
- command.RestTimePanjShanbe3Min =
- command.RestTimePanjShanbe3Min == "0" ? "00" : command.RestTimePanjShanbe3Min;
- command.RestTimeJome3 = command.RestTimeJome3 == "0" ? "00" : command.RestTimeJome3;
- command.RestTimeJome3Min = command.RestTimeJome3Min == "0" ? "00" : command.RestTimeJome3Min;
-
- //week4
- command.RestTimeShanbe4 = command.RestTimeShanbe4 == "0" ? "00" : command.RestTimeShanbe4;
- command.RestTimeShanbe4Min = command.RestTimeShanbe4Min == "0" ? "00" : command.RestTimeShanbe4Min;
- command.RestTimeYekShanbe4 = command.RestTimeYekShanbe4 == "0" ? "00" : command.RestTimeYekShanbe4;
- command.RestTimeYekShanbe4Min =
- command.RestTimeYekShanbe4Min == "0" ? "00" : command.RestTimeYekShanbe4Min;
- command.RestTimeDoShanbe4 = command.RestTimeDoShanbe4 == "0" ? "00" : command.RestTimeDoShanbe4;
- command.RestTimeDoShanbe4Min =
- command.RestTimeDoShanbe4Min == "0" ? "00" : command.RestTimeDoShanbe4Min;
- command.RestTimeSeShanbe4 = command.RestTimeSeShanbe4 == "0" ? "00" : command.RestTimeSeShanbe4;
- command.RestTimeSeShanbe4Min =
- command.RestTimeSeShanbe4Min == "0" ? "00" : command.RestTimeSeShanbe4Min;
- command.RestTimeCheharShanbe4 =
- command.RestTimeCheharShanbe4 == "0" ? "00" : command.RestTimeCheharShanbe4;
- command.RestTimeCheharShanbe4Min =
- command.RestTimeCheharShanbe4Min == "0" ? "00" : command.RestTimeCheharShanbe4Min;
- command.RestTimePanjShanbe4 = command.RestTimePanjShanbe4 == "0" ? "00" : command.RestTimePanjShanbe4;
- command.RestTimePanjShanbe4Min =
- command.RestTimePanjShanbe4Min == "0" ? "00" : command.RestTimePanjShanbe4Min;
- command.RestTimeJome4 = command.RestTimeJome4 == "0" ? "00" : command.RestTimeJome4;
- command.RestTimeJome4Min = command.RestTimeJome4Min == "0" ? "00" : command.RestTimeJome4Min;
-
- // sumrest week1
- rest0w1 = TimeSpan.Parse($"{command.RestTimeShanbe1}:{command.RestTimeShanbe1Min}");
- rest1w1 = TimeSpan.Parse($"{command.RestTimeYekShanbe1}:{command.RestTimeYekShanbe1Min}");
- rest2w1 = TimeSpan.Parse($"{command.RestTimeDoShanbe1}:{command.RestTimeDoShanbe1Min}");
- rest3w1 = TimeSpan.Parse($"{command.RestTimeSeShanbe1}:{command.RestTimeSeShanbe1Min}");
- rest4w1 = TimeSpan.Parse($"{command.RestTimeCheharShanbe1}:{command.RestTimeCheharShanbe1Min}");
- rest5w1 = TimeSpan.Parse($"{command.RestTimePanjShanbe1}:{command.RestTimePanjShanbe1Min}");
- rest6w1 = TimeSpan.Parse($"{command.RestTimeJome1}:{command.RestTimeJome1Min}");
-
- // sumrest week2
- rest0w2 = TimeSpan.Parse($"{command.RestTimeShanbe2}:{command.RestTimeShanbe2Min}");
- rest1w2 = TimeSpan.Parse($"{command.RestTimeYekShanbe2}:{command.RestTimeYekShanbe2Min}");
- rest2w2 = TimeSpan.Parse($"{command.RestTimeDoShanbe2}:{command.RestTimeDoShanbe2Min}");
- rest3w2 = TimeSpan.Parse($"{command.RestTimeSeShanbe2}:{command.RestTimeSeShanbe2Min}");
- rest4w2 = TimeSpan.Parse($"{command.RestTimeCheharShanbe2}:{command.RestTimeCheharShanbe2Min}");
- rest5w2 = TimeSpan.Parse($"{command.RestTimePanjShanbe2}:{command.RestTimePanjShanbe2Min}");
- rest6w2 = TimeSpan.Parse($"{command.RestTimeJome2}:{command.RestTimeJome2Min}");
-
- // sumrest week3
- rest0w3 = TimeSpan.Parse($"{command.RestTimeShanbe3}:{command.RestTimeShanbe3Min}");
- rest1w3 = TimeSpan.Parse($"{command.RestTimeYekShanbe3}:{command.RestTimeYekShanbe3Min}");
- rest2w3 = TimeSpan.Parse($"{command.RestTimeDoShanbe3}:{command.RestTimeDoShanbe3Min}");
- rest3w3 = TimeSpan.Parse($"{command.RestTimeSeShanbe3}:{command.RestTimeSeShanbe3Min}");
- rest4w3 = TimeSpan.Parse($"{command.RestTimeCheharShanbe3}:{command.RestTimeCheharShanbe3Min}");
- rest5w3 = TimeSpan.Parse($"{command.RestTimePanjShanbe3}:{command.RestTimePanjShanbe3Min}");
- rest6w3 = TimeSpan.Parse($"{command.RestTimeJome3}:{command.RestTimeJome3Min}");
-
- // sumrest week4
- rest0w4 = TimeSpan.Parse($"{command.RestTimeShanbe4}:{command.RestTimeShanbe4Min}");
- rest1w4 = TimeSpan.Parse($"{command.RestTimeYekShanbe4}:{command.RestTimeYekShanbe4Min}");
- rest2w4 = TimeSpan.Parse($"{command.RestTimeDoShanbe4}:{command.RestTimeDoShanbe4Min}");
- rest3w4 = TimeSpan.Parse($"{command.RestTimeSeShanbe4}:{command.RestTimeSeShanbe4Min}");
- rest4w4 = TimeSpan.Parse($"{command.RestTimeCheharShanbe4}:{command.RestTimeCheharShanbe4Min}");
- rest5w4 = TimeSpan.Parse($"{command.RestTimePanjShanbe4}:{command.RestTimePanjShanbe4Min}");
- rest6w4 = TimeSpan.Parse($"{command.RestTimeJome4}:{command.RestTimeJome4Min}");
- break;
- }
-
- #endregion
-
- #region SumSingleAndTowShifts
-
- var StartShanbehSingle = Convert.ToDateTime(command.SingleShift1);
- var EndShanbehSingle = Convert.ToDateTime(command.SingleShift2);
- if (StartShanbehSingle > EndShanbehSingle)
- EndShanbehSingle = EndShanbehSingle.AddDays(1);
- var ShanbehSingle = EndShanbehSingle - StartShanbehSingle;
- SumSingle = SumSingle.Add(ShanbehSingle);
-
- var StartYekShanbehSingle = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
- var EndYekShanbehSingle = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
- if (StartYekShanbehSingle > EndYekShanbehSingle)
- EndYekShanbehSingle = EndYekShanbehSingle.AddDays(1);
- var YekShanbehSingle = EndYekShanbehSingle - StartYekShanbehSingle;
- SumSingle = SumSingle.Add(YekShanbehSingle);
-
- var StartDoShanbehSingle = Convert.ToDateTime(command.SingleShift1Doshanbeh);
- var EndDoShanbehSingle = Convert.ToDateTime(command.SingleShift2Doshanbeh);
- if (StartDoShanbehSingle > EndDoShanbehSingle)
- EndDoShanbehSingle = EndDoShanbehSingle.AddDays(1);
- var DoShanbehSingle = EndDoShanbehSingle - StartDoShanbehSingle;
- SumSingle = SumSingle.Add(DoShanbehSingle);
-
-
- var StartSehShanbehSingle = Convert.ToDateTime(command.SingleShift1Seshanbeh);
- var EndSehShanbehSingle = Convert.ToDateTime(command.SingleShift2Seshanbeh);
- if (StartSehShanbehSingle > EndSehShanbehSingle)
- EndSehShanbehSingle = EndSehShanbehSingle.AddDays(1);
- var SeShanbehSingle = EndSehShanbehSingle - StartSehShanbehSingle;
- SumSingle = SumSingle.Add(SeShanbehSingle);
-
- var StartCheharShanbehSingle = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
- var EndCheharShanbehSingle = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
- if (StartCheharShanbehSingle > EndCheharShanbehSingle)
- EndCheharShanbehSingle = EndCheharShanbehSingle.AddDays(1);
- var CheharShanbehSingle = EndCheharShanbehSingle - StartCheharShanbehSingle;
- SumSingle = SumSingle.Add(CheharShanbehSingle);
-
- var StartPanjShanbehSingle = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
- var EndPanjShanbehSingle = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
- if (StartPanjShanbehSingle > EndPanjShanbehSingle)
- EndPanjShanbehSingle = EndPanjShanbehSingle.AddDays(1);
- var PanjShanbehSingle = EndPanjShanbehSingle - StartPanjShanbehSingle;
- SumSingle = SumSingle.Add(PanjShanbehSingle);
-
- var StartJomehSingle = Convert.ToDateTime(command.SingleShift1Jomeh);
- var EndjomehSingle = Convert.ToDateTime(command.SingleShift2Jomeh);
- if (StartJomehSingle > EndjomehSingle)
- EndjomehSingle = EndjomehSingle.AddDays(1);
- var JomehSingle = EndjomehSingle - StartJomehSingle;
- SumSingle = SumSingle.Add(JomehSingle);
- if (command.ShiftWork == "1") SumSingle = SumSingle.Subtract(sumRest);
- //SumSingleHourses = (int)SumSingle.TotalHours;
-
-
- var StartShanbehTow = Convert.ToDateTime(command.TowShifts1);
- var EndShanbehTow = Convert.ToDateTime(command.TowShifts2);
- if (StartShanbehTow > EndShanbehTow)
- EndShanbehTow = EndShanbehTow.AddDays(1);
- var ShanbehTow = EndShanbehTow - StartShanbehTow;
- SumTow = SumTow.Add(ShanbehTow);
-
- var StartYekShanbehTow = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
- var EndYekShanbehTow = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
- if (StartYekShanbehTow > EndYekShanbehTow)
- EndYekShanbehTow = EndYekShanbehTow.AddDays(1);
- var YekShanbehTow = EndYekShanbehTow - StartYekShanbehTow;
- SumTow = SumTow.Add(YekShanbehTow);
-
- var StartDoShanbehTow = Convert.ToDateTime(command.TowShifts1Doshanbeh);
- var EndDoShanbehTow = Convert.ToDateTime(command.TowShifts2Doshanbeh);
- if (StartDoShanbehTow > EndDoShanbehTow)
- EndDoShanbehTow = EndDoShanbehTow.AddDays(1);
- var DoShanbehTow = EndDoShanbehTow - StartDoShanbehTow;
- SumTow = SumTow.Add(DoShanbehTow);
-
-
- var StartSehShanbehTow = Convert.ToDateTime(command.TowShifts1Seshanbeh);
- var EndSehShanbehTow = Convert.ToDateTime(command.TowShifts2Seshanbeh);
- if (StartSehShanbehTow > EndSehShanbehTow)
- EndSehShanbehTow = EndSehShanbehTow.AddDays(1);
- var SeShanbehTow = EndSehShanbehTow - StartSehShanbehTow;
- SumTow = SumTow.Add(SeShanbehTow);
-
- var StartCheharShanbehTow = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
- var EndCheharShanbehTow = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
- if (StartCheharShanbehTow > EndCheharShanbehTow)
- EndCheharShanbehTow = EndCheharShanbehTow.AddDays(1);
- var CheharShanbehTow = EndCheharShanbehTow - StartCheharShanbehTow;
- SumTow = SumTow.Add(CheharShanbehTow);
-
- var StartPanjShanbehTow = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
- var EndPanjShanbehTow = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
- if (StartPanjShanbehTow > EndPanjShanbehTow)
- EndPanjShanbehTow = EndPanjShanbehTow.AddDays(1);
- var PanjShanbehTow = EndPanjShanbehTow - StartPanjShanbehTow;
- SumTow = SumTow.Add(PanjShanbehTow);
-
- var StartJomehTow = Convert.ToDateTime(command.TowShifts1Jomeh);
- var EndjomehTow = Convert.ToDateTime(command.TowShifts2Jomeh);
- if (StartJomehTow > EndjomehTow)
- EndjomehTow = EndjomehTow.AddDays(1);
- var jomehTow = EndjomehTow - StartJomehTow;
- SumTow = SumTow.Add(jomehTow);
-
- //SumTowHourses = (int)SumTow.TotalHours;
-
- #endregion
-
- #region ComplexSumWorkTime
-
- if (command.ShiftWork == "5")
- SumWorkeTime = "24 - 12";
- else if (command.ShiftWork == "6")
- SumWorkeTime = "24 - 24";
- else if (command.ShiftWork == "7")
- SumWorkeTime = "36 - 12";
- else if (command.ShiftWork == "8") SumWorkeTime = "48 - 24";
-
- #endregion
-
- #region OneAndTowShiftsCompute
-
- var dailyFix = TimeSpan.Parse("07:20");
- var notHolidays = new TimeSpan();
- var HolidaysAndNot = new TimeSpan();
- var jomeh = new TimeSpan();
-
- var sdate = command.ContarctStart.ToEnglishNumber();
- var edate = command.ContractEnd.ToEnglishNumber();
- var syear = Convert.ToInt32(sdate.Substring(0, 4));
- var smonth = Convert.ToInt32(sdate.Substring(5, 2));
- var sday = Convert.ToInt32(sdate.Substring(8, 2));
-
- var eyear = Convert.ToInt32(edate.Substring(0, 4));
- var emonth = Convert.ToInt32(edate.Substring(5, 2));
- var eday = Convert.ToInt32(edate.Substring(8, 2));
-
- var d1 = new PersianDateTime(syear, smonth, sday);
- var d2 = new PersianDateTime(eyear, emonth, eday);
- int i = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
- var holidayList = _holidayItemRepository.GetHolidayItem(sdate.Substring(0, 4));
-
- #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)
- if (da.DayOfWeek == "شنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- 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)
- if (da.DayOfWeek == "یکشنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- {
- i1 += 1;
-
- if (command.ShiftWork == "1")
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- var singleSpan1 = endTimeSingel2 - starTimeSingel1;
-
- singleSpan1 = singleSpan1.Subtract(rest1);
-
- notHolidays = notHolidays.Add(singleSpan1);
-
- var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
- //Over22Compute = Over22Compute.Subtract(rest);
- Over22 = Over22.Add(Over22Compute);
- }
-
- else if (command.ShiftWork == "2")
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- if (startTimeTowSh1 > endTimeTowSh2)
- {
- overNight = true;
- endTimeTowSh2 = endTimeTowSh2.AddDays(1);
- }
-
- var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
- var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
- notHolidays = notHolidays.Add(singleSpanTow1);
- notHolidays = notHolidays.Add(singleSpanTow2);
-
- var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22ComputeTow1);
- var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
- Over22 = Over22.Add(Over22ComputeTow2);
- }
- }
- }
-
- if (command.doshanbeh)
- if (da.DayOfWeek == "دوشنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- {
- i2 += 1;
- switch (command.ShiftWork)
- {
- case "1":
-
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- var singleSpan1 = endTimeSingel2 - starTimeSingel1;
-
- singleSpan1 = singleSpan1.Subtract(rest2);
-
- notHolidays = notHolidays.Add(singleSpan1);
-
- var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
-
- Over22 = Over22.Add(Over22Compute);
- break;
-
- case "2":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Doshanbeh);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Doshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- if (startTimeTowSh1 > endTimeTowSh2)
- {
- overNight = true;
- endTimeTowSh2 = endTimeTowSh2.AddDays(1);
- }
-
- var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
- var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
- notHolidays = notHolidays.Add(singleSpanTow1);
- notHolidays = notHolidays.Add(singleSpanTow2);
-
- var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22ComputeTow1);
- var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
- Over22 = Over22.Add(Over22ComputeTow2);
- break;
- }
- }
- }
-
- if (command.seshanbeh)
- if (da.DayOfWeek == "سه شنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- {
- i3 += 1;
- switch (command.ShiftWork)
- {
- case "1":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- var singleSpan1 = endTimeSingel2 - starTimeSingel1;
-
- singleSpan1 = singleSpan1.Subtract(rest3);
-
- notHolidays = notHolidays.Add(singleSpan1);
-
- var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22Compute);
- break;
-
- case "2":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Seshanbeh);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Seshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- if (startTimeTowSh1 > endTimeTowSh2)
- {
- overNight = true;
- endTimeTowSh2 = endTimeTowSh2.AddDays(1);
- }
-
- var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
- var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
- notHolidays = notHolidays.Add(singleSpanTow1);
- notHolidays = notHolidays.Add(singleSpanTow2);
-
- var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22ComputeTow1);
- var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
- Over22 = Over22.Add(Over22ComputeTow2);
- break;
- }
- }
- }
-
- if (command.cheharshanbeh)
- if (da.DayOfWeek == "چهارشنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- {
- i4 += 1;
- switch (command.ShiftWork)
- {
- case "1":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- var singleSpan1 = endTimeSingel2 - starTimeSingel1;
-
- singleSpan1 = singleSpan1.Subtract(rest4);
-
- notHolidays = notHolidays.Add(singleSpan1);
-
- var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22Compute);
- break;
-
- case "2":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- if (startTimeTowSh1 > endTimeTowSh2)
- {
- overNight = true;
- endTimeTowSh2 = endTimeTowSh2.AddDays(1);
- }
-
- var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
- var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
- notHolidays = notHolidays.Add(singleSpanTow1);
- notHolidays = notHolidays.Add(singleSpanTow2);
-
- var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22ComputeTow1);
- var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
- Over22 = Over22.Add(Over22ComputeTow2);
- break;
- }
- }
- }
-
- if (command.pangshanbeh)
- if (da.DayOfWeek == "پنج شنبه")
- {
- var test = da.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- {
- i5 += 1;
- switch (command.ShiftWork)
- {
- case "1":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- singleOver24 = endTimeSingel2 - singleShiftOver24;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- var singleSpan1 = endTimeSingel2 - starTimeSingel1;
-
- singleSpan1 = singleSpan1.Subtract(rest5);
-
- singleSpan1 = singleSpan1.Subtract(singleOver24);
- jomeh = jomeh.Add(singleOver24);
- notHolidays = notHolidays.Add(singleSpan1);
-
- var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22Compute);
- break;
-
- case "2":
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
- var singleOver24Tow = new TimeSpan();
- if (starTimeSingel1 > endTimeSingel2)
- {
- overNight = true;
- singleOver24 = endTimeSingel2 - singleShiftOver24;
- endTimeSingel2 = endTimeSingel2.AddDays(1);
- }
-
- if (startTimeTowSh1 > endTimeTowSh2)
- {
- overNight = true;
- singleOver24Tow = endTimeTowSh2 - singleShiftOver24;
- endTimeTowSh2 = endTimeTowSh2.AddDays(1);
- }
-
- var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
- var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
-
-
- singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
- singleSpanTow2 = singleSpanTow2.Subtract(singleOver24Tow);
-
- jomeh = jomeh.Add(singleOver24);
- jomeh = jomeh.Add(singleOver24Tow);
-
- notHolidays = notHolidays.Add(singleSpanTow1);
- notHolidays = notHolidays.Add(singleSpanTow2);
-
- var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
- Over22 = Over22.Add(Over22ComputeTow1);
- var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
- Over22 = Over22.Add(Over22ComputeTow2);
- break;
- }
- }
- }
-
- if (command.jomeh)
- {
- 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);
- var w1 = 0;
- var w2 = 0;
- var w3 = 0;
- var w4 = 0;
- var w5 = 0;
- var 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
- sumRest = sumRest.Add(rest0w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
-
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
- sumRest = sumRest.Add(rest0w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
- sumRest = sumRest.Add(rest0w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
- sumRest = sumRest.Add(rest0w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
- sumRest = sumRest.Add(rest0w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
- sumRest = sumRest.Add(rest0w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
- sumRest = sumRest.Add(rest1w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
- sumRest = sumRest.Add(rest1w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
- sumRest = sumRest.Add(rest1w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
- sumRest = sumRest.Add(rest1w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
- sumRest = sumRest.Add(rest1w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
- sumRest = sumRest.Add(rest1w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
- sumRest = sumRest.Add(rest2w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
- sumRest = sumRest.Add(rest2w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
- sumRest = sumRest.Add(rest2w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
- sumRest = sumRest.Add(rest2w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
- sumRest = sumRest.Add(rest2w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
- sumRest = sumRest.Add(rest2w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
- sumRest = sumRest.Add(rest3w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
- sumRest = sumRest.Add(rest3w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
- sumRest = sumRest.Add(rest3w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
- sumRest = sumRest.Add(rest3w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
- sumRest = sumRest.Add(rest3w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
- sumRest = sumRest.Add(rest3w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
- sumRest = sumRest.Add(rest4w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
- sumRest = sumRest.Add(rest4w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
- sumRest = sumRest.Add(rest4w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
- sumRest = sumRest.Add(rest4w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
- sumRest = sumRest.Add(rest4w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
- sumRest = sumRest.Add(rest4w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
- sumRest = sumRest.Add(rest5w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
- // if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
- sumRest = sumRest.Add(rest5w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
- sumRest = sumRest.Add(rest5w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
- sumRest = sumRest.Add(rest5w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
- sumRest = sumRest.Add(rest5w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
- sumRest = sumRest.Add(rest5w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- else
- {
- starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
- endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
- startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
- endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
- //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2))
- if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
- startTimeTowSh1, endTimeTowSh2);
- HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
- }
- }
- }
-
- 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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
- sumRest = sumRest.Add(rest6w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
- sumRest = sumRest.Add(rest6w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w3)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w3);
- sumRest = sumRest.Add(rest6w3);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w4)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w4);
- sumRest = sumRest.Add(rest6w4);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
- sumRest = sumRest.Add(rest6w1);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
- else if (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))
- if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
- endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
- sumRest = sumRest.Add(rest6w2);
-
- var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
- endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- }
- }
-
- 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 || x.IsEveningShift || x.IsNightShift).ToList();
- }
-
- #endregion
-
- #region ComplexCompute
-
- else if (command.ShiftWork == "5") //12-24
- {
- var now = DateTime.Now;
- var sdate2 = command.ContarctStart.ToEnglishNumber();
- var edate2 = command.ContractEnd.ToEnglishNumber();
- var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
- var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
- var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
-
- var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
- var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
- var eday2 = Convert.ToInt32(edate.Substring(8, 2));
-
- var d1b = new PersianDateTime(syear2, smonth2, sday2);
- var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
-
- var start = Convert.ToDateTime(command.Start1224);
- var end = Convert.ToDateTime(command.End1224);
- if (string.IsNullOrWhiteSpace(command.Start1224))
- start = Convert.ToDateTime(command.StartComplex);
- if (string.IsNullOrWhiteSpace(command.End1224))
- end = Convert.ToDateTime(command.EndComplex);
-
- var sh = start.Hour;
- var sm = start.Minute;
- var eh = end.Hour;
- var em = end.Minute;
- var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
- var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
-
- end = endDateTime.ToGregorianDateTime();
-
-
- for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(36))
- {
- var test = $"{da2}";
- if (da2.DayOfWeek == "جمعه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
-
- var singleSpanTow1 = new TimeSpan();
-
- i6 += 1;
- if (start.Date < end.Date)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
- singleSpanTow1 = end - start;
- singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleOver24);
- jomeh = jomeh.Add(singleSpanTow1);
- i += 1;
- }
- else
- {
- singleSpanTow1 = end - start;
- jomeh = jomeh.Add(singleSpanTow1);
- }
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
- var endCal = end - start;
- var NextStart = start.AddHours(36);
- end = NextStart.Add(endCal);
- }
- else if (da2.DayOfWeek == "پنج شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = new TimeSpan();
- i5 += 1;
- if (start.Date < end.Date && start.Day != end.Day)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
-
- jomeh = jomeh.Add(singleOver24);
-
- i6 += 1;
-
- singleSpan1 = end - start;
- singleSpan1 = singleSpan1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleSpan1);
- }
- else
- {
- singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- }
-
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- var endCal = end - start;
- var NextStart = start.AddHours(36);
- end = NextStart.Add(endCal);
- }
- else if (da2.DayOfWeek == "شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i += 1;
- var NextStart = start.AddHours(36);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "یکشنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i1 += 1;
-
- var NextStart = start.AddHours(36);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "دوشنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i2 += 1;
-
- var NextStart = start.AddHours(36);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "سه شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- i3 += 1;
- var NextStart = start.AddHours(36);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "چهارشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i4 += 1;
- var NextStart = start.AddHours(36);
- end = NextStart.Add(singleSpan1);
- }
- }
-
-
- for (var daa = d1b; daa <= d2b; daa.AddDays(1))
- if (daa.DayOfWeek != "جمعه")
- {
- var test = daa.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- SumComplexDays += 1;
- else
- OfficialHoliday += 1;
- }
- else
- {
- FridayStartToEnd += 1;
- }
- }
- else if (command.ShiftWork == "6") //24-24
- {
- var now = DateTime.Now;
- var sdate2 = command.ContarctStart.ToEnglishNumber();
- var edate2 = command.ContractEnd.ToEnglishNumber();
- var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
- var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
- var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
-
- var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
- var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
- var eday2 = Convert.ToInt32(edate.Substring(8, 2));
-
- var d1b = new PersianDateTime(syear2, smonth2, sday2);
- var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
-
- var start = Convert.ToDateTime(command.Start2424);
- var end = Convert.ToDateTime(command.End2424);
- if (string.IsNullOrWhiteSpace(command.Start2424))
- start = Convert.ToDateTime(command.StartComplex);
- if (string.IsNullOrWhiteSpace(command.End2424))
- end = Convert.ToDateTime(command.EndComplex);
-
- var sh = start.Hour;
- var sm = start.Minute;
- var eh = end.Hour;
- var em = end.Minute;
- var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
- var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
- //if (start > end)
- //{
-
- // endDateTime.AddDays(1);
- //}
-
- endDateTime.AddDays(1);
- end = endDateTime.ToGregorianDateTime();
-
-
- for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
- {
- var test = $"{da2}";
- if (da2.DayOfWeek == "جمعه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpanTow1 = new TimeSpan();
- var WorkHours = end - start;
- i6 += 1;
- if (start.Date < end.Date)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
- singleSpanTow1 = end - start;
- singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleOver24);
- jomeh = jomeh.Add(singleSpanTow1);
- i += 1;
- }
- else
- {
- singleSpanTow1 = end - start;
- jomeh = jomeh.Add(singleSpanTow1);
- }
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "پنج شنبه")
- {
- start = da2.ToGregorianDateTime();
- var singleSpan1 = new TimeSpan();
- var WorkHours = end - start;
- i5 += 1;
- if (start.Date < end.Date && start.Day != end.Day)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
-
- jomeh = jomeh.Add(singleOver24);
-
- i6 += 1;
-
- singleSpan1 = end - start;
- singleSpan1 = singleSpan1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleSpan1);
- }
- else
- {
- singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- }
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "شنبه")
- {
- start = da2.ToGregorianDateTime();
-
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "یکشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i1 += 1;
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "دوشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i2 += 1;
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "سه شنبه")
- {
- start = da2.ToGregorianDateTime();
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i3 += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "چهارشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i4 += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- }
-
-
- for (var daa = d1b; daa <= d2b; daa.AddDays(1))
- if (daa.DayOfWeek != "جمعه")
- {
- var test = daa.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- SumComplexDays += 1;
- else
- OfficialHoliday += 1;
- }
- else
- {
- FridayStartToEnd += 1;
- }
- }
- else if (command.ShiftWork == "7") //12-36
- {
- var now = DateTime.Now;
- var sdate2 = command.ContarctStart.ToEnglishNumber();
- var edate2 = command.ContractEnd.ToEnglishNumber();
- var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
- var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
- var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
-
- var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
- var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
- var eday2 = Convert.ToInt32(edate.Substring(8, 2));
-
- var d1b = new PersianDateTime(syear2, smonth2, sday2);
- var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
-
- var start = Convert.ToDateTime(command.Start1236);
- var end = Convert.ToDateTime(command.End1236);
- if (string.IsNullOrWhiteSpace(command.Start1236))
- start = Convert.ToDateTime(command.StartComplex);
- if (string.IsNullOrWhiteSpace(command.End1236))
- end = Convert.ToDateTime(command.EndComplex);
-
- var sh = start.Hour;
- var sm = start.Minute;
- var eh = end.Hour;
- var em = end.Minute;
- var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
- var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
- //if (start > end)
- //{
-
- // endDateTime.AddDays(1);
- //}
-
- //endDateTime.AddDays(1);
- end = endDateTime.ToGregorianDateTime();
-
-
- for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
- {
- var test = $"{da2}";
- if (da2.DayOfWeek == "جمعه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
-
- var singleSpanTow1 = new TimeSpan();
-
- i6 += 1;
- if (start.Date < end.Date)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
- singleSpanTow1 = end - start;
- singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleOver24);
- jomeh = jomeh.Add(singleSpanTow1);
- i += 1;
- }
- else
- {
- singleSpanTow1 = end - start;
- jomeh = jomeh.Add(singleSpanTow1);
- }
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- var WorkHours = end - start;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "پنج شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = new TimeSpan();
-
- i5 += 1;
- if (start.Date < end.Date && start.Day != end.Day)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
-
- jomeh = jomeh.Add(singleOver24);
-
- i6 += 1;
-
- singleSpan1 = end - start;
- singleSpan1 = singleSpan1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleSpan1);
- }
- else
- {
- singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- }
-
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- var WorkHours = end - start;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "یکشنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i1 += 1;
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "دوشنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i2 += 1;
-
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "سه شنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- i3 += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "چهارشنبه")
- {
- start = da2.ToGregorianDateTime();
- if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
- end = end.AddDays(1);
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i4 += 1;
- var NextStart = start.AddHours(48);
- end = NextStart.Add(singleSpan1);
- }
- }
-
-
- for (var daa = d1b; daa <= d2b; daa.AddDays(1))
- if (daa.DayOfWeek != "جمعه")
- {
- var test = daa.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- SumComplexDays += 1;
- else
- OfficialHoliday += 1;
- }
- else
- {
- FridayStartToEnd += 1;
- }
- }
- else if (command.ShiftWork == "8") //24-48
- {
- var now = DateTime.Now;
- var sdate2 = command.ContarctStart.ToEnglishNumber();
- var edate2 = command.ContractEnd.ToEnglishNumber();
- var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
- var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
- var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
-
- var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
- var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
- var eday2 = Convert.ToInt32(edate.Substring(8, 2));
-
- var d1b = new PersianDateTime(syear2, smonth2, sday2);
- var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
-
- var start = Convert.ToDateTime(command.Start2448);
- var end = Convert.ToDateTime(command.End2448);
- if (string.IsNullOrWhiteSpace(command.Start2448))
- start = Convert.ToDateTime(command.StartComplex);
- if (string.IsNullOrWhiteSpace(command.End2448))
- end = Convert.ToDateTime(command.EndComplex);
-
- var sh = start.Hour;
- var sm = start.Minute;
- var eh = end.Hour;
- var em = end.Minute;
- var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
- var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
- //if (start > end)
- //{
-
- // endDateTime.AddDays(1);
- //}
-
-
- end = endDateTime.ToGregorianDateTime();
- end = end.AddDays(1);
-
-
- for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(72))
- {
- var test = $"{da2}";
- if (da2.DayOfWeek == "جمعه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpanTow1 = new TimeSpan();
-
- i6 += 1;
- if (start.Date < end.Date)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
- singleSpanTow1 = end - start;
- singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleOver24);
- jomeh = jomeh.Add(singleSpanTow1);
- i += 1;
- }
- else
- {
- singleSpanTow1 = end - start;
- jomeh = jomeh.Add(singleSpanTow1);
- }
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- var WorkHours = end - start;
- var NextStart = start.AddHours(72);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "پنج شنبه")
- {
- start = da2.ToGregorianDateTime();
- var singleSpan1 = new TimeSpan();
-
- i5 += 1;
- if (start.Date < end.Date && start.Day != end.Day)
- {
- overNight = true;
- var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
- singleOver24 = end - over24;
-
-
- jomeh = jomeh.Add(singleOver24);
-
- i6 += 1;
-
- singleSpan1 = end - start;
- singleSpan1 = singleSpan1.Subtract(singleOver24);
- notHolidays = notHolidays.Add(singleSpan1);
- }
- else
- {
- singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
- }
-
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- var WorkHours = end - start;
- var NextStart = start.AddHours(72);
- end = NextStart.Add(WorkHours);
- }
- else if (da2.DayOfWeek == "شنبه")
- {
- start = da2.ToGregorianDateTime();
-
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i += 1;
- var NextStart = start.AddHours(72);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "یکشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i1 += 1;
-
- var NextStart = start.AddHours(72);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "دوشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i2 += 1;
-
- var NextStart = start.AddHours(72);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "سه شنبه")
- {
- start = da2.ToGregorianDateTime();
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
- i3 += 1;
- var NextStart = start.AddHours(72);
- end = NextStart.Add(singleSpan1);
- }
- else if (da2.DayOfWeek == "چهارشنبه")
- {
- start = da2.ToGregorianDateTime();
-
- var singleSpan1 = end - start;
- notHolidays = notHolidays.Add(singleSpan1);
-
- var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
- start.Second);
- var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
- end.Second);
- var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
- rotatingCheck.RotatingDate = test;
- rotatingResultList.Add(rotatingCheck);
- //var Over22Computing = Over22Complex2424(start, end);
- Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
-
-
- i4 += 1;
- var NextStart = start.AddHours(72);
- end = NextStart.Add(singleSpan1);
- }
- }
-
-
- for (var daa = d1b; daa <= d2b; daa.AddDays(1))
- if (daa.DayOfWeek != "جمعه")
- {
- var test = daa.ToGregorianDateTime();
- var checkHoliday = _holidayItemRepository.GetHoliday(test);
- if (checkHoliday == false)
- SumComplexDays += 1;
- else
- OfficialHoliday += 1;
- }
- else
- {
- FridayStartToEnd += 1;
- }
- }
-
- #endregion
-
- #region DayCounterAndDailyFix
-
- var sumDays = i + i1 + i2 + i3 + i4 + i5 + i6;
- var holidaysCount = i6;
- var notHolidaysCount = i + i1 + i2 + i3 + i4 + i5;
- // ساعات موظفی
- var ComplexFix = dailyFix.Multiply(SumComplexDays);
-
- dailyFix = dailyFix.Multiply(sumDays);
-
- Notholiday = notHolidaysCount.ToString();
- Holidays = holidaysCount.ToString();
-
- var searchModel = new LeftWorkSearchModel
- {
- EmployeeId = command.EmployeeId,
- WorkshopId = command.WorkshopId
- };
-
- var leftworkList = _leftWorkApplication.search(searchModel);
- var lastLeftWork = leftworkList.FirstOrDefault();
-
- var conStart = conStartGr;
- var EndOfM = Convert.ToInt32(command.ContractEnd.Substring(8, 2));
- var conEnd = conEndGr;
- if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < conEnd)
- {
- conEnd = lastLeftWork.LeftWorkDateGr.AddDays(-1);
- }
- else
- {
- if (EndOfM == 31) conEnd = conEnd.AddDays(-1);
- }
-
-
- var AllDaysCount = (conEnd - conStart).TotalDays + 1;
- var endContract = command.ContractEnd.ToGeorgianDateTime();
- var allDays = (endContract - conStart).TotalDays + 1;
-
-
- var jomeh2 = new TimeSpan();
-
- var notHolidays2 = new TimeSpan();
- var Mandatory = new TimeSpan();
-
-
- notHolidays = notHolidays.Add(jomeh);
-
- var workingDaysH = (int)notHolidays.TotalHours;
- var workingDaysM = notHolidays.TotalMinutes % 60;
-
- HolidaysAndNot = HolidaysAndNot.Add(notHolidays);
- var totalHolidaysAndNotH = (int)HolidaysAndNot.TotalHours;
- var totalHolidaysAndNotM = HolidaysAndNot.TotalMinutes % 60;
- notHolidays2 = notHolidays2.Add(jomeh2);
-
-
- var SumNotHolidays = notHolidays.Add(notHolidays2);
- var SumNotHolidaysHours = (int)SumNotHolidays.TotalHours;
- var SumNotHolidaysMinuts = SumNotHolidays.Minutes % 60;
-
- var SumHolidays = jomeh.Add(jomeh2);
- var SumHolidaysHours = (int)SumHolidays.TotalHours;
- var SumHolidaysMinuts = SumHolidays.Minutes % 60;
-
- var totalHoursShift1 = notHolidays;
- var totalHoursShift1And2 = SumNotHolidays;
-
- #endregion
-
- #region DailyFeeCompute
-
- var basic = "0";
-
- var GetWorkStartDate = command.GetWorkDateHide.ToEnglishNumber();
- var GetWorkEndDate = command.ContractEnd.ToEnglishNumber();
- var styear = Convert.ToInt32(GetWorkStartDate.Substring(0, 4));
- var stmonth = Convert.ToInt32(GetWorkStartDate.Substring(5, 2));
- var stday = Convert.ToInt32(GetWorkStartDate.Substring(8, 2));
-
- var edyear = Convert.ToInt32(GetWorkEndDate.Substring(0, 4));
- var edmonth = Convert.ToInt32(GetWorkEndDate.Substring(5, 2));
- var edday = Convert.ToInt32(GetWorkEndDate.Substring(8, 2));
- var startDate = command.GetWorkDateHide.ToGeorgianDateTime();
- var endDate = command.ContractEnd.ToGeorgianDateTime();
- var dayliFee = "خطای تاریخ";
- var contractStartDate = command.ContarctStart.ToGeorgianDateTime();
- if (styear >= 1370)
- {
- if (leftworkList == null)
- leftworkList = new List();
-
- var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStartDate,
- contractStartDate, command.EmployeeId, command.WorkshopId, leftworkList);
- dayliFee = dayliFeeResult.DayliFee;
- basic = dayliFeeResult.Basic;
- }
-
- #endregion
-
- #region ConsumableItemsAndHousingAndFamily
-
- var ConsumableItems = _yearlySalaryRepository.ConsumableItems(contractStartDate);
- var HousingAllowance = _yearlySalaryRepository.HousingAllowance(contractStartDate);
-
- var familyAllowance = _yearlySalaryRepository.FamilyAllowanceAutoExtention(command.EmployeeId, contractStartDate);
-
- #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 totalDyasUnder30 = 0.0;
- var startMonth = $"{command.ContarctStart.Substring(0, 8)}01";
- var startMonthGr = startMonth.ToGeorgianDateTime();
- var endOfMonth = command.ContarctStart.FindeEndOfMonth();
- var endOgMonthGr = endOfMonth.ToGeorgianDateTime();
- if (conEnd > endOgMonthGr)
- {
- if (startMonthGr == conStartGr)
- totalDyasUnder30 = (endOgMonthGr - conStartGr).TotalDays + 1;
- else
- totalDyasUnder30 = (endOgMonthGr - conStartGr).TotalDays;
- }
- else if (conEnd <= endOgMonthGr)
- {
- if (startMonthGr == conStartGr)
- totalDyasUnder30 = (conEndGr - conStartGr).TotalDays + 1;
- else
- totalDyasUnder30 = (conEndGr - conStartGr).TotalDays;
- }
-
-
- 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 *
- totalDyasUnder30; // کمک هزینه کارکرد یک روز ضربدر تعداد روزهای قرارداد ماکسیمم یک ماه
- HousingAllowance = HousingStep4.ToMoney();
-
- var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
- var consumableItemsStep1 = ConsumableItemsNumberType / 30;
- var consumableItemsStep2 = consumableItemsStep1 / 7.33;
- var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay;
- var consumableItemsStep4 = consumableItemsStep3 * totalDyasUnder30;
- 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 * totalDyasUnder30;
- familyAllowance = familyAllowanceStep4.ToMoney();
- }
-
- if (totalWeek > 1)
- {
- double weekAvrage = 0;
- if (totalHourses < 44.00)
- weekAvrage = totalHourses * 6 / TotalContractDays;
- else
- weekAvrage = totalHourses * 6 / TotalDaysNoFriday;
- //var oneday = weekAvrage * 6;
- var totalShiftRound = Math.Round(weekAvrage, 2);
- SumWorkeTime = $"{totalShiftRound}";
- }
- else if (totalWeek <= 1 && TotalDaysNoFriday <= 6)
- {
- var totalShiftRound = Math.Round(totalHourses, 2);
- SumWorkeTime = $"{totalShiftRound}";
- }
- else if (totalWeek <= 1 && TotalDaysNoFriday > 6)
-
- {
- var perDyeWorked = totalHourses / TotalDaysNoFriday;
- var weekAvrage = perDyeWorked * 6;
- var totalShiftRound = Math.Round(weekAvrage, 2);
- SumWorkeTime = $"{totalShiftRound}";
- }
-
- weeklyTime = totalHoursShift1;
- }
- else
- {
- //var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
- //var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
- //var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
-
- //var HousingStep1 = HousingAllowonceNumberType / 30;
- //var HousingStep4 = HousingStep1 * AllDaysCount;
- //HousingAllowance = HousingStep4.ToMoney();
-
-
- //var consumableItemsStep1 = ConsumableItemsNumberType / 30;
- //var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount;
- //ConsumableItems = consumableItemsStep4.ToMoney();
-
- //if (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);
- var eveningCount = rotatingResultList.Count(x => x.IsEveningShift);
- var nightCount = rotatingResultList.Count(x => x.IsNightShift);
-
- var RotatingfaName = new List();
- if (moriningCount > 0)
- RotatingfaName.Add("صبح");
- if (eveningCount > 0)
- RotatingfaName.Add("عصر");
- if (nightCount > 0)
- RotatingfaName.Add("شب");
- var rotatingFaResult = "";
- if (RotatingfaName.Count > 1)
- {
- shiftOver22Hours = "0";
- shiftOver22Minuts = "0";
- for (var 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");
- var morningWorkingTime1 = new TimeSpan();
- var eveningWorkingTime1 = new TimeSpan();
- var nightWorkingTime1 = new TimeSpan();
- var morningWorkingTime2 = new TimeSpan();
- var eveningWorkingTime2 = new TimeSpan();
- var 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)
- {
- var Over22 = new TimeSpan();
- var singleShiftOver24 = Convert.ToDateTime("00:00");
- var nightWork22 = Convert.ToDateTime("22:00");
- var nightWork6 = Convert.ToDateTime("06:00");
- var starTimeSingel1 = date1;
- var endTimeSingel2 = date2;
- var 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)
- {
- var Over22Result = new TimeSpan();
- var Over24 = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
- var nightWork22 = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
- var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
- var nightWork6 = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
- var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
- var starTime = date1;
- var 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)
- {
- var Over22Result = new TimeSpan();
- var Over24a = new DateTime(date1.Year, date1.Month, date1.Day, 0, 0, 0);
- var Over24b = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
- var nightWork22a = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
- var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
-
- var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
- var nightWork6b = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
- var starTime = date1;
- var endTime = date2;
-
- if (starTime >= Over24a && starTime <= nightWork6a)
- {
- if (endTime > nightWork22a && endTime <= nightWork6b)
- {
- var night1 = nightWork6a - starTime;
- var 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)
- {
- var night1 = nightWork6b - starTime;
- var night2 = endTime - nightWork22b;
- Over22Result = night1.Add(night2);
- }
- }
-
-
- return Over22Result;
- }
-
- #endregion
-
- #endregion
+ public IActionResult OnGetContractStatus(long employeeId, long workshopId, string employeeName, string workshopname)
+ {
+ var command = new ContractStatusViewModel();
+ var contractSearch = new ContractSearchModel
+ {
+ EmployeeId = employeeId,
+ WorkshopIds = workshopId
+ };
+ var checkoutSearch = new CheckoutSearchModel
+ {
+ EmployeeId = employeeId,
+ WorkshopId = workshopId
+ };
+ var contractResult = _contractApplication.Search(contractSearch);
+ var checkoutResult = _checkoutApplication.SimpleSearch(checkoutSearch);
+
+ if (contractResult.Count > 0)
+ {
+ var divideList = new List();
+ var ChekoutDivideList = new List();
+
+ var groupList = new List();
+
+ foreach (var item in contractResult)
+ {
+ var divide = new ContractStatusDivide
+ {
+ ContractStart = item.ContarctStart,
+ ContractEnd = item.ContractEnd,
+ Year = item.ContarctStart.Substring(0, 4),
+ MonthStart = Convert.ToInt32(item.ContarctStart.Substring(5, 2)),
+ MonthEnd = Convert.ToInt32(item.ContractEnd.Substring(5, 2)),
+ SignaturStatus = item.Signature
+ };
+ divideList.Add(divide);
+ }
+
+ foreach (var item in checkoutResult)
+ {
+ var CheckoutDivide = new CheckoutStatusDivide
+ {
+ CheckoutStart = item.ContractStart,
+ CheckoutEnd = item.ContractEnd,
+ Year = item.ContractStart.Substring(0, 4),
+ MonthStart = Convert.ToInt32(item.ContractStart.Substring(5, 2)),
+ MonthEnd = Convert.ToInt32(item.ContractEnd.Substring(5, 2)),
+ SignaturStatus = item.Signature
+ };
+ ChekoutDivideList.Add(CheckoutDivide);
+ }
+
+ var contractByYear = divideList.GroupBy(x => x.Year).Select(x => x.First()).ToList();
+ foreach (var year in contractByYear)
+ {
+ var divided = divideList.Where(x => x.Year == year.Year).ToList();
+ var chDivided = ChekoutDivideList.Where(x => x.Year == year.Year).ToList();
+ if (chDivided.Count < 1) chDivided = new List();
+
+ var group = new ContractStatusGroup
+ {
+ Year = year.Year,
+ ContractStatusDivideList = divided,
+ CheckoutStatusDivideList = chDivided
+ };
+ groupList.Add(group);
+ }
+
+ command.EmployeeName = employeeName;
+ command.WorkshopName = workshopname;
+ command.HavingContract = true;
+ command.ContractStatusGroupList = groupList;
+ }
+ else
+ {
+ command.EmployeeName = employeeName;
+ command.WorkshopName = workshopname;
+ command.HavingContract = false;
+ }
+
+
+ return Partial("ContractStatus", command);
+ }
+
+ public IActionResult OnGetClock(long employeeId, long workshopId, string workshopAddress, long personelCode,
+ long jobId, string startContract, string endContract, string employeeName)
+ {
+ var start = new DateTime();
+ var end = new DateTime();
+ var psCodeZeroCheck = "";
+ var jobIdZeroCheck = "";
+ var leftWorkCheckExist = "";
+ var dateValid = "";
+ var getWorkDateHide = "";
+ var contractExistCheck = string.Empty;
+ if (personelCode == 0)
+ psCodeZeroCheck = $"برای {employeeName} در این کارگاه کد پرسنلی مشخص نشده است";
+ if (jobId == 0)
+ jobIdZeroCheck = $" برای {employeeName} در این کارگاه سمت مشخص نشده است";
+
+
+ var leftWorkSerachModel = new LeftWorkSearchModel
+ {
+ EmployeeId = employeeId,
+ WorkshopId = workshopId
+ };
+ if (!string.IsNullOrWhiteSpace(startContract) && !string.IsNullOrWhiteSpace(endContract))
+ {
+ start = startContract.ToGeorgianDateTime();
+ end = endContract.ToGeorgianDateTime();
+
+ var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
+ if (leftWoekSerchResult.Count > 0)
+ {
+ getWorkDateHide = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
+ var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
+ x.LeftWorkDateGr > start);
+
+ if (check != null)
+ {
+ var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
+
+ if (leftWorkDate != "1500/01/01")
+ {
+ var endOfmonth = leftWorkDate.FindeEndOfMonth();
+ var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
+ if (end <= endOfMonthGr)
+ {
+ }
+ else
+ {
+ leftWorkCheckExist =
+ $" با تو جه به ترک کار پرسنل در تاریخ {leftWorkDate} می توانید تا تاریخ {endOfmonth} قرارداد ایجاد نمایید";
+ }
+ }
+ }
+ else
+ {
+ leftWorkCheckExist = $" برای {employeeName} در بازه تاریخ وارد شده شروع به کار وجود ندارد";
+ }
+ }
+
+ contractExistCheck = _contractRepository.ContractStartCheck(start, end, employeeId, workshopId);
+ if (start > end)
+ dateValid = "تاریخ شروع از تاریخ پایان بزرگتر است";
+
+ if (start == end)
+ dateValid = "تاریخ شروع و تاریخ پایان برابر وارد شده اند";
+ }
+ else
+ {
+ if (string.IsNullOrWhiteSpace(startContract) && string.IsNullOrWhiteSpace(endContract))
+ dateValid = "تاریخ شروع و پایان قرارداد را وارد کنید";
+ else if (string.IsNullOrWhiteSpace(startContract))
+ dateValid = "تاریخ شروع قرارداد را وارد کنید";
+ else if (string.IsNullOrWhiteSpace(endContract)) dateValid = "تاریخ پایان قرارداد را وارد کنید";
+ }
+
+
+ if (!string.IsNullOrWhiteSpace(psCodeZeroCheck) || !string.IsNullOrWhiteSpace(jobIdZeroCheck)
+ || !string.IsNullOrWhiteSpace(leftWorkCheckExist) ||
+ !string.IsNullOrWhiteSpace(contractExistCheck)
+ || !string.IsNullOrWhiteSpace(dateValid))
+ {
+ var alarm = new AlarmViewModel
+ {
+ PersonnelCodeZeroCheck = psCodeZeroCheck,
+ JobIdZeroCheck = jobIdZeroCheck,
+ LeftWorkExistCheck = leftWorkCheckExist,
+ ContractExistCheck = contractExistCheck,
+ DateValidCheck = dateValid,
+ EmployeeName = employeeName
+ };
+ return Partial("Alert", alarm);
+ }
+
+ var result = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(workshopId, employeeId);
+ if (result == null) result = new CreateWorkingHoursTemp();
+
+
+ result.WorkshopAddress1 = workshopAddress;
+ //var today = DateTime.Now;
+ //var start = today.ToFarsi();
+ result.StartDate = startContract;
+ result.EndDate = endContract;
+ result.GetWorkDateHide = getWorkDateHide;
+ return Partial("clock", result);
+ }
+
+ //FirstCheck
+ public IActionResult OnPostContractSet(long employeeId, long workshopId, string workshopAddress,
+ long personelCode, long jobId, string startContract, string endContract, string employeeName)
+ {
+ var employeeDetails = _employeeApplication.GetDetails(employeeId);
+ var workingHoursResult = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(workshopId, employeeId);
+ var start = new DateTime();
+ var end = new DateTime();
+ var employeeWarning = "";
+ var psCodeZeroCheck = "";
+ var jobIdZeroCheck = "";
+ var leftWorkCheckExist = "";
+ var dateValid = "";
+ var getWorkDateHide = "";
+ var contractExistCheck = "";
+ var workingHoursCheck = "";
+ var leftValidForEndMonth = false;
+ var leftValid = true;
+ var contractExist = false;
+
+ if ((string.IsNullOrWhiteSpace(employeeDetails.NationalCode) && employeeDetails.Nationality == "ایرانی")
+ || string.IsNullOrWhiteSpace(employeeDetails.Address)
+ || string.IsNullOrWhiteSpace(employeeDetails.City)
+ || string.IsNullOrWhiteSpace(employeeDetails.State)
+ || string.IsNullOrWhiteSpace(employeeDetails.MaritalStatus))
+ employeeWarning = $"برای {employeeName} موارد اجباری مانند کدملی و وضعیت تاهل و نشانی را بررسی کنید";
+
+ if (personelCode == 0)
+ psCodeZeroCheck = $"برای {employeeName} در این کارگاه کد پرسنلی مشخص نشده است";
+ if (jobId == 0)
+ jobIdZeroCheck = $" برای {employeeName} در این کارگاه سمت مشخص نشده است";
+
+ #region leftworkCheck
+
+ var leftWorkSerachModel = new LeftWorkSearchModel
+ {
+ EmployeeId = employeeId,
+ WorkshopId = workshopId
+ };
+
+ start = startContract.ToGeorgianDateTime();
+ end = endContract.ToGeorgianDateTime();
+
+ var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
+ if (leftWoekSerchResult.Count > 0)
+ {
+ getWorkDateHide = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
+ var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
+ x.LeftWorkDateGr > start);
+
+ if (check != null)
+ {
+ var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
+
+ if (leftWorkDate != "1500/01/01")
+ {
+ var endOfmonth = leftWorkDate.FindeEndOfMonth();
+ var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
+ if (end <= endOfMonthGr)
+ {
+ }
+ else
+ {
+ leftWorkCheckExist =
+ $" با تو جه به ترک کار پرسنل در تاریخ {leftWorkDate} می توانید تا تاریخ {endOfmonth} قرارداد ایجاد نمایید";
+ leftValidForEndMonth = true;
+ }
+ }
+ }
+ else
+ {
+ leftWorkCheckExist = $" برای {employeeName} در بازه تاریخ وارد شده شروع به کار وجود ندارد";
+ leftValid = false;
+ }
+ }
+
+ #endregion
+
+
+ contractExistCheck = _contractRepository.ContractStartCheck(start, end, employeeId, workshopId);
+ if (start > end)
+ dateValid = "تاریخ شروع از تاریخ پایان بزرگتر است";
+
+ if (start == end)
+ dateValid = "تاریخ شروع و تاریخ پایان برابر وارد شده اند";
+
+
+ if (!string.IsNullOrWhiteSpace(dateValid))
+ {
+ leftWorkCheckExist = "";
+ contractExistCheck = "";
+ }
+
+ if (string.IsNullOrWhiteSpace(workingHoursResult.ShiftWork))
+ workingHoursCheck = "ساعت کار را تنظیم نمایید";
+ if (leftValid && (!string.IsNullOrWhiteSpace(psCodeZeroCheck)
+ || !string.IsNullOrWhiteSpace(jobIdZeroCheck) || !string.IsNullOrWhiteSpace(employeeWarning)
+ || leftValidForEndMonth
+ || !string.IsNullOrWhiteSpace(dateValid) || !string.IsNullOrWhiteSpace(workingHoursCheck)))
+ return new JsonResult(new
+ {
+ success = false,
+ errPersonnelCodeZeroCheck = psCodeZeroCheck,
+ errJobIdZeroCheck = jobIdZeroCheck,
+ errLeftWorkExistCheck = leftWorkCheckExist,
+ errLeftValidForEndMonth = leftValidForEndMonth,
+
+ errDateValidCheck = dateValid,
+ errEmployeeName = employeeName,
+ errWorkingHoursCheck = workingHoursCheck,
+ errEmployeeWarning = employeeWarning
+ });
+ //var alarm = new AlarmViewModel()
+ //{
+ // PersonnelCodeZeroCheck = psCodeZeroCheck,
+ // JobIdZeroCheck = jobIdZeroCheck,
+ // LeftWorkExistCheck = leftWorkCheckExist,
+ // ContractExistCheck = contractExistCheck,
+ // DateValidCheck = dateValid,
+ // EmployeeName = employeeName,
+ // WorkingHoursCheck = workingHoursCheck
+ //};
+ //return Partial("Alert", alarm);
+ if (!string.IsNullOrWhiteSpace(contractExistCheck)) contractExist = true;
+
+ return new JsonResult(new
+ {
+ success = true,
+ getWorkDate = getWorkDateHide,
+ errContractExist = contractExist,
+ errLeftValid = leftValid
+ });
+ }
+
+ public IActionResult OnGetAlertModal(string errPsCodeZeroCheck, string errJobIdZeroCheck, string errDateValid,
+ string errLeftWorkExistCheck, string errEmployeeName, string errWorkingHoursCheck, bool errLeftValidForEndMonth,
+ string errEmployeeWarning)
+ {
+ var alarm = new AlarmViewModel
+ {
+ PersonnelCodeZeroCheck = errPsCodeZeroCheck,
+ JobIdZeroCheck = errJobIdZeroCheck,
+ LeftWorkExistCheck = errLeftValidForEndMonth ? errLeftWorkExistCheck : "",
+ DateValidCheck = errDateValid,
+ EmployeeName = errEmployeeName,
+ WorkingHoursCheck = errWorkingHoursCheck,
+ EmployeeWarning = errEmployeeWarning
+ };
+ return Partial("Alert", alarm);
+ }
+
+ #region CorrectNullSHift
+
+ public IActionResult OnGetCorrection()
+ {
+ //var contractList = _workingHoursTempApplication.Correct();
+ // int i = 1;
+ // foreach (var item in contractList)
+ // {
+
+ // var result = _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(item.WorkshopIds, item.EmployeeId);
+ // 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);
+
+ // 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 = _contractApplication.EditCompute(item);
+
+ // _workingHoursApplication.removeWorkingHours(item.Id);
+ // 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;
+ // _workingHoursApplication.CreateNew(result);
+
+ // Console.WriteLine(i +"- finish no : " + item.ContractNo);
+ // i++;
+ // }
+
+ return RedirectToPage("./Index");
+ }
+
+ #endregion
+
+ #region CreateContract
+
+ public IActionResult OnPostCreateContract(List createContarctList)
+ {
+ var contractCount = createContarctList.Count;
+ var successProcess = 0;
+ double maxNumber = contractCount;
+ var i = 1;
+ if (contractCount > 0)
+ {
+ var yearlysalaryList = _yearlySalaryRepository.GetYearlySalary();
+ var yearlySalarId = yearlysalaryList.FirstOrDefault().Id;
+
+ foreach (var item in createContarctList)
+ {
+ var result =
+ _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(item.WorkshopId,
+ item.EmployeeId);
+ result.EmployeeId = item.EmployeeId;
+ result.WorkshopId = item.WorkshopId;
+ result.ContarctStart = item.ContractStart;
+ result.ContractEnd = item.ContractEnd;
+ var leftWorkSerachModel = new LeftWorkSearchModel
+ {
+ EmployeeId = item.EmployeeId,
+ WorkshopId = item.WorkshopId
+ };
+ var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
+ var getWorkDateHide = leftWoekSerchResult?.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()
+ ?.StartWorkDate;
+ result.GetWorkDate = getWorkDateHide;
+ result.GetWorkDateHide = getWorkDateHide;
+ var compute = MandatoryHours(result);
+ item.DayliWage = compute.SalaryCompute;
+ item.GetWorkDate = getWorkDateHide;
+ item.ConsumableItems = compute.ConsumableItems;
+ item.HousingAllowance = compute.HousingAllowance;
+ item.FamilyAllowance = compute.FamilyAllowance;
+ item.WorkingHoursWeekly = compute.SumTime44;
+ item.NumberOfWorkingDays = compute.NumberOfWorkingDays;
+ item.NumberOfFriday = compute.NumberOfFriday;
+ item.TotalHoursesH = compute.TotalHoursesH;
+ item.TotalHoursesM = compute.TotalHoursesM;
+ item.OverTimeWorkH = compute.OverTimeWorkH;
+ item.OverTimeWorkM = compute.OverTimeWorkM;
+ item.OverNightWorkH = compute.OverNightWorkH;
+ item.OverNightWorkM = compute.OverNightWorkM;
+ item.WorkshopAddress2 = result.WorkshopAddress2;
+
+ item.YearlySalaryId = yearlySalarId;
+ var createContractResult = _contractApplication.CreateNew(item);
+ var percent = i / maxNumber * 100;
+ _hubContext.Clients.Group(CreateContractTarckingHub.GetGroupName(item.WorkshopId))
+ .SendAsync("showStatus", (int)percent);
+ if (createContractResult.IsSuccedded)
+ successProcess += 1;
+
+
+ i++;
+ }
+
+ if (successProcess == contractCount)
+ {
+ return new JsonResult(new
+ {
+ isSuccess = true,
+ contractCount = successProcess
+ });
+ }
+
+ var failds = contractCount - successProcess;
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ contractCount = failds
+ });
+ }
+
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ contractCount = 0
+ });
+ }
+
+ #endregion
+
+ public IActionResult OnGetCreateGroupCompute(CreateWorkingHoursTemp command)
+ {
+ var result =
+ _workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(command.WorkshopId,
+ command.EmployeeId);
+ result.EmployeeId = command.EmployeeId;
+ result.WorkshopId = command.WorkshopId;
+ result.ContarctStart = command.ContarctStart;
+ //result.ContractStartGr = command.ContarctStart.ToGeorgianDateTime();
+ result.ContractEnd = command.ContractEnd;
+ //result.ContractEndGr = command.ContractEnd.ToGeorgianDateTime();
+
+ if (result.ShiftWork != "")
+ {
+ var leftWorkSerachModel = new LeftWorkSearchModel
+ {
+ EmployeeId = command.EmployeeId,
+ WorkshopId = command.WorkshopId
+ };
+ var leftWoekSerchResult = _leftWorkApplication.search(leftWorkSerachModel);
+ var getWorkDateHide = leftWoekSerchResult?.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
+ result.GetWorkDate = getWorkDateHide;
+ result.GetWorkDateHide = getWorkDateHide;
+ var compute = MandatoryHours(result);
+ return new JsonResult(new
+ {
+ isSuccess = true,
+ compute.NumberOfWorkingDays,
+ compute.NumberOfFriday,
+ compute.TotalHoursesH,
+ compute.TotalHoursesM,
+ OverTimeWorkH = compute.OverNightWorkH,
+ compute.OverTimeWorkM,
+ compute.OverNightWorkH,
+ compute.OverNightWorkM,
+ WeeklyWorkingTime = $"{compute.weeklyTime}",
+ compute.SumTime44,
+ compute.SalaryCompute,
+ compute.ConsumableItems,
+ compute.HousingAllowance,
+ compute.FamilyAllowance,
+ getWorkDate = getWorkDateHide
+ });
+ }
+
+ return new JsonResult(new
+ {
+ isSuccess = false
+ });
+ }
+
+ #region clockSave
+
+ public IActionResult OnPostCreateWorkingHoursTemp(CreateWorkingHoursTemp command)
+ {
+ #region WeekEmptyValidation
+
+ if (command.ShiftWork == "4")
+ {
+ //week1
+
+ #region week1
+
+ var week1Valid = true;
+ if (command.Shanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Shanbe1)) part1 = false;
+
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Shanbe1))
+ part2 = false;
+
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Shanbe1, command.SingleShift2Shanbe1, command.TowShifts1Shanbe1, command.TowShifts2Shanbe1))
+
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.YekShanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe1))
+ part2 = false;
+
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1YekShanbe1, command.SingleShift2YekShanbe1, command.TowShifts1YekShanbe1, command.TowShifts2YekShanbe1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.DoShanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe1))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1DoShanbe1, command.SingleShift1DoShanbe1, command.TowShifts1DoShanbe1, command.TowShifts2DoShanbe1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.SeShanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe1))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1SeShanbe1, command.SingleShift2SeShanbe1, command.TowShifts1SeShanbe1, command.TowShifts2SeShanbe1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.CheharShanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe1))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1CheharShanbe1, command.SingleShift2CheharShanbe1, command.TowShifts1CheharShanbe1, command.TowShifts2CheharShanbe1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.PanjShanbe1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe1))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1PanjShanbe1, command.SingleShift2PanjShanbe1, command.TowShifts1PanjShanbe1, command.TowShifts2PanjShanbe1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.Jome1)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Jome1) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Jome1))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Jome1) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Jome1))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week1Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Jome1, command.SingleShift2Jome1, command.TowShifts1Jome1, command.TowShifts2Jome1))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = false,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ #endregion
+
+ //week2
+
+ #region Week2
+
+ var week2Valid = true;
+ if (command.Shanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Shanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Shanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Shanbe2, command.SingleShift2Shanbe2, command.TowShifts1Shanbe2, command.TowShifts2Shanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.YekShanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1YekShanbe2, command.SingleShift2YekShanbe2, command.TowShifts1YekShanbe2, command.TowShifts2YekShanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.DoShanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1DoShanbe2, command.SingleShift2DoShanbe2, command.TowShifts1DoShanbe2, command.TowShifts2DoShanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.SeShanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1SeShanbe2, command.SingleShift2SeShanbe2, command.TowShifts1SeShanbe2, command.TowShifts2SeShanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.CheharShanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1CheharShanbe2, command.SingleShift2CheharShanbe2, command.TowShifts1CheharShanbe2, command.TowShifts2CheharShanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.PanjShanbe2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1PanjShanbe2, command.SingleShift2PanjShanbe2, command.TowShifts1PanjShanbe2, command.TowShifts2PanjShanbe2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ if (command.Jome2)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Jome2) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Jome2))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Jome2) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Jome2))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week2Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Jome2, command.SingleShift2Jome2, command.TowShifts1Jome2, command.TowShifts2Jome2))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = false,
+ week3Valid = true,
+ week4Valid = true
+ });
+ }
+
+ #endregion
+
+ //week3
+
+ #region Week3
+
+ var week3Valid = true;
+ if (command.Shanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Shanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Shanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Shanbe3, command.SingleShift2Shanbe3, command.TowShifts1Shanbe3, command.TowShifts2Shanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.YekShanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1YekShanbe3, command.SingleShift2YekShanbe3, command.TowShifts1YekShanbe3, command.TowShifts2YekShanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.DoShanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1DoShanbe3, command.SingleShift2DoShanbe3, command.TowShifts1DoShanbe3, command.TowShifts2DoShanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.SeShanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1SeShanbe3, command.SingleShift2SeShanbe3, command.TowShifts1SeShanbe3, command.TowShifts2SeShanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.CheharShanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1CheharShanbe3, command.SingleShift2CheharShanbe3, command.TowShifts1CheharShanbe3, command.TowShifts2CheharShanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.PanjShanbe3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1PanjShanbe3, command.SingleShift2PanjShanbe3, command.TowShifts1PanjShanbe3, command.TowShifts2PanjShanbe3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ if (command.Jome3)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Jome3) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Jome3))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Jome3) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Jome3))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week3Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Jome3, command.SingleShift2Jome3, command.TowShifts1Jome2, command.TowShifts2Jome3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = false,
+ week4Valid = true
+ });
+ }
+
+ #endregion
+
+ //week4
+
+ #region Week4
+
+ var week4Valid = true;
+ if (command.Shanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Shanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Shanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Shanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+
+ if (Tools.InterferenceTime(command.SingleShift1Shanbe4, command.SingleShift2Shanbe4, command.TowShifts1Shanbe4, command.TowShifts2Shanbe4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.YekShanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1YekShanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2YekShanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2YekShanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1YekShanbe4, command.SingleShift2YekShanbe4, command.TowShifts1YekShanbe4, command.TowShifts2YekShanbe4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.DoShanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1DoShanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2DoShanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2DoShanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1DoShanbe4, command.SingleShift2DoShanbe4, command.TowShifts1DoShanbe4, command.TowShifts2DoShanbe4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.SeShanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1SeShanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2SeShanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2SeShanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (!Tools.CheckValidHm(command.SingleShift1SeShanbe4) ||
+ !Tools.CheckValidHm(command.SingleShift2SeShanbe4) ||
+ !Tools.CheckValidHm(command.TowShifts1SeShanbe4) ||
+ !Tools.CheckValidHm(command.TowShifts2SeShanbe4))
+ if (Tools.InterferenceTime(command.SingleShift1Jome3, command.SingleShift2Jome3, command.TowShifts1Jome2, command.TowShifts2Jome3))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.CheharShanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1CheharShanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2CheharShanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2CheharShanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1CheharShanbe4, command.SingleShift2CheharShanbe4, command.TowShifts1CheharShanbe4, command.TowShifts2CheharShanbe4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.PanjShanbe4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1PanjShanbe4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2PanjShanbe4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2PanjShanbe4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1PanjShanbe4, command.SingleShift2PanjShanbe4, command.TowShifts1PanjShanbe4, command.TowShifts2PanjShanbe4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ if (command.Jome4)
+ {
+ var part1 = true;
+ var part2 = true;
+ if (string.IsNullOrWhiteSpace(command.SingleShift1Jome4) ||
+ string.IsNullOrWhiteSpace(command.SingleShift2Jome4))
+ part1 = false;
+ if (string.IsNullOrWhiteSpace(command.TowShifts1Jome4) ||
+ string.IsNullOrWhiteSpace(command.TowShifts2Jome4))
+ part2 = false;
+
+ if (!part1 && !part2)
+ week4Valid = false;
+ if (Tools.InterferenceTime(command.SingleShift1Jome4, command.SingleShift2Jome4, command.TowShifts1Jome4, command.TowShifts2Jome4))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid = true,
+ week2Valid = true,
+ week3Valid = true,
+ week4Valid = false
+ });
+ }
+
+ #endregion
+
+ if (!week1Valid || !week2Valid || !week3Valid || !week4Valid)
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "4",
+ week1Valid,
+ week2Valid,
+ week3Valid,
+ week4Valid
+ });
+ }
+ else if (command.ShiftWork == "5")
+ {
+ if (string.IsNullOrWhiteSpace(command.Start1224) || string.IsNullOrWhiteSpace(command.End1224))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "5"
+ });
+ }
+ else if (command.ShiftWork == "6")
+ {
+ if (string.IsNullOrWhiteSpace(command.Start2424) || string.IsNullOrWhiteSpace(command.End2424))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "6"
+ });
+ }
+ else if (command.ShiftWork == "7")
+ {
+ if (string.IsNullOrWhiteSpace(command.Start1236) || string.IsNullOrWhiteSpace(command.End1236))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "7"
+ });
+ }
+ else if (command.ShiftWork == "8")
+ {
+ if (string.IsNullOrWhiteSpace(command.Start2448) || string.IsNullOrWhiteSpace(command.End2448))
+ return new JsonResult(new
+ {
+ isSuccess = false,
+ shiftErr = "7"
+ });
+ }
+
+ #endregion
+
+ var result = _workingHoursTempApplication.Create(command);
+ var compute = MandatoryHours(command);
+ return new JsonResult(new
+ {
+ isSuccess = result.IsSuccedded,
+ compute.NumberOfWorkingDays,
+ compute.NumberOfFriday,
+ compute.TotalHoursesH,
+ compute.TotalHoursesM,
+ OverTimeWorkH = compute.OverNightWorkH,
+ compute.OverTimeWorkM,
+ compute.OverNightWorkH,
+ compute.OverNightWorkM,
+ WeeklyWorkingTime = $"{compute.weeklyTime}",
+ compute.SumTime44,
+ compute.SalaryCompute,
+ compute.ConsumableItems,
+ compute.HousingAllowance,
+ compute.FamilyAllowance
+ });
+ }
+
+ #endregion
+
+ #region TestCompute
+
+ [SuppressMessage("ReSharper.DPA", "DPA0009: High execution time of DB command", MessageId = "time: 1490ms")]
+ public IActionResult OnPostCompute(CreateWorkingHoursTemp command)
+ {
+ var result = MandatoryHours(command);
+ return new JsonResult(result);
+ //string leftWorkStartDate = "";
+ //bool exsit = false;
+ //var serachModel = new LeftWorkSearchModel()
+ //{
+ // EmployeeId = command.EmployeeId,
+ // WorkshopId = command.WorkshopId,
+
+ //};
+ //var leftWoekSerchResult = _leftWorkApplication.search(serachModel);
+ //leftWorkStartDate = leftWoekSerchResult.OrderBy(x => x.StartWorkDateGr).FirstOrDefault()?.StartWorkDate;
+ //if (leftWoekSerchResult.Count > 0)
+ //{
+ // var start = command.ContarctStart.ToGeorgianDateTime();
+ // var end = command.ContractEnd.ToGeorgianDateTime();
+ // var check = leftWoekSerchResult.FirstOrDefault(x => x.StartWorkDateGr <= start &&
+ // x.LeftWorkDateGr > start);
+ // if (check != null)
+ // {
+ // var leftWorkDate = check.LeftWorkDateGr.ToFarsi();
+ // if (leftWorkDate != "1500/01/01")
+ // {
+ // var endOfmonth = leftWorkDate.FindeEndOfMonth();
+ // var endOfMonthGr = endOfmonth.ToGeorgianDateTime();
+ // if (end <= endOfMonthGr)
+ // exsit = true;
+ // }
+ // else
+ // {
+ // exsit = true;
+ // }
+
+ // }
+
+
+ //}
+
+ //if (!string.IsNullOrEmpty(leftWorkStartDate))
+ //{
+ // if (exsit)
+ // {
+ // command.GetWorkDate = leftWorkStartDate;
+ // command.GetWorkDateHide = leftWorkStartDate;
+ // var result = MandatoryHours(command);
+ // return new JsonResult(result);
+ // }
+ // else
+ // {
+ // return new JsonResult(new
+ // {
+ // checkDate = false,
+ // });
+ // }
+ //}
+ //else
+ //{
+ // return new JsonResult(new
+ // {
+ // checkExist = false,
+ // });
+ //}
+ }
+
+ #region MandatoryCompute
+
+ public ComputingViewModel MandatoryHours(CreateWorkingHoursTemp command)
+ {
+ #region entityes
+
+ var Notholiday = string.Empty;
+ var Holidays = string.Empty;
+ var SingleShiftResult = string.Empty;
+ var shift1Hourse = "0";
+ var shift1Minuts = "0";
+ var shift1HolidayHours = "0";
+ var shift1HolidayMinuts = "0";
+ var overMandatoryHours = "0";
+ var overMandatoryMinuts = "0";
+ var shiftOver22Hours = "0";
+ var shiftOver22Minuts = "0";
+ var SumWorkeTime = string.Empty;
+ var weeklyTime = new TimeSpan();
+ var FridayStartToEnd = 0;
+ var overNight = false;
+ var overNightTow = false;
+ var singleOver24 = new TimeSpan();
+ var towOver24 = new TimeSpan();
+ var panjshanbehOver24 = new TimeSpan();
+ var panjshanbehOver24Tow = new TimeSpan();
+ var rest = new TimeSpan();
+ var Over22 = new TimeSpan();
+
+ var starTimeSingel1 = new DateTime();
+ var endTimeSingel2 = new DateTime();
+ var singleShiftOver24 = new DateTime();
+ var startTimeTowSh1 = new DateTime();
+ var endTimeTowSh2 = new DateTime();
+ var nightWork22 = new DateTime();
+ var nightWork6 = new DateTime();
+
+ var rotatingResultList = new List();
+
+
+ singleShiftOver24 = Convert.ToDateTime("00:00");
+ nightWork22 = Convert.ToDateTime("22:00");
+ nightWork6 = Convert.ToDateTime("06:00");
+
+ var rest0 = new TimeSpan();
+ var rest1 = new TimeSpan();
+ var rest2 = new TimeSpan();
+ var rest3 = new TimeSpan();
+ var rest4 = new TimeSpan();
+ var rest5 = new TimeSpan();
+ var rest6 = new TimeSpan();
+
+ var rest0w1 = new TimeSpan();
+ var rest1w1 = new TimeSpan();
+ var rest2w1 = new TimeSpan();
+ var rest3w1 = new TimeSpan();
+ var rest4w1 = new TimeSpan();
+ var rest5w1 = new TimeSpan();
+ var rest6w1 = new TimeSpan();
+
+ var rest0w2 = new TimeSpan();
+ var rest1w2 = new TimeSpan();
+ var rest2w2 = new TimeSpan();
+ var rest3w2 = new TimeSpan();
+ var rest4w2 = new TimeSpan();
+ var rest5w2 = new TimeSpan();
+ var rest6w2 = new TimeSpan();
+
+ var rest0w3 = new TimeSpan();
+ var rest1w3 = new TimeSpan();
+ var rest2w3 = new TimeSpan();
+ var rest3w3 = new TimeSpan();
+ var rest4w3 = new TimeSpan();
+ var rest5w3 = new TimeSpan();
+ var rest6w3 = new TimeSpan();
+
+ var rest0w4 = new TimeSpan();
+ var rest1w4 = new TimeSpan();
+ var rest2w4 = new TimeSpan();
+ var rest3w4 = new TimeSpan();
+ var rest4w4 = new TimeSpan();
+ var rest5w4 = new TimeSpan();
+ var rest6w4 = new TimeSpan();
+
+ var SumSingle = new TimeSpan();
+ var SumTow = new TimeSpan();
+ var SumSingleHourses = 0;
+ var SumTowHourses = 0;
+
+ var sumRest = new TimeSpan();
+ var SumComplexDays = 0;
+ var OfficialHoliday = 0;
+
+ var conStartGr = command.ContarctStart.ToGeorgianDateTime();
+ var conEndGr = command.ContractEnd.ToGeorgianDateTime();
+
+ #endregion
+
+ #region SumRestTimesOneShift
+
+ switch (command.ShiftWork)
+ {
+ case "1":
+ case "2":
+ command.RestTime = command.RestTime == "0" ? "00" : command.RestTime;
+ command.RestTimeYekshanbeh = command.RestTimeYekshanbeh == "0" ? "00" : command.RestTimeYekshanbeh;
+ command.RestTimeDoshanbeh = command.RestTimeDoshanbeh == "0" ? "00" : command.RestTimeDoshanbeh;
+ command.RestTimeSeshanbeh = command.RestTimeSeshanbeh == "0" ? "00" : command.RestTimeSeshanbeh;
+ command.RestTimeCheharshanbeh =
+ command.RestTimeCheharshanbeh == "0" ? "00" : command.RestTimeCheharshanbeh;
+ command.RestTimePanjshanbeh = command.RestTimePanjshanbeh == "0" ? "00" : command.RestTimePanjshanbeh;
+ command.RestTimeJomeh = command.RestTimeJomeh == "0" ? "00" : command.RestTimeJomeh;
+ command.RestTimeMin = command.RestTimeMin == "0" ? "00" : command.RestTimeMin;
+ command.RestTimeYekshanbehMin =
+ command.RestTimeYekshanbehMin == "0" ? "00" : command.RestTimeYekshanbehMin;
+ command.RestTimeDoshanbehMin =
+ command.RestTimeDoshanbehMin == "0" ? "00" : command.RestTimeDoshanbehMin;
+ command.RestTimeSeshanbehMin =
+ command.RestTimeSeshanbehMin == "0" ? "00" : command.RestTimeSeshanbehMin;
+ command.RestTimeCheharshanbehMin =
+ command.RestTimeCheharshanbehMin == "0" ? "00" : command.RestTimeCheharshanbehMin;
+ command.RestTimePanjshanbehMin =
+ command.RestTimePanjshanbehMin == "0" ? "00" : command.RestTimePanjshanbehMin;
+ command.RestTimeJomehMin = command.RestTimeJomehMin == "0" ? "00" : command.RestTimeJomehMin;
+
+ rest0 = TimeSpan.Parse($"{command.RestTime}:{command.RestTimeMin}");
+ sumRest = sumRest.Add(rest0);
+ rest1 = TimeSpan.Parse($"{command.RestTimeYekshanbeh}:{command.RestTimeYekshanbehMin}");
+ sumRest = sumRest.Add(rest1);
+ rest2 = TimeSpan.Parse($"{command.RestTimeDoshanbeh}:{command.RestTimeDoshanbehMin}");
+ sumRest = sumRest.Add(rest2);
+ rest3 = TimeSpan.Parse($"{command.RestTimeSeshanbeh}:{command.RestTimeSeshanbehMin}");
+ sumRest = sumRest.Add(rest3);
+ rest4 = TimeSpan.Parse($"{command.RestTimeCheharshanbeh}:{command.RestTimeCheharshanbehMin}");
+ sumRest = sumRest.Add(rest4);
+ rest5 = TimeSpan.Parse($"{command.RestTimePanjshanbeh}:{command.RestTimePanjshanbehMin}");
+ sumRest = sumRest.Add(rest5);
+ rest6 = TimeSpan.Parse($"{command.RestTimeJomeh}:{command.RestTimeJomehMin}");
+ sumRest = sumRest.Add(rest6);
+ break;
+
+ case "4":
+ //week1
+ command.RestTimeShanbe1 = command.RestTimeShanbe1 == "0" ? "00" : command.RestTimeShanbe1;
+ command.RestTimeShanbe1Min = command.RestTimeShanbe1Min == "0" ? "00" : command.RestTimeShanbe1Min;
+ command.RestTimeYekShanbe1 = command.RestTimeYekShanbe1 == "0" ? "00" : command.RestTimeYekShanbe1;
+ command.RestTimeYekShanbe1Min =
+ command.RestTimeYekShanbe1Min == "0" ? "00" : command.RestTimeYekShanbe1Min;
+ command.RestTimeDoShanbe1 = command.RestTimeDoShanbe1 == "0" ? "00" : command.RestTimeDoShanbe1;
+ command.RestTimeDoShanbe1Min =
+ command.RestTimeDoShanbe1Min == "0" ? "00" : command.RestTimeDoShanbe1Min;
+ command.RestTimeSeShanbe1 = command.RestTimeSeShanbe1 == "0" ? "00" : command.RestTimeSeShanbe1;
+ command.RestTimeSeShanbe1Min =
+ command.RestTimeSeShanbe1Min == "0" ? "00" : command.RestTimeSeShanbe1Min;
+ command.RestTimeCheharShanbe1 =
+ command.RestTimeCheharShanbe1 == "0" ? "00" : command.RestTimeCheharShanbe1;
+ command.RestTimeCheharShanbe1Min =
+ command.RestTimeCheharShanbe1Min == "0" ? "00" : command.RestTimeCheharShanbe1Min;
+ command.RestTimePanjShanbe1 = command.RestTimePanjShanbe1 == "0" ? "00" : command.RestTimePanjShanbe1;
+ command.RestTimePanjShanbe1Min =
+ command.RestTimePanjShanbe1Min == "0" ? "00" : command.RestTimePanjShanbe1Min;
+ command.RestTimeJome1 = command.RestTimeJome1 == "0" ? "00" : command.RestTimeJome1;
+ command.RestTimeJome1Min = command.RestTimeJome1Min == "0" ? "00" : command.RestTimeJome1Min;
+
+ //week2
+ command.RestTimeShanbe2 = command.RestTimeShanbe2 == "0" ? "00" : command.RestTimeShanbe2;
+ command.RestTimeShanbe2Min = command.RestTimeShanbe2Min == "0" ? "00" : command.RestTimeShanbe2Min;
+ command.RestTimeYekShanbe2 = command.RestTimeYekShanbe2 == "0" ? "00" : command.RestTimeYekShanbe2;
+ command.RestTimeYekShanbe2Min =
+ command.RestTimeYekShanbe2Min == "0" ? "00" : command.RestTimeYekShanbe2Min;
+ command.RestTimeDoShanbe2 = command.RestTimeDoShanbe2 == "0" ? "00" : command.RestTimeDoShanbe2;
+ command.RestTimeDoShanbe2Min =
+ command.RestTimeDoShanbe2Min == "0" ? "00" : command.RestTimeDoShanbe2Min;
+ command.RestTimeSeShanbe2 = command.RestTimeSeShanbe2 == "0" ? "00" : command.RestTimeSeShanbe2;
+ command.RestTimeSeShanbe2Min =
+ command.RestTimeSeShanbe2Min == "0" ? "00" : command.RestTimeSeShanbe2Min;
+ command.RestTimeCheharShanbe2 =
+ command.RestTimeCheharShanbe2 == "0" ? "00" : command.RestTimeCheharShanbe2;
+ command.RestTimeCheharShanbe2Min =
+ command.RestTimeCheharShanbe2Min == "0" ? "00" : command.RestTimeCheharShanbe2Min;
+ command.RestTimePanjShanbe2 = command.RestTimePanjShanbe2 == "0" ? "00" : command.RestTimePanjShanbe2;
+ command.RestTimePanjShanbe2Min =
+ command.RestTimePanjShanbe2Min == "0" ? "00" : command.RestTimePanjShanbe2Min;
+ command.RestTimeJome2 = command.RestTimeJome2 == "0" ? "00" : command.RestTimeJome2;
+ command.RestTimeJome2Min = command.RestTimeJome2Min == "0" ? "00" : command.RestTimeJome2Min;
+
+ //week3
+ command.RestTimeShanbe3 = command.RestTimeShanbe3 == "0" ? "00" : command.RestTimeShanbe3;
+ command.RestTimeShanbe3Min = command.RestTimeShanbe3Min == "0" ? "00" : command.RestTimeShanbe3Min;
+ command.RestTimeYekShanbe3 = command.RestTimeYekShanbe3 == "0" ? "00" : command.RestTimeYekShanbe3;
+ command.RestTimeYekShanbe3Min =
+ command.RestTimeYekShanbe3Min == "0" ? "00" : command.RestTimeYekShanbe3Min;
+ command.RestTimeDoShanbe3 = command.RestTimeDoShanbe3 == "0" ? "00" : command.RestTimeDoShanbe3;
+ command.RestTimeDoShanbe3Min =
+ command.RestTimeDoShanbe3Min == "0" ? "00" : command.RestTimeDoShanbe3Min;
+ command.RestTimeSeShanbe3 = command.RestTimeSeShanbe3 == "0" ? "00" : command.RestTimeSeShanbe3;
+ command.RestTimeSeShanbe3Min =
+ command.RestTimeSeShanbe3Min == "0" ? "00" : command.RestTimeSeShanbe3Min;
+ command.RestTimeCheharShanbe3 =
+ command.RestTimeCheharShanbe3 == "0" ? "00" : command.RestTimeCheharShanbe3;
+ command.RestTimeCheharShanbe3Min =
+ command.RestTimeCheharShanbe3Min == "0" ? "00" : command.RestTimeCheharShanbe3Min;
+ command.RestTimePanjShanbe3 = command.RestTimePanjShanbe3 == "0" ? "00" : command.RestTimePanjShanbe3;
+ command.RestTimePanjShanbe3Min =
+ command.RestTimePanjShanbe3Min == "0" ? "00" : command.RestTimePanjShanbe3Min;
+ command.RestTimeJome3 = command.RestTimeJome3 == "0" ? "00" : command.RestTimeJome3;
+ command.RestTimeJome3Min = command.RestTimeJome3Min == "0" ? "00" : command.RestTimeJome3Min;
+
+ //week4
+ command.RestTimeShanbe4 = command.RestTimeShanbe4 == "0" ? "00" : command.RestTimeShanbe4;
+ command.RestTimeShanbe4Min = command.RestTimeShanbe4Min == "0" ? "00" : command.RestTimeShanbe4Min;
+ command.RestTimeYekShanbe4 = command.RestTimeYekShanbe4 == "0" ? "00" : command.RestTimeYekShanbe4;
+ command.RestTimeYekShanbe4Min =
+ command.RestTimeYekShanbe4Min == "0" ? "00" : command.RestTimeYekShanbe4Min;
+ command.RestTimeDoShanbe4 = command.RestTimeDoShanbe4 == "0" ? "00" : command.RestTimeDoShanbe4;
+ command.RestTimeDoShanbe4Min =
+ command.RestTimeDoShanbe4Min == "0" ? "00" : command.RestTimeDoShanbe4Min;
+ command.RestTimeSeShanbe4 = command.RestTimeSeShanbe4 == "0" ? "00" : command.RestTimeSeShanbe4;
+ command.RestTimeSeShanbe4Min =
+ command.RestTimeSeShanbe4Min == "0" ? "00" : command.RestTimeSeShanbe4Min;
+ command.RestTimeCheharShanbe4 =
+ command.RestTimeCheharShanbe4 == "0" ? "00" : command.RestTimeCheharShanbe4;
+ command.RestTimeCheharShanbe4Min =
+ command.RestTimeCheharShanbe4Min == "0" ? "00" : command.RestTimeCheharShanbe4Min;
+ command.RestTimePanjShanbe4 = command.RestTimePanjShanbe4 == "0" ? "00" : command.RestTimePanjShanbe4;
+ command.RestTimePanjShanbe4Min =
+ command.RestTimePanjShanbe4Min == "0" ? "00" : command.RestTimePanjShanbe4Min;
+ command.RestTimeJome4 = command.RestTimeJome4 == "0" ? "00" : command.RestTimeJome4;
+ command.RestTimeJome4Min = command.RestTimeJome4Min == "0" ? "00" : command.RestTimeJome4Min;
+
+ // sumrest week1
+ rest0w1 = TimeSpan.Parse($"{command.RestTimeShanbe1}:{command.RestTimeShanbe1Min}");
+ rest1w1 = TimeSpan.Parse($"{command.RestTimeYekShanbe1}:{command.RestTimeYekShanbe1Min}");
+ rest2w1 = TimeSpan.Parse($"{command.RestTimeDoShanbe1}:{command.RestTimeDoShanbe1Min}");
+ rest3w1 = TimeSpan.Parse($"{command.RestTimeSeShanbe1}:{command.RestTimeSeShanbe1Min}");
+ rest4w1 = TimeSpan.Parse($"{command.RestTimeCheharShanbe1}:{command.RestTimeCheharShanbe1Min}");
+ rest5w1 = TimeSpan.Parse($"{command.RestTimePanjShanbe1}:{command.RestTimePanjShanbe1Min}");
+ rest6w1 = TimeSpan.Parse($"{command.RestTimeJome1}:{command.RestTimeJome1Min}");
+
+ // sumrest week2
+ rest0w2 = TimeSpan.Parse($"{command.RestTimeShanbe2}:{command.RestTimeShanbe2Min}");
+ rest1w2 = TimeSpan.Parse($"{command.RestTimeYekShanbe2}:{command.RestTimeYekShanbe2Min}");
+ rest2w2 = TimeSpan.Parse($"{command.RestTimeDoShanbe2}:{command.RestTimeDoShanbe2Min}");
+ rest3w2 = TimeSpan.Parse($"{command.RestTimeSeShanbe2}:{command.RestTimeSeShanbe2Min}");
+ rest4w2 = TimeSpan.Parse($"{command.RestTimeCheharShanbe2}:{command.RestTimeCheharShanbe2Min}");
+ rest5w2 = TimeSpan.Parse($"{command.RestTimePanjShanbe2}:{command.RestTimePanjShanbe2Min}");
+ rest6w2 = TimeSpan.Parse($"{command.RestTimeJome2}:{command.RestTimeJome2Min}");
+
+ // sumrest week3
+ rest0w3 = TimeSpan.Parse($"{command.RestTimeShanbe3}:{command.RestTimeShanbe3Min}");
+ rest1w3 = TimeSpan.Parse($"{command.RestTimeYekShanbe3}:{command.RestTimeYekShanbe3Min}");
+ rest2w3 = TimeSpan.Parse($"{command.RestTimeDoShanbe3}:{command.RestTimeDoShanbe3Min}");
+ rest3w3 = TimeSpan.Parse($"{command.RestTimeSeShanbe3}:{command.RestTimeSeShanbe3Min}");
+ rest4w3 = TimeSpan.Parse($"{command.RestTimeCheharShanbe3}:{command.RestTimeCheharShanbe3Min}");
+ rest5w3 = TimeSpan.Parse($"{command.RestTimePanjShanbe3}:{command.RestTimePanjShanbe3Min}");
+ rest6w3 = TimeSpan.Parse($"{command.RestTimeJome3}:{command.RestTimeJome3Min}");
+
+ // sumrest week4
+ rest0w4 = TimeSpan.Parse($"{command.RestTimeShanbe4}:{command.RestTimeShanbe4Min}");
+ rest1w4 = TimeSpan.Parse($"{command.RestTimeYekShanbe4}:{command.RestTimeYekShanbe4Min}");
+ rest2w4 = TimeSpan.Parse($"{command.RestTimeDoShanbe4}:{command.RestTimeDoShanbe4Min}");
+ rest3w4 = TimeSpan.Parse($"{command.RestTimeSeShanbe4}:{command.RestTimeSeShanbe4Min}");
+ rest4w4 = TimeSpan.Parse($"{command.RestTimeCheharShanbe4}:{command.RestTimeCheharShanbe4Min}");
+ rest5w4 = TimeSpan.Parse($"{command.RestTimePanjShanbe4}:{command.RestTimePanjShanbe4Min}");
+ rest6w4 = TimeSpan.Parse($"{command.RestTimeJome4}:{command.RestTimeJome4Min}");
+ break;
+ }
+
+ #endregion
+
+ #region SumSingleAndTowShifts
+
+ var StartShanbehSingle = Convert.ToDateTime(command.SingleShift1);
+ var EndShanbehSingle = Convert.ToDateTime(command.SingleShift2);
+ if (StartShanbehSingle > EndShanbehSingle)
+ EndShanbehSingle = EndShanbehSingle.AddDays(1);
+ var ShanbehSingle = EndShanbehSingle - StartShanbehSingle;
+ SumSingle = SumSingle.Add(ShanbehSingle);
+
+ var StartYekShanbehSingle = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
+ var EndYekShanbehSingle = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
+ if (StartYekShanbehSingle > EndYekShanbehSingle)
+ EndYekShanbehSingle = EndYekShanbehSingle.AddDays(1);
+ var YekShanbehSingle = EndYekShanbehSingle - StartYekShanbehSingle;
+ SumSingle = SumSingle.Add(YekShanbehSingle);
+
+ var StartDoShanbehSingle = Convert.ToDateTime(command.SingleShift1Doshanbeh);
+ var EndDoShanbehSingle = Convert.ToDateTime(command.SingleShift2Doshanbeh);
+ if (StartDoShanbehSingle > EndDoShanbehSingle)
+ EndDoShanbehSingle = EndDoShanbehSingle.AddDays(1);
+ var DoShanbehSingle = EndDoShanbehSingle - StartDoShanbehSingle;
+ SumSingle = SumSingle.Add(DoShanbehSingle);
+
+
+ var StartSehShanbehSingle = Convert.ToDateTime(command.SingleShift1Seshanbeh);
+ var EndSehShanbehSingle = Convert.ToDateTime(command.SingleShift2Seshanbeh);
+ if (StartSehShanbehSingle > EndSehShanbehSingle)
+ EndSehShanbehSingle = EndSehShanbehSingle.AddDays(1);
+ var SeShanbehSingle = EndSehShanbehSingle - StartSehShanbehSingle;
+ SumSingle = SumSingle.Add(SeShanbehSingle);
+
+ var StartCheharShanbehSingle = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
+ var EndCheharShanbehSingle = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
+ if (StartCheharShanbehSingle > EndCheharShanbehSingle)
+ EndCheharShanbehSingle = EndCheharShanbehSingle.AddDays(1);
+ var CheharShanbehSingle = EndCheharShanbehSingle - StartCheharShanbehSingle;
+ SumSingle = SumSingle.Add(CheharShanbehSingle);
+
+ var StartPanjShanbehSingle = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
+ var EndPanjShanbehSingle = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
+ if (StartPanjShanbehSingle > EndPanjShanbehSingle)
+ EndPanjShanbehSingle = EndPanjShanbehSingle.AddDays(1);
+ var PanjShanbehSingle = EndPanjShanbehSingle - StartPanjShanbehSingle;
+ SumSingle = SumSingle.Add(PanjShanbehSingle);
+
+ var StartJomehSingle = Convert.ToDateTime(command.SingleShift1Jomeh);
+ var EndjomehSingle = Convert.ToDateTime(command.SingleShift2Jomeh);
+ if (StartJomehSingle > EndjomehSingle)
+ EndjomehSingle = EndjomehSingle.AddDays(1);
+ var JomehSingle = EndjomehSingle - StartJomehSingle;
+ SumSingle = SumSingle.Add(JomehSingle);
+ if (command.ShiftWork == "1") SumSingle = SumSingle.Subtract(sumRest);
+ //SumSingleHourses = (int)SumSingle.TotalHours;
+
+
+ var StartShanbehTow = Convert.ToDateTime(command.TowShifts1);
+ var EndShanbehTow = Convert.ToDateTime(command.TowShifts2);
+ if (StartShanbehTow > EndShanbehTow)
+ EndShanbehTow = EndShanbehTow.AddDays(1);
+ var ShanbehTow = EndShanbehTow - StartShanbehTow;
+ SumTow = SumTow.Add(ShanbehTow);
+
+ var StartYekShanbehTow = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
+ var EndYekShanbehTow = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
+ if (StartYekShanbehTow > EndYekShanbehTow)
+ EndYekShanbehTow = EndYekShanbehTow.AddDays(1);
+ var YekShanbehTow = EndYekShanbehTow - StartYekShanbehTow;
+ SumTow = SumTow.Add(YekShanbehTow);
+
+ var StartDoShanbehTow = Convert.ToDateTime(command.TowShifts1Doshanbeh);
+ var EndDoShanbehTow = Convert.ToDateTime(command.TowShifts2Doshanbeh);
+ if (StartDoShanbehTow > EndDoShanbehTow)
+ EndDoShanbehTow = EndDoShanbehTow.AddDays(1);
+ var DoShanbehTow = EndDoShanbehTow - StartDoShanbehTow;
+ SumTow = SumTow.Add(DoShanbehTow);
+
+
+ var StartSehShanbehTow = Convert.ToDateTime(command.TowShifts1Seshanbeh);
+ var EndSehShanbehTow = Convert.ToDateTime(command.TowShifts2Seshanbeh);
+ if (StartSehShanbehTow > EndSehShanbehTow)
+ EndSehShanbehTow = EndSehShanbehTow.AddDays(1);
+ var SeShanbehTow = EndSehShanbehTow - StartSehShanbehTow;
+ SumTow = SumTow.Add(SeShanbehTow);
+
+ var StartCheharShanbehTow = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
+ var EndCheharShanbehTow = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
+ if (StartCheharShanbehTow > EndCheharShanbehTow)
+ EndCheharShanbehTow = EndCheharShanbehTow.AddDays(1);
+ var CheharShanbehTow = EndCheharShanbehTow - StartCheharShanbehTow;
+ SumTow = SumTow.Add(CheharShanbehTow);
+
+ var StartPanjShanbehTow = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
+ var EndPanjShanbehTow = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
+ if (StartPanjShanbehTow > EndPanjShanbehTow)
+ EndPanjShanbehTow = EndPanjShanbehTow.AddDays(1);
+ var PanjShanbehTow = EndPanjShanbehTow - StartPanjShanbehTow;
+ SumTow = SumTow.Add(PanjShanbehTow);
+
+ var StartJomehTow = Convert.ToDateTime(command.TowShifts1Jomeh);
+ var EndjomehTow = Convert.ToDateTime(command.TowShifts2Jomeh);
+ if (StartJomehTow > EndjomehTow)
+ EndjomehTow = EndjomehTow.AddDays(1);
+ var jomehTow = EndjomehTow - StartJomehTow;
+ SumTow = SumTow.Add(jomehTow);
+
+ //SumTowHourses = (int)SumTow.TotalHours;
+
+ #endregion
+
+ #region ComplexSumWorkTime
+
+ if (command.ShiftWork == "5")
+ SumWorkeTime = "24 - 12";
+ else if (command.ShiftWork == "6")
+ SumWorkeTime = "24 - 24";
+ else if (command.ShiftWork == "7")
+ SumWorkeTime = "36 - 12";
+ else if (command.ShiftWork == "8") SumWorkeTime = "48 - 24";
+
+ #endregion
+
+ #region OneAndTowShiftsCompute
+
+ var dailyFix = TimeSpan.Parse("07:20");
+ var notHolidays = new TimeSpan();
+ var HolidaysAndNot = new TimeSpan();
+ var jomeh = new TimeSpan();
+
+ var sdate = command.ContarctStart.ToEnglishNumber();
+ var edate = command.ContractEnd.ToEnglishNumber();
+ var syear = Convert.ToInt32(sdate.Substring(0, 4));
+ var smonth = Convert.ToInt32(sdate.Substring(5, 2));
+ var sday = Convert.ToInt32(sdate.Substring(8, 2));
+
+ var eyear = Convert.ToInt32(edate.Substring(0, 4));
+ var emonth = Convert.ToInt32(edate.Substring(5, 2));
+ var eday = Convert.ToInt32(edate.Substring(8, 2));
+
+ var d1 = new PersianDateTime(syear, smonth, sday);
+ var d2 = new PersianDateTime(eyear, emonth, eday);
+ int i = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
+ var holidayList = _holidayItemRepository.GetHolidayItem(sdate.Substring(0, 4));
+
+ #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)
+ if (da.DayOfWeek == "شنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ 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)
+ if (da.DayOfWeek == "یکشنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ {
+ i1 += 1;
+
+ if (command.ShiftWork == "1")
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ var singleSpan1 = endTimeSingel2 - starTimeSingel1;
+
+ singleSpan1 = singleSpan1.Subtract(rest1);
+
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
+ //Over22Compute = Over22Compute.Subtract(rest);
+ Over22 = Over22.Add(Over22Compute);
+ }
+
+ else if (command.ShiftWork == "2")
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ if (startTimeTowSh1 > endTimeTowSh2)
+ {
+ overNight = true;
+ endTimeTowSh2 = endTimeTowSh2.AddDays(1);
+ }
+
+ var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
+ var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
+ notHolidays = notHolidays.Add(singleSpanTow1);
+ notHolidays = notHolidays.Add(singleSpanTow2);
+
+ var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22ComputeTow1);
+ var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
+ Over22 = Over22.Add(Over22ComputeTow2);
+ }
+ }
+ }
+
+ if (command.doshanbeh)
+ if (da.DayOfWeek == "دوشنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ {
+ i2 += 1;
+ switch (command.ShiftWork)
+ {
+ case "1":
+
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ var singleSpan1 = endTimeSingel2 - starTimeSingel1;
+
+ singleSpan1 = singleSpan1.Subtract(rest2);
+
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
+
+ Over22 = Over22.Add(Over22Compute);
+ break;
+
+ case "2":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Doshanbeh);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Doshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ if (startTimeTowSh1 > endTimeTowSh2)
+ {
+ overNight = true;
+ endTimeTowSh2 = endTimeTowSh2.AddDays(1);
+ }
+
+ var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
+ var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
+ notHolidays = notHolidays.Add(singleSpanTow1);
+ notHolidays = notHolidays.Add(singleSpanTow2);
+
+ var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22ComputeTow1);
+ var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
+ Over22 = Over22.Add(Over22ComputeTow2);
+ break;
+ }
+ }
+ }
+
+ if (command.seshanbeh)
+ if (da.DayOfWeek == "سه شنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ {
+ i3 += 1;
+ switch (command.ShiftWork)
+ {
+ case "1":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ var singleSpan1 = endTimeSingel2 - starTimeSingel1;
+
+ singleSpan1 = singleSpan1.Subtract(rest3);
+
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22Compute);
+ break;
+
+ case "2":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Seshanbeh);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Seshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ if (startTimeTowSh1 > endTimeTowSh2)
+ {
+ overNight = true;
+ endTimeTowSh2 = endTimeTowSh2.AddDays(1);
+ }
+
+ var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
+ var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
+ notHolidays = notHolidays.Add(singleSpanTow1);
+ notHolidays = notHolidays.Add(singleSpanTow2);
+
+ var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22ComputeTow1);
+ var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
+ Over22 = Over22.Add(Over22ComputeTow2);
+ break;
+ }
+ }
+ }
+
+ if (command.cheharshanbeh)
+ if (da.DayOfWeek == "چهارشنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ {
+ i4 += 1;
+ switch (command.ShiftWork)
+ {
+ case "1":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ var singleSpan1 = endTimeSingel2 - starTimeSingel1;
+
+ singleSpan1 = singleSpan1.Subtract(rest4);
+
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22Compute);
+ break;
+
+ case "2":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ if (startTimeTowSh1 > endTimeTowSh2)
+ {
+ overNight = true;
+ endTimeTowSh2 = endTimeTowSh2.AddDays(1);
+ }
+
+ var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
+ var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
+ notHolidays = notHolidays.Add(singleSpanTow1);
+ notHolidays = notHolidays.Add(singleSpanTow2);
+
+ var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22ComputeTow1);
+ var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
+ Over22 = Over22.Add(Over22ComputeTow2);
+ break;
+ }
+ }
+ }
+
+ if (command.pangshanbeh)
+ if (da.DayOfWeek == "پنج شنبه")
+ {
+ var test = da.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ {
+ i5 += 1;
+ switch (command.ShiftWork)
+ {
+ case "1":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ singleOver24 = endTimeSingel2 - singleShiftOver24;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ var singleSpan1 = endTimeSingel2 - starTimeSingel1;
+
+ singleSpan1 = singleSpan1.Subtract(rest5);
+
+ singleSpan1 = singleSpan1.Subtract(singleOver24);
+ jomeh = jomeh.Add(singleOver24);
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22Compute);
+ break;
+
+ case "2":
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
+ var singleOver24Tow = new TimeSpan();
+ if (starTimeSingel1 > endTimeSingel2)
+ {
+ overNight = true;
+ singleOver24 = endTimeSingel2 - singleShiftOver24;
+ endTimeSingel2 = endTimeSingel2.AddDays(1);
+ }
+
+ if (startTimeTowSh1 > endTimeTowSh2)
+ {
+ overNight = true;
+ singleOver24Tow = endTimeTowSh2 - singleShiftOver24;
+ endTimeTowSh2 = endTimeTowSh2.AddDays(1);
+ }
+
+ var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
+ var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
+
+
+ singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
+ singleSpanTow2 = singleSpanTow2.Subtract(singleOver24Tow);
+
+ jomeh = jomeh.Add(singleOver24);
+ jomeh = jomeh.Add(singleOver24Tow);
+
+ notHolidays = notHolidays.Add(singleSpanTow1);
+ notHolidays = notHolidays.Add(singleSpanTow2);
+
+ var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
+ Over22 = Over22.Add(Over22ComputeTow1);
+ var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
+ Over22 = Over22.Add(Over22ComputeTow2);
+ break;
+ }
+ }
+ }
+
+ if (command.jomeh)
+ {
+ 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);
+ var w1 = 0;
+ var w2 = 0;
+ var w3 = 0;
+ var w4 = 0;
+ var w5 = 0;
+ var 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
+ sumRest = sumRest.Add(rest0w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
+
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
+ sumRest = sumRest.Add(rest0w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
+ sumRest = sumRest.Add(rest0w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
+ sumRest = sumRest.Add(rest0w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
+ sumRest = sumRest.Add(rest0w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
+ sumRest = sumRest.Add(rest0w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1Shanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
+ sumRest = sumRest.Add(rest1w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
+ sumRest = sumRest.Add(rest1w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
+ sumRest = sumRest.Add(rest1w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
+ sumRest = sumRest.Add(rest1w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
+ sumRest = sumRest.Add(rest1w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
+ sumRest = sumRest.Add(rest1w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1YekShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
+ sumRest = sumRest.Add(rest2w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
+ sumRest = sumRest.Add(rest2w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
+ sumRest = sumRest.Add(rest2w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
+ sumRest = sumRest.Add(rest2w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
+ sumRest = sumRest.Add(rest2w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
+ sumRest = sumRest.Add(rest2w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1DoShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
+ sumRest = sumRest.Add(rest3w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
+ sumRest = sumRest.Add(rest3w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
+ sumRest = sumRest.Add(rest3w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
+ sumRest = sumRest.Add(rest3w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
+ sumRest = sumRest.Add(rest3w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
+ sumRest = sumRest.Add(rest3w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1SeShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
+ sumRest = sumRest.Add(rest4w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
+ sumRest = sumRest.Add(rest4w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
+ sumRest = sumRest.Add(rest4w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
+ sumRest = sumRest.Add(rest4w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
+ sumRest = sumRest.Add(rest4w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
+ sumRest = sumRest.Add(rest4w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1CheharShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
+ sumRest = sumRest.Add(rest5w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
+ // if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
+ sumRest = sumRest.Add(rest5w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
+ sumRest = sumRest.Add(rest5w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe3))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
+ sumRest = sumRest.Add(rest5w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe4))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
+ sumRest = sumRest.Add(rest5w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe1))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
+ sumRest = sumRest.Add(rest5w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ else
+ {
+ starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
+ endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
+ startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
+ endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
+ //if (string.IsNullOrWhiteSpace(command.TowShifts1PanjShanbe2))
+ if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
+ startTimeTowSh1, endTimeTowSh2);
+ HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
+ }
+ }
+ }
+
+ 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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
+ sumRest = sumRest.Add(rest6w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
+ sumRest = sumRest.Add(rest6w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w3)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w3);
+ sumRest = sumRest.Add(rest6w3);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w4)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w4);
+ sumRest = sumRest.Add(rest6w4);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
+ sumRest = sumRest.Add(rest6w1);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+ else if (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))
+ if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
+ endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
+ sumRest = sumRest.Add(rest6w2);
+
+ var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
+ endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ }
+ }
+
+ 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 || x.IsEveningShift || x.IsNightShift).ToList();
+ }
+
+ #endregion
+
+ #region ComplexCompute
+
+ else if (command.ShiftWork == "5") //12-24
+ {
+ var now = DateTime.Now;
+ var sdate2 = command.ContarctStart.ToEnglishNumber();
+ var edate2 = command.ContractEnd.ToEnglishNumber();
+ var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
+ var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
+ var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
+
+ var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
+ var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
+ var eday2 = Convert.ToInt32(edate.Substring(8, 2));
+
+ var d1b = new PersianDateTime(syear2, smonth2, sday2);
+ var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
+
+ var start = Convert.ToDateTime(command.Start1224);
+ var end = Convert.ToDateTime(command.End1224);
+ if (string.IsNullOrWhiteSpace(command.Start1224))
+ start = Convert.ToDateTime(command.StartComplex);
+ if (string.IsNullOrWhiteSpace(command.End1224))
+ end = Convert.ToDateTime(command.EndComplex);
+
+ var sh = start.Hour;
+ var sm = start.Minute;
+ var eh = end.Hour;
+ var em = end.Minute;
+ var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
+ var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
+
+ end = endDateTime.ToGregorianDateTime();
+
+
+ for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(36))
+ {
+ var test = $"{da2}";
+ if (da2.DayOfWeek == "جمعه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+
+ var singleSpanTow1 = new TimeSpan();
+
+ i6 += 1;
+ if (start.Date < end.Date)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+ singleSpanTow1 = end - start;
+ singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleOver24);
+ jomeh = jomeh.Add(singleSpanTow1);
+ i += 1;
+ }
+ else
+ {
+ singleSpanTow1 = end - start;
+ jomeh = jomeh.Add(singleSpanTow1);
+ }
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+ var endCal = end - start;
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(endCal);
+ }
+ else if (da2.DayOfWeek == "پنج شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = new TimeSpan();
+ i5 += 1;
+ if (start.Date < end.Date && start.Day != end.Day)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+
+ jomeh = jomeh.Add(singleOver24);
+
+ i6 += 1;
+
+ singleSpan1 = end - start;
+ singleSpan1 = singleSpan1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+ else
+ {
+ singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ var endCal = end - start;
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(endCal);
+ }
+ else if (da2.DayOfWeek == "شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i += 1;
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "یکشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i1 += 1;
+
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "دوشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i2 += 1;
+
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "سه شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ i3 += 1;
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "چهارشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i4 += 1;
+ var NextStart = start.AddHours(36);
+ end = NextStart.Add(singleSpan1);
+ }
+ }
+
+
+ for (var daa = d1b; daa <= d2b; daa.AddDays(1))
+ if (daa.DayOfWeek != "جمعه")
+ {
+ var test = daa.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ SumComplexDays += 1;
+ else
+ OfficialHoliday += 1;
+ }
+ else
+ {
+ FridayStartToEnd += 1;
+ }
+ }
+ else if (command.ShiftWork == "6") //24-24
+ {
+ var now = DateTime.Now;
+ var sdate2 = command.ContarctStart.ToEnglishNumber();
+ var edate2 = command.ContractEnd.ToEnglishNumber();
+ var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
+ var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
+ var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
+
+ var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
+ var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
+ var eday2 = Convert.ToInt32(edate.Substring(8, 2));
+
+ var d1b = new PersianDateTime(syear2, smonth2, sday2);
+ var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
+
+ var start = Convert.ToDateTime(command.Start2424);
+ var end = Convert.ToDateTime(command.End2424);
+ if (string.IsNullOrWhiteSpace(command.Start2424))
+ start = Convert.ToDateTime(command.StartComplex);
+ if (string.IsNullOrWhiteSpace(command.End2424))
+ end = Convert.ToDateTime(command.EndComplex);
+
+ var sh = start.Hour;
+ var sm = start.Minute;
+ var eh = end.Hour;
+ var em = end.Minute;
+ var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
+ var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
+ //if (start > end)
+ //{
+
+ // endDateTime.AddDays(1);
+ //}
+
+ endDateTime.AddDays(1);
+ end = endDateTime.ToGregorianDateTime();
+
+
+ for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
+ {
+ var test = $"{da2}";
+ if (da2.DayOfWeek == "جمعه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpanTow1 = new TimeSpan();
+ var WorkHours = end - start;
+ i6 += 1;
+ if (start.Date < end.Date)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+ singleSpanTow1 = end - start;
+ singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleOver24);
+ jomeh = jomeh.Add(singleSpanTow1);
+ i += 1;
+ }
+ else
+ {
+ singleSpanTow1 = end - start;
+ jomeh = jomeh.Add(singleSpanTow1);
+ }
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "پنج شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ var singleSpan1 = new TimeSpan();
+ var WorkHours = end - start;
+ i5 += 1;
+ if (start.Date < end.Date && start.Day != end.Day)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+
+ jomeh = jomeh.Add(singleOver24);
+
+ i6 += 1;
+
+ singleSpan1 = end - start;
+ singleSpan1 = singleSpan1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+ else
+ {
+ singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "یکشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i1 += 1;
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "دوشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i2 += 1;
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "سه شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i3 += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "چهارشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i4 += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ }
+
+
+ for (var daa = d1b; daa <= d2b; daa.AddDays(1))
+ if (daa.DayOfWeek != "جمعه")
+ {
+ var test = daa.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ SumComplexDays += 1;
+ else
+ OfficialHoliday += 1;
+ }
+ else
+ {
+ FridayStartToEnd += 1;
+ }
+ }
+ else if (command.ShiftWork == "7") //12-36
+ {
+ var now = DateTime.Now;
+ var sdate2 = command.ContarctStart.ToEnglishNumber();
+ var edate2 = command.ContractEnd.ToEnglishNumber();
+ var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
+ var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
+ var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
+
+ var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
+ var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
+ var eday2 = Convert.ToInt32(edate.Substring(8, 2));
+
+ var d1b = new PersianDateTime(syear2, smonth2, sday2);
+ var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
+
+ var start = Convert.ToDateTime(command.Start1236);
+ var end = Convert.ToDateTime(command.End1236);
+ if (string.IsNullOrWhiteSpace(command.Start1236))
+ start = Convert.ToDateTime(command.StartComplex);
+ if (string.IsNullOrWhiteSpace(command.End1236))
+ end = Convert.ToDateTime(command.EndComplex);
+
+ var sh = start.Hour;
+ var sm = start.Minute;
+ var eh = end.Hour;
+ var em = end.Minute;
+ var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
+ var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
+ //if (start > end)
+ //{
+
+ // endDateTime.AddDays(1);
+ //}
+
+ //endDateTime.AddDays(1);
+ end = endDateTime.ToGregorianDateTime();
+
+
+ for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
+ {
+ var test = $"{da2}";
+ if (da2.DayOfWeek == "جمعه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+
+ var singleSpanTow1 = new TimeSpan();
+
+ i6 += 1;
+ if (start.Date < end.Date)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+ singleSpanTow1 = end - start;
+ singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleOver24);
+ jomeh = jomeh.Add(singleSpanTow1);
+ i += 1;
+ }
+ else
+ {
+ singleSpanTow1 = end - start;
+ jomeh = jomeh.Add(singleSpanTow1);
+ }
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ var WorkHours = end - start;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "پنج شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = new TimeSpan();
+
+ i5 += 1;
+ if (start.Date < end.Date && start.Day != end.Day)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+
+ jomeh = jomeh.Add(singleOver24);
+
+ i6 += 1;
+
+ singleSpan1 = end - start;
+ singleSpan1 = singleSpan1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+ else
+ {
+ singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ var WorkHours = end - start;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "یکشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i1 += 1;
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "دوشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i2 += 1;
+
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "سه شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ i3 += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "چهارشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
+ end = end.AddDays(1);
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i4 += 1;
+ var NextStart = start.AddHours(48);
+ end = NextStart.Add(singleSpan1);
+ }
+ }
+
+
+ for (var daa = d1b; daa <= d2b; daa.AddDays(1))
+ if (daa.DayOfWeek != "جمعه")
+ {
+ var test = daa.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ SumComplexDays += 1;
+ else
+ OfficialHoliday += 1;
+ }
+ else
+ {
+ FridayStartToEnd += 1;
+ }
+ }
+ else if (command.ShiftWork == "8") //24-48
+ {
+ var now = DateTime.Now;
+ var sdate2 = command.ContarctStart.ToEnglishNumber();
+ var edate2 = command.ContractEnd.ToEnglishNumber();
+ var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
+ var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
+ var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
+
+ var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
+ var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
+ var eday2 = Convert.ToInt32(edate.Substring(8, 2));
+
+ var d1b = new PersianDateTime(syear2, smonth2, sday2);
+ var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
+
+ var start = Convert.ToDateTime(command.Start2448);
+ var end = Convert.ToDateTime(command.End2448);
+ if (string.IsNullOrWhiteSpace(command.Start2448))
+ start = Convert.ToDateTime(command.StartComplex);
+ if (string.IsNullOrWhiteSpace(command.End2448))
+ end = Convert.ToDateTime(command.EndComplex);
+
+ var sh = start.Hour;
+ var sm = start.Minute;
+ var eh = end.Hour;
+ var em = end.Minute;
+ var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
+ var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
+ //if (start > end)
+ //{
+
+ // endDateTime.AddDays(1);
+ //}
+
+
+ end = endDateTime.ToGregorianDateTime();
+ end = end.AddDays(1);
+
+
+ for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(72))
+ {
+ var test = $"{da2}";
+ if (da2.DayOfWeek == "جمعه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpanTow1 = new TimeSpan();
+
+ i6 += 1;
+ if (start.Date < end.Date)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+ singleSpanTow1 = end - start;
+ singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleOver24);
+ jomeh = jomeh.Add(singleSpanTow1);
+ i += 1;
+ }
+ else
+ {
+ singleSpanTow1 = end - start;
+ jomeh = jomeh.Add(singleSpanTow1);
+ }
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ var WorkHours = end - start;
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "پنج شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ var singleSpan1 = new TimeSpan();
+
+ i5 += 1;
+ if (start.Date < end.Date && start.Day != end.Day)
+ {
+ overNight = true;
+ var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
+ singleOver24 = end - over24;
+
+
+ jomeh = jomeh.Add(singleOver24);
+
+ i6 += 1;
+
+ singleSpan1 = end - start;
+ singleSpan1 = singleSpan1.Subtract(singleOver24);
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+ else
+ {
+ singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+ }
+
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ var WorkHours = end - start;
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(WorkHours);
+ }
+ else if (da2.DayOfWeek == "شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i += 1;
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "یکشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i1 += 1;
+
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "دوشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i2 += 1;
+
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "سه شنبه")
+ {
+ start = da2.ToGregorianDateTime();
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+ i3 += 1;
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(singleSpan1);
+ }
+ else if (da2.DayOfWeek == "چهارشنبه")
+ {
+ start = da2.ToGregorianDateTime();
+
+ var singleSpan1 = end - start;
+ notHolidays = notHolidays.Add(singleSpan1);
+
+ var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
+ start.Second);
+ var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
+ end.Second);
+ var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
+ rotatingCheck.RotatingDate = test;
+ rotatingResultList.Add(rotatingCheck);
+ //var Over22Computing = Over22Complex2424(start, end);
+ Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
+
+
+ i4 += 1;
+ var NextStart = start.AddHours(72);
+ end = NextStart.Add(singleSpan1);
+ }
+ }
+
+
+ for (var daa = d1b; daa <= d2b; daa.AddDays(1))
+ if (daa.DayOfWeek != "جمعه")
+ {
+ var test = daa.ToGregorianDateTime();
+ var checkHoliday = _holidayItemRepository.GetHoliday(test);
+ if (checkHoliday == false)
+ SumComplexDays += 1;
+ else
+ OfficialHoliday += 1;
+ }
+ else
+ {
+ FridayStartToEnd += 1;
+ }
+ }
+
+ #endregion
+
+ #region DayCounterAndDailyFix
+
+ var sumDays = i + i1 + i2 + i3 + i4 + i5 + i6;
+ var holidaysCount = i6;
+ var notHolidaysCount = i + i1 + i2 + i3 + i4 + i5;
+ // ساعات موظفی
+ var ComplexFix = dailyFix.Multiply(SumComplexDays);
+
+ dailyFix = dailyFix.Multiply(sumDays);
+
+ Notholiday = notHolidaysCount.ToString();
+ Holidays = holidaysCount.ToString();
+
+ var searchModel = new LeftWorkSearchModel
+ {
+ EmployeeId = command.EmployeeId,
+ WorkshopId = command.WorkshopId
+ };
+
+ var leftworkList = _leftWorkApplication.search(searchModel);
+ var lastLeftWork = leftworkList.FirstOrDefault();
+
+ var conStart = conStartGr;
+ var EndOfM = Convert.ToInt32(command.ContractEnd.Substring(8, 2));
+ var conEnd = conEndGr;
+ if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < conEnd)
+ {
+ conEnd = lastLeftWork.LeftWorkDateGr.AddDays(-1);
+ }
+ else
+ {
+ if (EndOfM == 31) conEnd = conEnd.AddDays(-1);
+ }
+
+
+ var AllDaysCount = (conEnd - conStart).TotalDays + 1;
+ var endContract = command.ContractEnd.ToGeorgianDateTime();
+ var allDays = (endContract - conStart).TotalDays + 1;
+
+
+ var jomeh2 = new TimeSpan();
+
+ var notHolidays2 = new TimeSpan();
+ var Mandatory = new TimeSpan();
+
+
+ notHolidays = notHolidays.Add(jomeh);
+
+ var workingDaysH = (int)notHolidays.TotalHours;
+ var workingDaysM = notHolidays.TotalMinutes % 60;
+
+ HolidaysAndNot = HolidaysAndNot.Add(notHolidays);
+ var totalHolidaysAndNotH = (int)HolidaysAndNot.TotalHours;
+ var totalHolidaysAndNotM = HolidaysAndNot.TotalMinutes % 60;
+ notHolidays2 = notHolidays2.Add(jomeh2);
+
+
+ var SumNotHolidays = notHolidays.Add(notHolidays2);
+ var SumNotHolidaysHours = (int)SumNotHolidays.TotalHours;
+ var SumNotHolidaysMinuts = SumNotHolidays.Minutes % 60;
+
+ var SumHolidays = jomeh.Add(jomeh2);
+ var SumHolidaysHours = (int)SumHolidays.TotalHours;
+ var SumHolidaysMinuts = SumHolidays.Minutes % 60;
+
+ var totalHoursShift1 = notHolidays;
+ var totalHoursShift1And2 = SumNotHolidays;
+
+ #endregion
+
+ #region DailyFeeCompute
+
+ var basic = "0";
+
+ var GetWorkStartDate = command.GetWorkDateHide.ToEnglishNumber();
+ var GetWorkEndDate = command.ContractEnd.ToEnglishNumber();
+ var styear = Convert.ToInt32(GetWorkStartDate.Substring(0, 4));
+ var stmonth = Convert.ToInt32(GetWorkStartDate.Substring(5, 2));
+ var stday = Convert.ToInt32(GetWorkStartDate.Substring(8, 2));
+
+ var edyear = Convert.ToInt32(GetWorkEndDate.Substring(0, 4));
+ var edmonth = Convert.ToInt32(GetWorkEndDate.Substring(5, 2));
+ var edday = Convert.ToInt32(GetWorkEndDate.Substring(8, 2));
+ var startDate = command.GetWorkDateHide.ToGeorgianDateTime();
+ var endDate = command.ContractEnd.ToGeorgianDateTime();
+ var dayliFee = "خطای تاریخ";
+ var contractStartDate = command.ContarctStart.ToGeorgianDateTime();
+ if (styear >= 1370)
+ {
+ if (leftworkList == null)
+ leftworkList = new List();
+
+ var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStartDate,
+ contractStartDate, command.EmployeeId, command.WorkshopId, leftworkList);
+ dayliFee = dayliFeeResult.DayliFee;
+ basic = dayliFeeResult.Basic;
+ }
+
+ #endregion
+
+ #region ConsumableItemsAndHousingAndFamily
+
+ var ConsumableItems = _yearlySalaryRepository.ConsumableItems(contractStartDate);
+ var HousingAllowance = _yearlySalaryRepository.HousingAllowance(contractStartDate);
+
+ var familyAllowance = _yearlySalaryRepository.FamilyAllowanceAutoExtention(command.EmployeeId, contractStartDate);
+
+ #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 totalDyasUnder30 = 0.0;
+ var startMonth = $"{command.ContarctStart.Substring(0, 8)}01";
+ var startMonthGr = startMonth.ToGeorgianDateTime();
+ var endOfMonth = command.ContarctStart.FindeEndOfMonth();
+ var endOgMonthGr = endOfMonth.ToGeorgianDateTime();
+ if (conEnd > endOgMonthGr)
+ {
+ if (startMonthGr == conStartGr)
+ totalDyasUnder30 = (endOgMonthGr - conStartGr).TotalDays + 1;
+ else
+ totalDyasUnder30 = (endOgMonthGr - conStartGr).TotalDays;
+ }
+ else if (conEnd <= endOgMonthGr)
+ {
+ if (startMonthGr == conStartGr)
+ totalDyasUnder30 = (conEndGr - conStartGr).TotalDays + 1;
+ else
+ totalDyasUnder30 = (conEndGr - conStartGr).TotalDays;
+ }
+
+
+ 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 *
+ totalDyasUnder30; // کمک هزینه کارکرد یک روز ضربدر تعداد روزهای قرارداد ماکسیمم یک ماه
+ HousingAllowance = HousingStep4.ToMoney();
+
+ var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
+ var consumableItemsStep1 = ConsumableItemsNumberType / 30;
+ var consumableItemsStep2 = consumableItemsStep1 / 7.33;
+ var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay;
+ var consumableItemsStep4 = consumableItemsStep3 * totalDyasUnder30;
+ 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 * totalDyasUnder30;
+ familyAllowance = familyAllowanceStep4.ToMoney();
+ }
+
+ if (totalWeek > 1)
+ {
+ double weekAvrage = 0;
+ if (totalHourses < 44.00)
+ weekAvrage = totalHourses * 6 / TotalContractDays;
+ else
+ weekAvrage = totalHourses * 6 / TotalDaysNoFriday;
+ //var oneday = weekAvrage * 6;
+ var totalShiftRound = Math.Round(weekAvrage, 2);
+ SumWorkeTime = $"{totalShiftRound}";
+ }
+ else if (totalWeek <= 1 && TotalDaysNoFriday <= 6)
+ {
+ var totalShiftRound = Math.Round(totalHourses, 2);
+ SumWorkeTime = $"{totalShiftRound}";
+ }
+ else if (totalWeek <= 1 && TotalDaysNoFriday > 6)
+
+ {
+ var perDyeWorked = totalHourses / TotalDaysNoFriday;
+ var weekAvrage = perDyeWorked * 6;
+ var totalShiftRound = Math.Round(weekAvrage, 2);
+ SumWorkeTime = $"{totalShiftRound}";
+ }
+
+ weeklyTime = totalHoursShift1;
+ }
+ else
+ {
+ //var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
+ //var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
+ //var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
+
+ //var HousingStep1 = HousingAllowonceNumberType / 30;
+ //var HousingStep4 = HousingStep1 * AllDaysCount;
+ //HousingAllowance = HousingStep4.ToMoney();
+
+
+ //var consumableItemsStep1 = ConsumableItemsNumberType / 30;
+ //var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount;
+ //ConsumableItems = consumableItemsStep4.ToMoney();
+
+ //if (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);
+ var eveningCount = rotatingResultList.Count(x => x.IsEveningShift);
+ var nightCount = rotatingResultList.Count(x => x.IsNightShift);
+
+ var RotatingfaName = new List();
+ if (moriningCount > 0)
+ RotatingfaName.Add("صبح");
+ if (eveningCount > 0)
+ RotatingfaName.Add("عصر");
+ if (nightCount > 0)
+ RotatingfaName.Add("شب");
+ var rotatingFaResult = "";
+ if (RotatingfaName.Count > 1)
+ {
+ shiftOver22Hours = "0";
+ shiftOver22Minuts = "0";
+ for (var 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");
+ var morningWorkingTime1 = new TimeSpan();
+ var eveningWorkingTime1 = new TimeSpan();
+ var nightWorkingTime1 = new TimeSpan();
+ var morningWorkingTime2 = new TimeSpan();
+ var eveningWorkingTime2 = new TimeSpan();
+ var 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)
+ {
+ var Over22 = new TimeSpan();
+ var singleShiftOver24 = Convert.ToDateTime("00:00");
+ var nightWork22 = Convert.ToDateTime("22:00");
+ var nightWork6 = Convert.ToDateTime("06:00");
+ var starTimeSingel1 = date1;
+ var endTimeSingel2 = date2;
+ var 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)
+ {
+ var Over22Result = new TimeSpan();
+ var Over24 = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
+ var nightWork22 = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
+ var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
+ var nightWork6 = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
+ var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
+ var starTime = date1;
+ var 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)
+ {
+ var Over22Result = new TimeSpan();
+ var Over24a = new DateTime(date1.Year, date1.Month, date1.Day, 0, 0, 0);
+ var Over24b = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
+ var nightWork22a = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
+ var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
+
+ var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
+ var nightWork6b = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
+ var starTime = date1;
+ var endTime = date2;
+
+ if (starTime >= Over24a && starTime <= nightWork6a)
+ {
+ if (endTime > nightWork22a && endTime <= nightWork6b)
+ {
+ var night1 = nightWork6a - starTime;
+ var 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)
+ {
+ var night1 = nightWork6b - starTime;
+ var night2 = endTime - nightWork22b;
+ Over22Result = night1.Add(night2);
+ }
+ }
+
+
+ return Over22Result;
+ }
+
+ #endregion
+
+ #endregion
}
\ No newline at end of file