From f249df5b49ddc23cfbe4af31e8ac32d7e3516e3c Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 10 Jun 2025 20:02:50 +0330 Subject: [PATCH] RotatingShiftReport And Compute Changed - StaticWorkongHoures Interference bug fixed --- 0_Framework/Application/Tools.cs | 67 + .../Repository/RollCallMandatoryRepository.cs | 182 +- .../Company/Workshops/AutoExtension.cshtml.cs | 12884 ++++++++-------- 3 files changed, 6584 insertions(+), 6549 deletions(-) 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