diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs index 167c323c..e9a0125a 100644 --- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs +++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs @@ -107,5 +107,14 @@ public interface ICheckoutRepository : IRepository /// Task> CheckoutPrint(List ids); + /// + /// دریافت قردادها و جداول وابسته برای ایجاد فیش + /// + /// + /// + /// + Task> GetContractsAndIncludeDataDataToCreateCheckout( + List ids, string month); + #endregion } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Checkout/Dto/GetContractAndIncludesDataToCreateDto.cs b/CompanyManagment.App.Contracts/Checkout/Dto/GetContractAndIncludesDataToCreateDto.cs new file mode 100644 index 00000000..8c916d79 --- /dev/null +++ b/CompanyManagment.App.Contracts/Checkout/Dto/GetContractAndIncludesDataToCreateDto.cs @@ -0,0 +1,6 @@ +namespace CompanyManagment.App.Contracts.Checkout.Dto; + +public class GetContractAndIncludesDataToCreateDto +{ + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs index 5b938ead..2a74d2dd 100644 --- a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs +++ b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs @@ -106,6 +106,14 @@ public interface ICheckoutApplication /// Task>> GetContractToCreateCheckout(long workshopId, string year, string month, long employeeId); + /// + /// ایجاد فیش حقوقی + /// + /// + /// + /// + /// + Task CreateCheckoutApi(List ids, string year, string month); #endregion } diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs index deb70a9f..240b5668 100644 --- a/CompanyManagment.Application/CheckoutApplication.cs +++ b/CompanyManagment.Application/CheckoutApplication.cs @@ -789,7 +789,7 @@ public class CheckoutApplication : ICheckoutApplication } - public async Task CreateCheckoutApi(List ContractsId, string ConvertYear, string ConvertMonth) + public async Task CreateCheckoutApi(List ids, string year, string month) { var op = new OperationResult(); @@ -798,26 +798,26 @@ public class CheckoutApplication : ICheckoutApplication #region Validation - if (!string.IsNullOrWhiteSpace(ConvertYear) && string.IsNullOrWhiteSpace(ConvertMonth)) + if (!string.IsNullOrWhiteSpace(year) && string.IsNullOrWhiteSpace(month)) return op.Failed("ماه را انتخاب کنید"); - if (string.IsNullOrWhiteSpace(ConvertYear) && !string.IsNullOrWhiteSpace(ConvertMonth)) + if (string.IsNullOrWhiteSpace(year) && !string.IsNullOrWhiteSpace(month)) return op.Failed("سال را انتخاب کنید"); - if (string.IsNullOrWhiteSpace(ConvertYear) && string.IsNullOrWhiteSpace(ConvertMonth)) + if (string.IsNullOrWhiteSpace(year) && string.IsNullOrWhiteSpace(month)) { - ConvertYear = "0"; - ConvertMonth = "0"; + year = "0"; + month = "0"; var today = DateTime.Now; var FaToday = today.ToFarsi(); - var year = FaToday.Substring(0, 4); - var month = FaToday.Substring(5, 2); + var convertedYear = FaToday.Substring(0, 4); + var convertedMonth = FaToday.Substring(5, 2); - ConvertYear = year; - ConvertMonth = month; + year = convertedYear; + month = convertedMonth; } - if (ContractsId.Count == 0) + if (ids.Count == 0) return op.Failed("هیچ موردی انتخاب نشده اشت"); #endregion @@ -829,6 +829,8 @@ public class CheckoutApplication : ICheckoutApplication #endregion + var getContcatsData = + _checkoutRepository.GetContractsAndIncludeDataDataToCreateCheckout(ids, month); return op.Succcedded(); } #endregion diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 95cd3c8e..97ee960a 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -1,6 +1,7 @@ using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.CheckoutAgg; +using Company.Domain.EmployeeAgg; using Company.Domain.LeftWorkAgg; using Company.Domain.RollCallAgg; using Company.Domain.RollCallEmployeeAgg; @@ -10,6 +11,7 @@ using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Checkout.Dto; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.EmployeeComputeOptions; using CompanyManagment.App.Contracts.HolidayItem; using CompanyManagment.App.Contracts.InstitutionPlan; using CompanyManagment.App.Contracts.InsuranceList; @@ -35,6 +37,7 @@ using System.Linq; using System.Reflection.Metadata.Ecma335; using System.Threading.Tasks; using System.Xml.XPath; +using static CompanyManagment.EFCore.Repository.ContractRepository; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace CompanyManagment.EFCore.Repository; @@ -2759,7 +2762,1456 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos return employees; } + public async Task> GetContractsAndIncludeDataDataToCreateCheckout(List ids, string month) + { + var op = new OperationResult(); + var watch = new Stopwatch(); + watch.Start(); + //دریافت قراداد ها + var contracts =await _context.Contracts.Where(x => ids.Contains(x.id)).AsNoTracking().ToListAsync(); + if (!contracts.Any()) + return op.Failed("قرادادی یافت نشد"); + var employeeIds = contracts.Select(x => x.EmployeeId).ToList(); + var workshopId = contracts.First().WorkshopIds; + //دریافت اطلاعات کارگاه + var workshop = await _context.Workshops.FirstAsync(x => x.id == workshopId); + + //دریافت اطلاعات پرسنل ها + var employees = await _context.Employees.Where(x => employeeIds.Contains(x.id)).AsNoTracking().ToListAsync(); + //دریافت اطلاعت ساعت کاری + #region WorkingHours + var getWorkingHours = await _context.WorkingHoursSet.Where(x => ids.Contains(x.ContractId)) + .Include(x => x.WorkingHoursItemsList) + .AsNoTracking() + .ToListAsync(); + if (!getWorkingHours.Any()) + return op.Failed("ساعات کاری قراداد یافت نشد"); + + var workingHoursList = new List(); + foreach (var workingHours in getWorkingHours) + { + if (workingHours != null) + { + var items = workingHours?.WorkingHoursItemsList; + + if (workingHours.ShiftWork == "1" || workingHours.ShiftWork == "2") + { + var shanbeh = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") ? true : false; + var yekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") ? true : false; + var doshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") ? true : false; + var seshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") ? true : false; + var cheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") ? true : false; + var pangshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") ? true : false; + var jomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") ? true : false; + + var RestTime = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "0")?.RestTime + : null; + var RestTimeYekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "1")?.RestTime + : null; + var RestTimeDoshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "2")?.RestTime + : null; + var RestTimeSeshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "3")?.RestTime + : null; + var RestTimeCheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "4")?.RestTime + : null; + var RestTimePanjshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "5")?.RestTime + : null; + var RestTimeJomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "6")?.RestTime + : null; + + var SingleShift1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "0")?.Start1 + : null; + var SingleShift2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "0")?.End1 + : null; + var TowShifts1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "0")?.Start2 + : null; + var TowShifts2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "0")?.End2 + : null; + + var SingleShift1Yekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "1")?.Start1 + : null; + var SingleShift2Yekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "1")?.End1 + : null; + var TowShifts1Yekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "1")?.Start2 + : null; + var TowShifts2Yekshanbeh = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "1")?.End2 + : null; + + var SingleShift1Doshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "2")?.Start1 + : null; + var SingleShift2Doshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "2")?.End1 + : null; + var TowShifts1Doshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "2")?.Start2 + : null; + var TowShifts2Doshanbeh = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "2")?.End2 + : null; + + var SingleShift1Seshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "3")?.Start1 + : null; + var SingleShift2Seshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "3")?.End1 + : null; + var TowShifts1Seshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "3")?.Start2 + : null; + var TowShifts2Seshanbeh = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "3")?.End2 + : null; + + var SingleShift1Cheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "4")?.Start1 + : null; + var SingleShift2Cheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "4")?.End1 + : null; + var TowShifts1Cheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "4")?.Start2 + : null; + var TowShifts2Cheharshanbeh = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "4")?.End2 + : null; + + var SingleShift1Panjshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "5")?.Start1 + : null; + var SingleShift2Panjshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "5")?.End1 + : null; + var TowShifts1Panjshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "5")?.Start2 + : null; + var TowShifts2Panjshanbeh = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "5")?.End2 + : null; + + var SingleShift1Jomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "6")?.Start1 + : null; + var SingleShift2Jomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "6")?.End1 + : null; + var TowShifts1Jomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "6")?.Start2 + : null; + var TowShifts2Jomeh = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "0") + ? items.FirstOrDefault(x => x.DayOfWork == "6")?.End2 + : null; + + var result = new CreateWorkingHoursTemp + { + WorknigHoursId = workingHours.id, + ShiftWork = "4", + ShiftWorkTemp = "1", + + #region week1 + + //week1 + Shanbe1 = shanbeh, + YekShanbe1 = yekshanbeh, + DoShanbe1 = doshanbeh, + SeShanbe1 = seshanbeh, + CheharShanbe1 = cheharshanbeh, + PanjShanbe1 = pangshanbeh, + Jome1 = jomeh, + + RestTimeShanbe1 = RestTime, + RestTimeYekShanbe1 = RestTimeYekshanbeh, + RestTimeDoShanbe1 = RestTimeDoshanbeh, + RestTimeSeShanbe1 = RestTimeSeshanbeh, + RestTimeCheharShanbe1 = RestTimeCheharshanbeh, + RestTimePanjShanbe1 = RestTimePanjshanbeh, + RestTimeJome1 = RestTimeJomeh, + + SingleShift1Shanbe1 = SingleShift1, + SingleShift2Shanbe1 = SingleShift2, + TowShifts1Shanbe1 = TowShifts1, + TowShifts2Shanbe1 = TowShifts2, + + SingleShift1YekShanbe1 = SingleShift1Yekshanbeh, + SingleShift2YekShanbe1 = SingleShift2Yekshanbeh, + TowShifts1YekShanbe1 = TowShifts1Yekshanbeh, + TowShifts2YekShanbe1 = TowShifts2Yekshanbeh, + + SingleShift1DoShanbe1 = SingleShift1Doshanbeh, + SingleShift2DoShanbe1 = SingleShift2Doshanbeh, + TowShifts1DoShanbe1 = TowShifts1Doshanbeh, + TowShifts2DoShanbe1 = TowShifts2Doshanbeh, + + SingleShift1SeShanbe1 = SingleShift1Seshanbeh, + SingleShift2SeShanbe1 = SingleShift2Seshanbeh, + TowShifts1SeShanbe1 = TowShifts1Seshanbeh, + TowShifts2SeShanbe1 = TowShifts2Seshanbeh, + + SingleShift1CheharShanbe1 = SingleShift1Cheharshanbeh, + SingleShift2CheharShanbe1 = SingleShift2Cheharshanbeh, + TowShifts1CheharShanbe1 = TowShifts1Cheharshanbeh, + TowShifts2CheharShanbe1 = TowShifts2Cheharshanbeh, + + SingleShift1PanjShanbe1 = SingleShift1Panjshanbeh, + SingleShift2PanjShanbe1 = SingleShift2Panjshanbeh, + TowShifts1PanjShanbe1 = TowShifts1Panjshanbeh, + TowShifts2PanjShanbe1 = TowShifts2Panjshanbeh, + + SingleShift1Jome1 = SingleShift1Jomeh, + SingleShift2Jome1 = SingleShift2Jomeh, + TowShifts1Jome1 = TowShifts1Jomeh, + TowShifts2Jome1 = TowShifts2Jomeh, + + #endregion + + #region week2 + + //week2 + Shanbe2 = shanbeh, + YekShanbe2 = yekshanbeh, + DoShanbe2 = doshanbeh, + SeShanbe2 = seshanbeh, + CheharShanbe2 = cheharshanbeh, + PanjShanbe2 = pangshanbeh, + Jome2 = jomeh, + + RestTimeShanbe2 = RestTime, + RestTimeYekShanbe2 = RestTimeYekshanbeh, + RestTimeDoShanbe2 = RestTimeDoshanbeh, + RestTimeSeShanbe2 = RestTimeSeshanbeh, + RestTimeCheharShanbe2 = RestTimeCheharshanbeh, + RestTimePanjShanbe2 = RestTimePanjshanbeh, + RestTimeJome2 = RestTimeJomeh, + + + SingleShift1Shanbe2 = SingleShift1, + SingleShift2Shanbe2 = SingleShift2, + TowShifts1Shanbe2 = TowShifts1, + TowShifts2Shanbe2 = TowShifts2, + + SingleShift1YekShanbe2 = SingleShift1Yekshanbeh, + SingleShift2YekShanbe2 = SingleShift2Yekshanbeh, + TowShifts1YekShanbe2 = TowShifts1Yekshanbeh, + TowShifts2YekShanbe2 = TowShifts2Yekshanbeh, + + SingleShift1DoShanbe2 = SingleShift1Doshanbeh, + SingleShift2DoShanbe2 = SingleShift2Doshanbeh, + TowShifts1DoShanbe2 = TowShifts1Doshanbeh, + TowShifts2DoShanbe2 = TowShifts2Doshanbeh, + + SingleShift1SeShanbe2 = SingleShift1Seshanbeh, + SingleShift2SeShanbe2 = SingleShift2Seshanbeh, + TowShifts1SeShanbe2 = TowShifts1Seshanbeh, + TowShifts2SeShanbe2 = TowShifts2Seshanbeh, + + SingleShift1CheharShanbe2 = SingleShift1Cheharshanbeh, + SingleShift2CheharShanbe2 = SingleShift2Cheharshanbeh, + TowShifts1CheharShanbe2 = TowShifts1Cheharshanbeh, + TowShifts2CheharShanbe2 = TowShifts2Cheharshanbeh, + + SingleShift1PanjShanbe2 = SingleShift1Panjshanbeh, + SingleShift2PanjShanbe2 = SingleShift2Panjshanbeh, + TowShifts1PanjShanbe2 = TowShifts1Panjshanbeh, + TowShifts2PanjShanbe2 = TowShifts2Panjshanbeh, + + SingleShift1Jome2 = SingleShift1Jomeh, + SingleShift2Jome2 = SingleShift2Jomeh, + TowShifts1Jome2 = TowShifts1Jomeh, + TowShifts2Jome2 = TowShifts2Jomeh, + + #endregion + + + #region week3 + + //week3 + Shanbe3 = shanbeh, + YekShanbe3 = yekshanbeh, + DoShanbe3 = doshanbeh, + SeShanbe3 = seshanbeh, + CheharShanbe3 = cheharshanbeh, + PanjShanbe3 = pangshanbeh, + Jome3 = jomeh, + + RestTimeShanbe3 = RestTime, + RestTimeYekShanbe3 = RestTimeYekshanbeh, + RestTimeDoShanbe3 = RestTimeDoshanbeh, + RestTimeSeShanbe3 = RestTimeSeshanbeh, + RestTimeCheharShanbe3 = RestTimeCheharshanbeh, + RestTimePanjShanbe3 = RestTimePanjshanbeh, + RestTimeJome3 = RestTimeJomeh, + + + SingleShift1Shanbe3 = SingleShift1, + SingleShift2Shanbe3 = SingleShift2, + TowShifts1Shanbe3 = TowShifts1, + TowShifts2Shanbe3 = TowShifts2, + + SingleShift1YekShanbe3 = SingleShift1Yekshanbeh, + SingleShift2YekShanbe3 = SingleShift2Yekshanbeh, + TowShifts1YekShanbe3 = TowShifts1Yekshanbeh, + TowShifts2YekShanbe3 = TowShifts2Yekshanbeh, + + SingleShift1DoShanbe3 = SingleShift1Doshanbeh, + SingleShift2DoShanbe3 = SingleShift2Doshanbeh, + TowShifts1DoShanbe3 = TowShifts1Doshanbeh, + TowShifts2DoShanbe3 = TowShifts2Doshanbeh, + + SingleShift1SeShanbe3 = SingleShift1Seshanbeh, + SingleShift2SeShanbe3 = SingleShift2Seshanbeh, + TowShifts1SeShanbe3 = TowShifts1Seshanbeh, + TowShifts2SeShanbe3 = TowShifts2Seshanbeh, + + SingleShift1CheharShanbe3 = SingleShift1Cheharshanbeh, + SingleShift2CheharShanbe3 = SingleShift2Cheharshanbeh, + TowShifts1CheharShanbe3 = TowShifts1Cheharshanbeh, + TowShifts2CheharShanbe3 = TowShifts2Cheharshanbeh, + + SingleShift1PanjShanbe3 = SingleShift1Panjshanbeh, + SingleShift2PanjShanbe3 = SingleShift2Panjshanbeh, + TowShifts1PanjShanbe3 = TowShifts1Panjshanbeh, + TowShifts2PanjShanbe3 = TowShifts2Panjshanbeh, + + SingleShift1Jome3 = SingleShift1Jomeh, + SingleShift2Jome3 = SingleShift2Jomeh, + TowShifts1Jome3 = TowShifts1Jomeh, + TowShifts2Jome3 = TowShifts2Jomeh, + + #endregion + + #region week4 + + //week4 + Shanbe4 = shanbeh, + YekShanbe4 = yekshanbeh, + DoShanbe4 = doshanbeh, + SeShanbe4 = seshanbeh, + CheharShanbe4 = cheharshanbeh, + PanjShanbe4 = pangshanbeh, + Jome4 = jomeh, + + RestTimeShanbe4 = RestTime, + RestTimeYekShanbe4 = RestTimeYekshanbeh, + RestTimeDoShanbe4 = RestTimeDoshanbeh, + RestTimeSeShanbe4 = RestTimeSeshanbeh, + RestTimeCheharShanbe4 = RestTimeCheharshanbeh, + RestTimePanjShanbe4 = RestTimePanjshanbeh, + RestTimeJome4 = RestTimeJomeh, + + + SingleShift1Shanbe4 = SingleShift1, + SingleShift2Shanbe4 = SingleShift2, + TowShifts1Shanbe4 = TowShifts1, + TowShifts2Shanbe4 = TowShifts2, + + SingleShift1YekShanbe4 = SingleShift1Yekshanbeh, + SingleShift2YekShanbe4 = SingleShift2Yekshanbeh, + TowShifts1YekShanbe4 = TowShifts1Yekshanbeh, + TowShifts2YekShanbe4 = TowShifts2Yekshanbeh, + + SingleShift1DoShanbe4 = SingleShift1Doshanbeh, + SingleShift2DoShanbe4 = SingleShift2Doshanbeh, + TowShifts1DoShanbe4 = TowShifts1Doshanbeh, + TowShifts2DoShanbe4 = TowShifts2Doshanbeh, + + SingleShift1SeShanbe4 = SingleShift1Seshanbeh, + SingleShift2SeShanbe4 = SingleShift2Seshanbeh, + TowShifts1SeShanbe4 = TowShifts1Seshanbeh, + TowShifts2SeShanbe4 = TowShifts2Seshanbeh, + + SingleShift1CheharShanbe4 = SingleShift1Cheharshanbeh, + SingleShift2CheharShanbe4 = SingleShift2Cheharshanbeh, + TowShifts1CheharShanbe4 = TowShifts1Cheharshanbeh, + TowShifts2CheharShanbe4 = TowShifts2Cheharshanbeh, + + SingleShift1PanjShanbe4 = SingleShift1Panjshanbeh, + SingleShift2PanjShanbe4 = SingleShift2Panjshanbeh, + TowShifts1PanjShanbe4 = TowShifts1Panjshanbeh, + TowShifts2PanjShanbe4 = TowShifts2Panjshanbeh, + + SingleShift1Jome4 = SingleShift1Jomeh, + SingleShift2Jome4 = SingleShift2Jomeh, + TowShifts1Jome4 = TowShifts1Jomeh, + TowShifts2Jome4 = TowShifts2Jomeh, + + #endregion + }; + //تفکیک ساعت استراحت + + #region TafkikRest + + #region Week1 + + var restTimeShanbe1 = result.RestTimeShanbe1; + result.RestTimeShanbe1 = restTimeShanbe1.RestTimeSplit(); + result.RestTimeShanbe1Min = restTimeShanbe1.RestTimeMinSplit(); + var restTimeYekShanbe1 = result.RestTimeYekShanbe1; + result.RestTimeYekShanbe1 = restTimeYekShanbe1.RestTimeSplit(); + result.RestTimeYekShanbe1Min = restTimeYekShanbe1.RestTimeMinSplit(); + var restTimeDoShanbe1 = result.RestTimeDoShanbe1; + result.RestTimeDoShanbe1 = restTimeDoShanbe1.RestTimeSplit(); + result.RestTimeDoShanbe1Min = restTimeDoShanbe1.RestTimeMinSplit(); + var restTimeSeShanbe1 = result.RestTimeSeShanbe1; + result.RestTimeSeShanbe1 = restTimeSeShanbe1.RestTimeSplit(); + result.RestTimeSeShanbe1Min = restTimeSeShanbe1.RestTimeMinSplit(); + var restTimeCheharShanbe1 = result.RestTimeCheharShanbe1; + result.RestTimeCheharShanbe1 = restTimeCheharShanbe1.RestTimeSplit(); + result.RestTimeCheharShanbe1Min = restTimeCheharShanbe1.RestTimeMinSplit(); + var restTimePanjShanbe1 = result.RestTimePanjShanbe1; + result.RestTimePanjShanbe1 = restTimePanjShanbe1.RestTimeSplit(); + result.RestTimePanjShanbe1Min = restTimePanjShanbe1.RestTimeMinSplit(); + var restTimeJome1 = result.RestTimeJome1; + result.RestTimeJome1 = restTimeJome1.RestTimeSplit(); + result.RestTimeJome1Min = restTimeJome1.RestTimeMinSplit(); + + #endregion + + #region week2 + + var restTimeShanbe2 = result.RestTimeShanbe2; + result.RestTimeShanbe2 = restTimeShanbe2.RestTimeSplit(); + result.RestTimeShanbe2Min = restTimeShanbe2.RestTimeMinSplit(); + var restTimeYekShanbe2 = result.RestTimeYekShanbe2; + result.RestTimeYekShanbe2 = restTimeYekShanbe2.RestTimeSplit(); + result.RestTimeYekShanbe2Min = restTimeYekShanbe2.RestTimeMinSplit(); + var restTimeDoShanbe2 = result.RestTimeDoShanbe2; + result.RestTimeDoShanbe2 = restTimeDoShanbe2.RestTimeSplit(); + result.RestTimeDoShanbe2Min = restTimeDoShanbe2.RestTimeMinSplit(); + var restTimeSeShanbe2 = result.RestTimeSeShanbe2; + result.RestTimeSeShanbe2 = restTimeSeShanbe2.RestTimeSplit(); + result.RestTimeSeShanbe2Min = restTimeSeShanbe2.RestTimeMinSplit(); + var restTimeCheharShanbe2 = result.RestTimeCheharShanbe2; + result.RestTimeCheharShanbe2 = restTimeCheharShanbe2.RestTimeSplit(); + result.RestTimeCheharShanbe2Min = restTimeCheharShanbe2.RestTimeMinSplit(); + var restTimePanjShanbe2 = result.RestTimePanjShanbe2; + result.RestTimePanjShanbe2 = restTimePanjShanbe2.RestTimeSplit(); + result.RestTimePanjShanbe2Min = restTimePanjShanbe2.RestTimeMinSplit(); + var restTimeJome2 = result.RestTimeJome2; + result.RestTimeJome2 = restTimeJome2.RestTimeSplit(); + result.RestTimeJome2Min = restTimeJome2.RestTimeMinSplit(); + + #endregion + + #region week3 + + var restTimeShanbe3 = result.RestTimeShanbe3; + result.RestTimeShanbe3 = restTimeShanbe3.RestTimeSplit(); + result.RestTimeShanbe3Min = restTimeShanbe3.RestTimeMinSplit(); + var restTimeYekShanbe3 = result.RestTimeYekShanbe3; + result.RestTimeYekShanbe3 = restTimeYekShanbe3.RestTimeSplit(); + result.RestTimeYekShanbe3Min = restTimeYekShanbe3.RestTimeMinSplit(); + var restTimeDoShanbe3 = result.RestTimeDoShanbe3; + result.RestTimeDoShanbe3 = restTimeDoShanbe3.RestTimeSplit(); + result.RestTimeDoShanbe3Min = restTimeDoShanbe3.RestTimeMinSplit(); + var restTimeSeShanbe3 = result.RestTimeSeShanbe3; + result.RestTimeSeShanbe3 = restTimeSeShanbe3.RestTimeSplit(); + result.RestTimeSeShanbe3Min = restTimeSeShanbe3.RestTimeMinSplit(); + var restTimeCheharShanbe3 = result.RestTimeCheharShanbe3; + result.RestTimeCheharShanbe3 = restTimeCheharShanbe3.RestTimeSplit(); + result.RestTimeCheharShanbe3Min = restTimeCheharShanbe3.RestTimeMinSplit(); + var restTimePanjShanbe3 = result.RestTimePanjShanbe3; + result.RestTimePanjShanbe3 = restTimePanjShanbe3.RestTimeSplit(); + result.RestTimePanjShanbe3Min = restTimePanjShanbe3.RestTimeMinSplit(); + var restTimeJome3 = result.RestTimeJome3; + result.RestTimeJome3 = restTimeJome3.RestTimeSplit(); + result.RestTimeJome3Min = restTimeJome3.RestTimeMinSplit(); + + #endregion + + #region week4 + + var restTimeShanbe4 = result.RestTimeShanbe4; + result.RestTimeShanbe4 = restTimeShanbe4.RestTimeSplit(); + result.RestTimeShanbe4Min = restTimeShanbe4.RestTimeMinSplit(); + var restTimeYekShanbe4 = result.RestTimeYekShanbe4; + result.RestTimeYekShanbe4 = restTimeYekShanbe4.RestTimeSplit(); + result.RestTimeYekShanbe4Min = restTimeYekShanbe4.RestTimeMinSplit(); + var restTimeDoShanbe4 = result.RestTimeDoShanbe4; + result.RestTimeDoShanbe4 = restTimeDoShanbe4.RestTimeSplit(); + result.RestTimeDoShanbe4Min = restTimeDoShanbe4.RestTimeMinSplit(); + var restTimeSeShanbe4 = result.RestTimeSeShanbe4; + result.RestTimeSeShanbe4 = restTimeSeShanbe4.RestTimeSplit(); + result.RestTimeSeShanbe4Min = restTimeSeShanbe4.RestTimeMinSplit(); + var restTimeCheharShanbe4 = result.RestTimeCheharShanbe4; + result.RestTimeCheharShanbe4 = restTimeCheharShanbe4.RestTimeSplit(); + result.RestTimeCheharShanbe4Min = restTimeCheharShanbe4.RestTimeMinSplit(); + var restTimePanjShanbe4 = result.RestTimePanjShanbe4; + result.RestTimePanjShanbe4 = restTimePanjShanbe4.RestTimeSplit(); + result.RestTimePanjShanbe4Min = restTimePanjShanbe4.RestTimeMinSplit(); + var restTimeJome4 = result.RestTimeJome4; + result.RestTimeJome4 = restTimeJome4.RestTimeSplit(); + result.RestTimeJome4Min = restTimeJome4.RestTimeMinSplit(); + + #endregion + + #endregion + + workingHoursList.Add(result); ; + } + + if (workingHours.ShiftWork == "4") + { + var result = new CreateWorkingHoursTemp + { + WorknigHoursId = workingHours.id, + ShiftWork = workingHours.ShiftWork, + ShiftWorkTemp = "4", + + //week1 + Shanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") ? true : false, + YekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") ? true : false, + DoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") ? true : false, + SeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") ? true : false, + CheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") ? true : false, + PanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") ? true : false, + Jome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") ? true : false, + + RestTimeShanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "1")?.RestTime + : null, + RestTimeYekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "1")?.RestTime + : null, + RestTimeDoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "1")?.RestTime + : null, + RestTimeSeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "1")?.RestTime + : null, + RestTimeCheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "1")?.RestTime + : null, + RestTimePanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "1")?.RestTime + : null, + RestTimeJome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "1")?.RestTime + : null, + + SingleShift1Shanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2Shanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1Shanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2Shanbe1 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1YekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2YekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1YekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2YekShanbe1 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1DoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2DoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1DoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2DoShanbe1 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1SeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2SeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1SeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2SeShanbe1 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1CheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2CheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1CheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2CheharShanbe1 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1PanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2PanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1PanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2PanjShanbe1 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "1")?.End2 + : null, + + SingleShift1Jome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "1")?.Start1 + : null, + SingleShift2Jome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "1")?.End1 + : null, + TowShifts1Jome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "1")?.Start2 + : null, + TowShifts2Jome1 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "1") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "1")?.End2 + : null, + + //week2 + Shanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") ? true : false, + YekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") ? true : false, + DoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") ? true : false, + SeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") ? true : false, + CheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") ? true : false, + PanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") ? true : false, + Jome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") ? true : false, + + RestTimeShanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "2")?.RestTime + : null, + RestTimeYekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "2")?.RestTime + : null, + RestTimeDoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "2")?.RestTime + : null, + RestTimeSeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "2")?.RestTime + : null, + RestTimeCheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "2")?.RestTime + : null, + RestTimePanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "2")?.RestTime + : null, + RestTimeJome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "2")?.RestTime + : null, + + SingleShift1Shanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2Shanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1Shanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2Shanbe2 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1YekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2YekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1YekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2YekShanbe2 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1DoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2DoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1DoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2DoShanbe2 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1SeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2SeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1SeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2SeShanbe2 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1CheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2CheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1CheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2CheharShanbe2 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1PanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2PanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1PanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2PanjShanbe2 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "2")?.End2 + : null, + + SingleShift1Jome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "2")?.Start1 + : null, + SingleShift2Jome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "2")?.End1 + : null, + TowShifts1Jome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "2")?.Start2 + : null, + TowShifts2Jome2 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "2") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "2")?.End2 + : null, + + //week3 + Shanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") ? true : false, + YekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") ? true : false, + DoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") ? true : false, + SeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") ? true : false, + CheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") ? true : false, + PanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") ? true : false, + Jome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") ? true : false, + + RestTimeShanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "3")?.RestTime + : null, + RestTimeYekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "3")?.RestTime + : null, + RestTimeDoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "3")?.RestTime + : null, + RestTimeSeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "3")?.RestTime + : null, + RestTimeCheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "3")?.RestTime + : null, + RestTimePanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "3")?.RestTime + : null, + RestTimeJome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "3")?.RestTime + : null, + + SingleShift1Shanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2Shanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1Shanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2Shanbe3 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1YekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2YekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1YekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2YekShanbe3 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1DoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2DoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1DoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2DoShanbe3 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1SeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2SeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1SeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2SeShanbe3 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1CheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2CheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1CheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2CheharShanbe3 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1PanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2PanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1PanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2PanjShanbe3 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "3")?.End2 + : null, + + SingleShift1Jome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "3")?.Start1 + : null, + SingleShift2Jome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "3")?.End1 + : null, + TowShifts1Jome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "3")?.Start2 + : null, + TowShifts2Jome3 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "3") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "3")?.End2 + : null, + + + //week4 + Shanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") ? true : false, + YekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") ? true : false, + DoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") ? true : false, + SeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") ? true : false, + CheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") ? true : false, + PanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") ? true : false, + Jome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") ? true : false, + + RestTimeShanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "4")?.RestTime + : null, + RestTimeYekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "4")?.RestTime + : null, + RestTimeDoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "4")?.RestTime + : null, + RestTimeSeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "4")?.RestTime + : null, + RestTimeCheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "4")?.RestTime + : null, + RestTimePanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "4")?.RestTime + : null, + RestTimeJome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "4")?.RestTime + : null, + + SingleShift1Shanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2Shanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1Shanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2Shanbe4 = items.Any(x => x.DayOfWork == "0" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "0" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1YekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2YekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1YekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2YekShanbe4 = items.Any(x => x.DayOfWork == "1" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "1" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1DoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2DoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1DoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2DoShanbe4 = items.Any(x => x.DayOfWork == "2" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "2" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1SeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2SeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1SeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2SeShanbe4 = items.Any(x => x.DayOfWork == "3" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "3" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1CheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2CheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1CheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2CheharShanbe4 = items.Any(x => x.DayOfWork == "4" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "4" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1PanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2PanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1PanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2PanjShanbe4 = items.Any(x => x.DayOfWork == "5" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "5" && x.WeekNumber == "4")?.End2 + : null, + + SingleShift1Jome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "4")?.Start1 + : null, + SingleShift2Jome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "4")?.End1 + : null, + TowShifts1Jome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "4")?.Start2 + : null, + TowShifts2Jome4 = items.Any(x => x.DayOfWork == "6" && x.WeekNumber == "4") + ? items.FirstOrDefault(x => x.DayOfWork == "6" && x.WeekNumber == "4")?.End2 + : null + }; + //تفکیک ساعت استراحت + + #region TafkikRest + + #region Week1 + + var restTimeShanbe1 = result.RestTimeShanbe1; + result.RestTimeShanbe1 = restTimeShanbe1.RestTimeSplit(); + result.RestTimeShanbe1Min = restTimeShanbe1.RestTimeMinSplit(); + var restTimeYekShanbe1 = result.RestTimeYekShanbe1; + result.RestTimeYekShanbe1 = restTimeYekShanbe1.RestTimeSplit(); + result.RestTimeYekShanbe1Min = restTimeYekShanbe1.RestTimeMinSplit(); + var restTimeDoShanbe1 = result.RestTimeDoShanbe1; + result.RestTimeDoShanbe1 = restTimeDoShanbe1.RestTimeSplit(); + result.RestTimeDoShanbe1Min = restTimeDoShanbe1.RestTimeMinSplit(); + var restTimeSeShanbe1 = result.RestTimeSeShanbe1; + result.RestTimeSeShanbe1 = restTimeSeShanbe1.RestTimeSplit(); + result.RestTimeSeShanbe1Min = restTimeSeShanbe1.RestTimeMinSplit(); + var restTimeCheharShanbe1 = result.RestTimeCheharShanbe1; + result.RestTimeCheharShanbe1 = restTimeCheharShanbe1.RestTimeSplit(); + result.RestTimeCheharShanbe1Min = restTimeCheharShanbe1.RestTimeMinSplit(); + var restTimePanjShanbe1 = result.RestTimePanjShanbe1; + result.RestTimePanjShanbe1 = restTimePanjShanbe1.RestTimeSplit(); + result.RestTimePanjShanbe1Min = restTimePanjShanbe1.RestTimeMinSplit(); + var restTimeJome1 = result.RestTimeJome1; + result.RestTimeJome1 = restTimeJome1.RestTimeSplit(); + result.RestTimeJome1Min = restTimeJome1.RestTimeMinSplit(); + + #endregion + + #region week2 + + var restTimeShanbe2 = result.RestTimeShanbe2; + result.RestTimeShanbe2 = restTimeShanbe2.RestTimeSplit(); + result.RestTimeShanbe2Min = restTimeShanbe2.RestTimeMinSplit(); + var restTimeYekShanbe2 = result.RestTimeYekShanbe2; + result.RestTimeYekShanbe2 = restTimeYekShanbe2.RestTimeSplit(); + result.RestTimeYekShanbe2Min = restTimeYekShanbe2.RestTimeMinSplit(); + var restTimeDoShanbe2 = result.RestTimeDoShanbe2; + result.RestTimeDoShanbe2 = restTimeDoShanbe2.RestTimeSplit(); + result.RestTimeDoShanbe2Min = restTimeDoShanbe2.RestTimeMinSplit(); + var restTimeSeShanbe2 = result.RestTimeSeShanbe2; + result.RestTimeSeShanbe2 = restTimeSeShanbe2.RestTimeSplit(); + result.RestTimeSeShanbe2Min = restTimeSeShanbe2.RestTimeMinSplit(); + var restTimeCheharShanbe2 = result.RestTimeCheharShanbe2; + result.RestTimeCheharShanbe2 = restTimeCheharShanbe2.RestTimeSplit(); + result.RestTimeCheharShanbe2Min = restTimeCheharShanbe2.RestTimeMinSplit(); + var restTimePanjShanbe2 = result.RestTimePanjShanbe2; + result.RestTimePanjShanbe2 = restTimePanjShanbe2.RestTimeSplit(); + result.RestTimePanjShanbe2Min = restTimePanjShanbe2.RestTimeMinSplit(); + var restTimeJome2 = result.RestTimeJome2; + result.RestTimeJome2 = restTimeJome2.RestTimeSplit(); + result.RestTimeJome2Min = restTimeJome2.RestTimeMinSplit(); + + #endregion + + #region week3 + + var restTimeShanbe3 = result.RestTimeShanbe3; + result.RestTimeShanbe3 = restTimeShanbe3.RestTimeSplit(); + result.RestTimeShanbe3Min = restTimeShanbe3.RestTimeMinSplit(); + var restTimeYekShanbe3 = result.RestTimeYekShanbe3; + result.RestTimeYekShanbe3 = restTimeYekShanbe3.RestTimeSplit(); + result.RestTimeYekShanbe3Min = restTimeYekShanbe3.RestTimeMinSplit(); + var restTimeDoShanbe3 = result.RestTimeDoShanbe3; + result.RestTimeDoShanbe3 = restTimeDoShanbe3.RestTimeSplit(); + result.RestTimeDoShanbe3Min = restTimeDoShanbe3.RestTimeMinSplit(); + var restTimeSeShanbe3 = result.RestTimeSeShanbe3; + result.RestTimeSeShanbe3 = restTimeSeShanbe3.RestTimeSplit(); + result.RestTimeSeShanbe3Min = restTimeSeShanbe3.RestTimeMinSplit(); + var restTimeCheharShanbe3 = result.RestTimeCheharShanbe3; + result.RestTimeCheharShanbe3 = restTimeCheharShanbe3.RestTimeSplit(); + result.RestTimeCheharShanbe3Min = restTimeCheharShanbe3.RestTimeMinSplit(); + var restTimePanjShanbe3 = result.RestTimePanjShanbe3; + result.RestTimePanjShanbe3 = restTimePanjShanbe3.RestTimeSplit(); + result.RestTimePanjShanbe3Min = restTimePanjShanbe3.RestTimeMinSplit(); + var restTimeJome3 = result.RestTimeJome3; + result.RestTimeJome3 = restTimeJome3.RestTimeSplit(); + result.RestTimeJome3Min = restTimeJome3.RestTimeMinSplit(); + + #endregion + + #region week4 + + var restTimeShanbe4 = result.RestTimeShanbe4; + result.RestTimeShanbe4 = restTimeShanbe4.RestTimeSplit(); + result.RestTimeShanbe4Min = restTimeShanbe4.RestTimeMinSplit(); + var restTimeYekShanbe4 = result.RestTimeYekShanbe4; + result.RestTimeYekShanbe4 = restTimeYekShanbe4.RestTimeSplit(); + result.RestTimeYekShanbe4Min = restTimeYekShanbe4.RestTimeMinSplit(); + var restTimeDoShanbe4 = result.RestTimeDoShanbe4; + result.RestTimeDoShanbe4 = restTimeDoShanbe4.RestTimeSplit(); + result.RestTimeDoShanbe4Min = restTimeDoShanbe4.RestTimeMinSplit(); + var restTimeSeShanbe4 = result.RestTimeSeShanbe4; + result.RestTimeSeShanbe4 = restTimeSeShanbe4.RestTimeSplit(); + result.RestTimeSeShanbe4Min = restTimeSeShanbe4.RestTimeMinSplit(); + var restTimeCheharShanbe4 = result.RestTimeCheharShanbe4; + result.RestTimeCheharShanbe4 = restTimeCheharShanbe4.RestTimeSplit(); + result.RestTimeCheharShanbe4Min = restTimeCheharShanbe4.RestTimeMinSplit(); + var restTimePanjShanbe4 = result.RestTimePanjShanbe4; + result.RestTimePanjShanbe4 = restTimePanjShanbe4.RestTimeSplit(); + result.RestTimePanjShanbe4Min = restTimePanjShanbe4.RestTimeMinSplit(); + var restTimeJome4 = result.RestTimeJome4; + result.RestTimeJome4 = restTimeJome4.RestTimeSplit(); + result.RestTimeJome4Min = restTimeJome4.RestTimeMinSplit(); + + #endregion + + #endregion + + workingHoursList.Add(result); + } + else + { + var result = new CreateWorkingHoursTemp + { + WorknigHoursId = workingHours.id, + ShiftWork = workingHours.ShiftWork, + ShiftWorkTemp = "5", + StartComplex = items.FirstOrDefault()?.ComplexStart, + EndComplex = items.FirstOrDefault()?.ComplexEnd, + WeeklyWorkingTime = workingHours.WeeklyWorkingTime + }; + workingHoursList.Add(result); + } + } + } + + + + #endregion + + //دریافت اطلاعات شروع بکار/ترک کار + #region LeftWorks + + var leftWorks = await _context.LeftWorkList + .Where(x => x.WorkshopId == workshopId) + .Where(x => employeeIds.Contains(x.EmployeeId)).AsNoTracking().ToListAsync(); + + #endregion + + //جداسازی شروع و پایان فیش از قراداد با توجه به شروع بکار و ترک کار + #region Separation + + var separation = new List(); + + foreach (var item in contracts) + { + bool hasLeft = false; + var ContractEnd = item.ContractEnd; + var contractStart = item.ContarctStart; + var leftWork = leftWorks.FirstOrDefault(x => x.EmployeeId == item.EmployeeId && item.ContarctStart <= x.LeftWorkDate && item.ContractEnd >= x.StartWorkDate); + if (leftWork == null) + { + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + + if (leftWork.HasLeft && leftWork.LeftWorkDate < item.ContractEnd && + leftWork.LeftWorkDate >= item.ContarctStart) + { + ContractEnd = leftWork.LeftWorkDate.AddDays(-1); + hasLeft = true; + var start = contractStart.ToFarsi(); + var end = ContractEnd.ToFarsi(); + var ContractPreiodsList = new List(); + var CheckoutMonth = int.Parse(month); + + var syear = Convert.ToInt32(start.Substring(0, 4)); + var smonth = Convert.ToInt32(start.Substring(5, 2)); + var sday = Convert.ToInt32(start.Substring(8, 2)); + + var eyear = Convert.ToInt32(end.Substring(0, 4)); + var emonth = Convert.ToInt32(end.Substring(5, 2)); + var eday = Convert.ToInt32(end.Substring(8, 2)); + + var PersianStartDate = new PersianDateTime(syear, smonth, sday); + var PersianStartDateAddingMount = new PersianDateTime(syear, smonth, 1); + var PersianEndDate = new PersianDateTime(eyear, emonth, eday); + + + + var totalmonth = ((PersianEndDate.Year - PersianStartDateAddingMount.Year) * 12) + (PersianEndDate.Month - PersianStartDateAddingMount.Month) + 1; + for (int i = 0; i < totalmonth; i++) + { + + + var currentEndDate = PersianStartDateAddingMount.AddMonths(1).AddDays(-1); + if (currentEndDate > PersianEndDate) + { + currentEndDate = PersianEndDate; + } + + var period = new PeriodStartEnd + { + startC = PersianStartDate.ToString("yyyy/MM/dd"), + endC = currentEndDate.ToString("yyyy/MM/dd"), + monthC = currentEndDate.Month + }; + ContractPreiodsList.Add(period); + //Console.WriteLine($"Month {i + 1} : {PersianStartDate.ToString("yyyy-MM-dd")} to {currentEndDate.ToString("yyyy-MM-dd")}"); + + PersianStartDate = PersianStartDate.AddMonths(1); + PersianStartDate = new PersianDateTime(PersianStartDate.Year, PersianStartDate.Month, 1); + + + } + + var periodSelect = ContractPreiodsList.FirstOrDefault(x => x.monthC == CheckoutMonth); + if (periodSelect != null) + { + var startDate = periodSelect.startC.ToGeorgianDateTime(); + var endDate = periodSelect.endC.ToGeorgianDateTime(); + + + separation.Add(new ContractSeparationViewModel() + { + StartWorkDate = leftWork.StartWorkDate, + LeftWorkDate = ContractEnd, + HasLeft = hasLeft, + ContarctStart = periodSelect.startC, + ContractEnd = periodSelect.endC, + ContractStartGr = startDate, + ContractEndGr = endDate, + checker = true, + }); + continue; + } + else + { + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + } + + if (leftWork.HasLeft && leftWork.LeftWorkDate >= item.ContractEnd && + leftWork.LeftWorkDate > item.ContarctStart) + { + var lastWorkDay = leftWork.LeftWorkDate.AddDays(-1); + + if (leftWork.LeftWorkDate == ContractEnd) + { + ContractEnd = lastWorkDay; + hasLeft = true; + } + + if (lastWorkDay == ContractEnd) + { + hasLeft = true; + } + + var start = contractStart.ToFarsi(); + var end = ContractEnd.ToFarsi(); + var ContractPreiodsList = new List(); + var CheckoutMonth = int.Parse(month); + + var syear = Convert.ToInt32(start.Substring(0, 4)); + var smonth = Convert.ToInt32(start.Substring(5, 2)); + var sday = Convert.ToInt32(start.Substring(8, 2)); + + var eyear = Convert.ToInt32(end.Substring(0, 4)); + var emonth = Convert.ToInt32(end.Substring(5, 2)); + var eday = Convert.ToInt32(end.Substring(8, 2)); + + var PersianStartDate = new PersianDateTime(syear, smonth, sday); + var PersianStartDateAddingMount = new PersianDateTime(syear, smonth, 1); + var PersianEndDate = new PersianDateTime(eyear, emonth, eday); + + + + var totalmonth = ((PersianEndDate.Year - PersianStartDateAddingMount.Year) * 12) + (PersianEndDate.Month - PersianStartDateAddingMount.Month) + 1; + for (int i = 0; i < totalmonth; i++) + { + + + var currentEndDate = PersianStartDateAddingMount.AddMonths(1).AddDays(-1); + if (currentEndDate > PersianEndDate) + { + currentEndDate = PersianEndDate; + } + + var period = new PeriodStartEnd + { + startC = PersianStartDate.ToString("yyyy/MM/dd"), + endC = currentEndDate.ToString("yyyy/MM/dd"), + monthC = currentEndDate.Month + }; + ContractPreiodsList.Add(period); + //Console.WriteLine($"Month {i + 1} : {PersianStartDate.ToString("yyyy-MM-dd")} to {currentEndDate.ToString("yyyy-MM-dd")}"); + + PersianStartDate = PersianStartDate.AddMonths(1); + PersianStartDate = new PersianDateTime(PersianStartDate.Year, PersianStartDate.Month, 1); + + + } + + var periodSelect = ContractPreiodsList.FirstOrDefault(x => x.monthC == CheckoutMonth); + if (periodSelect != null) + { + var startDate = periodSelect.startC.ToGeorgianDateTime(); + var endDate = periodSelect.endC.ToGeorgianDateTime(); + + + separation.Add(new ContractSeparationViewModel() + { + StartWorkDate = leftWork.StartWorkDate, + LeftWorkDate = ContractEnd, + HasLeft = hasLeft, + ContarctStart = periodSelect.startC, + ContractEnd = periodSelect.endC, + ContractStartGr = startDate, + ContractEndGr = endDate, + checker = true, + }); + continue; + } + else + { + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + } + else if(leftWork.HasLeft && contractStart > leftWork.LeftWorkDate) + { + + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + else if (!leftWork.HasLeft) + { + var start = contractStart.ToFarsi(); + var end = ContractEnd.ToFarsi(); + var ContractPreiodsList = new List(); + var CheckoutMonth = int.Parse(month); + + var syear = Convert.ToInt32(start.Substring(0, 4)); + var smonth = Convert.ToInt32(start.Substring(5, 2)); + var sday = Convert.ToInt32(start.Substring(8, 2)); + + var eyear = Convert.ToInt32(end.Substring(0, 4)); + var emonth = Convert.ToInt32(end.Substring(5, 2)); + var eday = Convert.ToInt32(end.Substring(8, 2)); + + var PersianStartDate = new PersianDateTime(syear, smonth, sday); + var PersianStartDateAddingMount = new PersianDateTime(syear, smonth, 1); + var PersianEndDate = new PersianDateTime(eyear, emonth, eday); + + var totalmonth = ((PersianEndDate.Year - PersianStartDateAddingMount.Year) * 12) + (PersianEndDate.Month - PersianStartDateAddingMount.Month) + 1; + for (int i = 0; i < totalmonth; i++) + { + + + var currentEndDate = PersianStartDateAddingMount.AddMonths(1).AddDays(-1); + if (currentEndDate > PersianEndDate) + { + currentEndDate = PersianEndDate; + } + + var period = new PeriodStartEnd + { + startC = PersianStartDate.ToString("yyyy/MM/dd"), + endC = currentEndDate.ToString("yyyy/MM/dd"), + monthC = currentEndDate.Month + }; + ContractPreiodsList.Add(period); + //Console.WriteLine($"Month {i + 1} : {PersianStartDate.ToString("yyyy-MM-dd")} to {currentEndDate.ToString("yyyy-MM-dd")}"); + + PersianStartDate = PersianStartDate.AddMonths(1); + PersianStartDate = new PersianDateTime(PersianStartDate.Year, PersianStartDate.Month, 1); + + + } + + var periodSelect = ContractPreiodsList.FirstOrDefault(x => x.monthC == CheckoutMonth); + if (periodSelect != null) + { + var startDate = periodSelect.startC.ToGeorgianDateTime(); + var endDate = periodSelect.endC.ToGeorgianDateTime(); + + + + separation.Add(new ContractSeparationViewModel() + { + StartWorkDate = leftWork.StartWorkDate, + HasLeft = hasLeft, + ContarctStart = periodSelect.startC, + ContractEnd = periodSelect.endC, + ContractStartGr = startDate, + ContractEndGr = endDate, + checker = true, + LeftWorkDate = new DateTime(2121, 3, 21), + }); + continue; + + } + else + { + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + } + else + { + separation.Add(new ContractSeparationViewModel() + { + checker = false + }); + continue; + } + } + + + + #endregion + + //دریافت تنظیمات فنی پرسنل ها + #region EmployeeOptions + + var employeeOptions = await _context.EmployeeComputeOptionsSet.Where(x => x.WorkshopId == workshopId).Select(x => new EmployeeComputeOptionsViewModel + { + Id = x.id, + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + ComputeOptions = x.ComputeOptions, + YearsOptions = x.YearsOptions, + BonusesOptions = x.BonusesOptions, + + }).AsNoTracking().ToListAsync(); + + #endregion + + Console.WriteLine("GetContractsAndIncludeDataDataToCreateCheckout : " + watch.Elapsed); + return op.Succcedded(new GetContractAndIncludesDataToCreateDto()); + + } #endregion diff --git a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs index 295d50b7..77706420 100644 --- a/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs +++ b/ServiceHost/Areas/Admin/Controllers/CheckoutController.cs @@ -108,16 +108,24 @@ public class CheckoutController : AdminBaseController [HttpGet("GetContractsToCreateCheckout")] public async Task>> GetContractsToCreateCheckout(long workshopId, string year, string month, long employeeId) { - + var result =await _checkoutApplication.GetContractToCreateCheckout(workshopId, year, month, employeeId); if (!result.IsSuccedded) return result; - var hasWorkFlow =await _workFlowApplication.HasWorkFlow(workshopId, year, month); + //var hasWorkFlow =await _workFlowApplication.HasWorkFlow(workshopId, year, month); + + //if (hasWorkFlow) + // return new OperationResult>().Failed( + // "این کارگاه به دلیل داشتن کارپوشه مجاز به ایجاد تصفیه حساب نمی باشد"); + + #region testCreate + + var ids = result.Data.Where(x => x.CreateCheckoutStatus == CreateCheckoutStatus.ReadyToCreate).Select(x => x.Id).ToList(); + var test = await _checkoutApplication.CreateCheckoutApi(ids, year, month); + + #endregion - if (hasWorkFlow) - return new OperationResult>().Failed( - "این کارگاه به دلیل داشتن کارپوشه مجاز به ایجاد تصفیه حساب نمی باشد"); return result; }