using System; using System.Collections.Generic; using System.Linq; using _0_Framework.Application; using Company.Domain.ContractAgg; using Company.Domain.EmployeeAgg; using Company.Domain.LeftWorkInsuranceAgg; using Company.Domain.WorkshopAgg; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.InsuranceList; using CompanyManagment.App.Contracts.LeftWorkInsurance; using CompanyManagment.App.Contracts.PersonnleCode; using CompanyManagment.App.Contracts.WorkingHours; using CompanyManagment.App.Contracts.WorkingHoursItems; using PersianTools.Core; namespace CompanyManagment.Application; public class LeftWorkInsuranceApplication : ILeftWorkInsuranceApplication { private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository; private readonly IContractRepository _contractRepository; private readonly IContractApplication _contractApplication; private readonly IWorkingHoursApplication _workingHoursApplication; private readonly IWorkingHoursItemsApplication _workingHoursItemsApplication; private readonly IEmployeeRepository _employeeRepository; private readonly IWorkshopRepository _workshopRepository; //private readonly IPersonnelCodeApplication _personnelCodeApplication; public LeftWorkInsuranceApplication(IContractRepository contractRepository, IContractApplication contractApplication, IWorkingHoursApplication workingHoursApplication, IWorkingHoursItemsApplication workingHoursItemsApplication, IEmployeeRepository employeeRepository, IWorkshopRepository workshopRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository) { _contractRepository = contractRepository; _contractApplication = contractApplication; _workingHoursApplication = workingHoursApplication; _workingHoursItemsApplication = workingHoursItemsApplication; _employeeRepository = employeeRepository; _workshopRepository = workshopRepository; _leftWorkInsuranceRepository = leftWorkInsuranceRepository; // _personnelCodeApplication = personnelCodeApplication; } public OperationResult Create(CreateLeftWorkInsurance command) { // var Contracts = _contractRepository.Search(new ContractSearchModel() // { // EmployeeId = command.EmployeeId, // WorkshopIds = command.WorkshopId // }); // var lastContract = Contracts.FirstOrDefault(); var operation = new OperationResult(); //if (Contracts == null) // { // return operation.Failed("این پرسنل در این کارگاه قرارداد ندارد!"); // } DateTime? left = null; if (!string.IsNullOrWhiteSpace(command.LeftWorkDate)) left = command.LeftWorkDate.ToGeorgianDateTime(); var start = command.StartWorkDate.ToGeorgianDateTime(); //ممکن است بخواهد بریا سالهای گذشته را وارد نماید //if (_leftWorkInsuranceRepository.Exists(x => // x.StartWorkDate > start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) // return operation.Failed("تاریخ وارد شده کوچکتر از سابقه شروع به کار قبلی است"); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate > start && left == null && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("وارد کردن تاریخ پایان کار اجباری است "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate == start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("تاریخ وارد شده برابر سابقه شروع به کار قبلی است"); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate == left && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("شروع به کار قبلی این شخص ترک کار ندارد "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate < left && x.LeftWorkDate >= start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است"); //if (lastContract != null) { //var nextMonthStartGr = lastContract.ContractEndGr.AddDays(1); //var nextMonthStartFarsi = nextMonthStartGr.ToFarsi(); //var nextMonthEnd = nextMonthStartFarsi.FindeEndOfMonth(); //var nextMonthEndGr = nextMonthEnd.ToGeorgianDateTime(); //if (left <= lastContract.ContractStartGr) // return operation.Failed("تاریخ وارد شده کوچکتر از تاریخ شروع آخرین قرارداد است"); // if (_leftWorkInsuranceRepository.Exists(x => // lastContract.ContractEndGr >= left && x.LeftWorkDate >= lastContract.ContractStartGr && x.LeftWorkDate <= left && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) // return operation.Failed("برای آخرین قرارداد سابقه ترک کار وجود دارد"); //if (_leftWorkInsuranceRepository.Exists(x => // lastContract.ContractEndGr < left && x.LeftWorkDate >= lastContract.ContractStartGr && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) // return operation.Failed("برای تاریخ وارد شده قراردادی وجود ندارد"); //if (left > nextMonthEndGr) // return operation.Failed("برای تاریخ وارد شده قراردادی وجود ندارد"); //if (left > nextMonthStartGr) //{ // LeftWorkExtension(lastContract.Id, nextMonthStartFarsi, nextMonthEnd); //} //} var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName; var workshopName = _workshopRepository.GetDetails(command.WorkshopId).WorkshopFullName; var leftWork = new LeftWorkInsurance(left, start, command.WorkshopId, command.EmployeeId, employeeFullName, workshopName, command.JobId, command.IncludeStatus); _leftWorkInsuranceRepository.Create(leftWork); _leftWorkInsuranceRepository.SaveChanges(); return operation.Succcedded(); } public OperationResult Edit(EditLeftWorkInsurance command) { var operation = new OperationResult(); var left = command.LeftWorkDate.ToGeorgianDateTime(); var start = command.StartWorkDate.ToGeorgianDateTime(); var leftWorkEdit = _leftWorkInsuranceRepository.Get(command.Id); if (leftWorkEdit == null) operation.Failed("رکورد مورد نظر وجود ندارد"); if (start >= left) return operation.Failed("تاریخ وارد شده ک.چکتر یا مساوی تاریخ شروع به کار است"); leftWorkEdit.Edit(left, start, command.WorkshopId, command.EmployeeId, command.JobId, command.IncludeStatus); _leftWorkInsuranceRepository.SaveChanges(); return operation.Succcedded(); } public EditLeftWorkInsurance GetDetails(long id) { return _leftWorkInsuranceRepository.GetDetails(id); } public List search(LeftWorkInsuranceSearchModel searchModel) { // return _leftWorkInsuranceRepository.search(searchModel); List searchList = _leftWorkInsuranceRepository.search(searchModel); foreach (var item in searchList) { item.StartWorkDate = item.StartWorkDateGr.ToFarsi(); if (item.LeftWorkDateGr != null && ((DateTime)item.LeftWorkDateGr)!= DateTime.MinValue) { item.LeftWorkDate = item.LeftWorkDateGr.ToFarsi(); item.EndWorkDate = GetBeforeDate(item.LeftWorkDate); item.IsActiveWorkshop = false; } else { item.IsActiveWorkshop = true; } } return searchList; } public string StartWork(long employeeId, long workshopId, string leftWork) { return _leftWorkInsuranceRepository.StartWork(employeeId, workshopId, leftWork); } public OperationResult RemoveLeftWorkInsurance(long id) { return _leftWorkInsuranceRepository.RemoveLeftWorkInsurance(id); } public OperationResult RemoveAllLeftWorkInsurance(long workshopId, long employeeId) { return _leftWorkInsuranceRepository.RemoveAllLeftWorkInsurance(workshopId, employeeId); } public OperationResult RemoveAllLeftWorkInsuranceWithoutWorkshop(long employeeId) { return _leftWorkInsuranceRepository.RemoveAllLeftWorkInsuranceWithoutWorkshop(employeeId); } public List GetLeftPersonelByWorkshopId(List workshopIds) { return _leftWorkInsuranceRepository.GetLeftPersonelByWorkshopId(workshopIds); } public void LeftWorkExtension(long contractId, string CStart, string CEnd) { var step1 = _contractApplication.GetDetails(contractId); var step2 = _workingHoursApplication.GetByContractId(contractId); var step3 = _workingHoursItemsApplication.GetWorkingHoursItems(); var step4 = step3.Where(x => x.WorkingHoursId == step2.Id).ToList(); var RestTime = step4.Where(x => x.DayOfWork == "0").Select(x => x.RestTime).SingleOrDefault(); var RestTimeYekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.RestTime).SingleOrDefault(); var RestTimeDoshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.RestTime).SingleOrDefault(); var RestTimeSeshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.RestTime).SingleOrDefault(); var RestTimeCheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.RestTime).SingleOrDefault(); var RestTimePanjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.RestTime).SingleOrDefault(); var RestTimeJomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.RestTime).SingleOrDefault(); var SingleShift1 = step4.Where(x => x.DayOfWork == "0").Select(x => x.Start1).SingleOrDefault(); var SingleShift2 = step4.Where(x => x.DayOfWork == "0").Select(x => x.End1).SingleOrDefault(); var SingleShift1Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.End1).SingleOrDefault(); var SingleShift1Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.End1).SingleOrDefault(); var SingleShift1Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.End1).SingleOrDefault(); var SingleShift1Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.End1).SingleOrDefault(); var SingleShift1Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.End1).SingleOrDefault(); var SingleShift1Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.Start1).SingleOrDefault(); var SingleShift2Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.End1).SingleOrDefault(); var TowShifts1 = step4.Where(x => x.DayOfWork == "0").Select(x => x.Start2).SingleOrDefault(); var TowShifts2 = step4.Where(x => x.DayOfWork == "0").Select(x => x.End2).SingleOrDefault(); var TowShifts1Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Yekshanbeh = step4.Where(x => x.DayOfWork == "1").Select(x => x.End2).SingleOrDefault(); var TowShifts1Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Doshanbeh = step4.Where(x => x.DayOfWork == "2").Select(x => x.End2).SingleOrDefault(); var TowShifts1Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Seshanbeh = step4.Where(x => x.DayOfWork == "3").Select(x => x.End2).SingleOrDefault(); var TowShifts1Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.Start1).SingleOrDefault(); var TowShifts2Cheharshanbeh = step4.Where(x => x.DayOfWork == "4").Select(x => x.End2).SingleOrDefault(); var TowShifts1Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Panjshanbeh = step4.Where(x => x.DayOfWork == "5").Select(x => x.End2).SingleOrDefault(); var TowShifts1Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.Start2).SingleOrDefault(); var TowShifts2Jomeh = step4.Where(x => x.DayOfWork == "6").Select(x => x.End2).SingleOrDefault(); var Start1224 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End1224 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start1236 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End1236 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start2424 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End2424 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var Start2448 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexStart).SingleOrDefault(); var End2448 = step4.Where(x => x.DayOfWork == "7").Select(x => x.ComplexEnd).SingleOrDefault(); var computing = new CreateContract { ShiftWork = step2.ShiftWork, RestTime = RestTime, RestTimeYekshanbeh = RestTimeYekshanbeh, RestTimeDoshanbeh = RestTimeDoshanbeh, RestTimeSeshanbeh = RestTimeSeshanbeh, RestTimeCheharshanbeh = RestTimeCheharshanbeh, RestTimePanjshanbeh = RestTimePanjshanbeh, RestTimeJomeh = RestTimeJomeh, SingleShift1 = SingleShift1, SingleShift2 = SingleShift2, SingleShift1Yekshanbeh = SingleShift1Yekshanbeh, SingleShift2Yekshanbeh = SingleShift2Yekshanbeh, SingleShift1Doshanbeh = SingleShift1Doshanbeh, SingleShift2Doshanbeh = SingleShift2Doshanbeh, SingleShift1Seshanbeh = SingleShift1Seshanbeh, SingleShift2Seshanbeh = SingleShift2Seshanbeh, SingleShift1Cheharshanbeh = SingleShift1Cheharshanbeh, SingleShift2Cheharshanbeh = SingleShift2Cheharshanbeh, SingleShift1Panjshanbeh = SingleShift1Panjshanbeh, SingleShift2Panjshanbeh = SingleShift2Panjshanbeh, SingleShift1Jomeh = SingleShift1Jomeh, SingleShift2Jomeh = SingleShift2Jomeh, TowShifts1 = TowShifts1, TowShifts2 = TowShifts2, TowShifts1Yekshanbeh = TowShifts1Yekshanbeh, TowShifts2Yekshanbeh = TowShifts2Yekshanbeh, TowShifts1Doshanbeh = TowShifts1Doshanbeh, TowShifts2Doshanbeh = TowShifts2Doshanbeh, TowShifts1Seshanbeh = TowShifts1Seshanbeh, TowShifts2Seshanbeh = TowShifts2Seshanbeh, TowShifts1Cheharshanbeh = TowShifts1Cheharshanbeh, TowShifts2Cheharshanbeh = TowShifts2Cheharshanbeh, TowShifts1Panjshanbeh = TowShifts1Panjshanbeh, TowShifts2Panjshanbeh = TowShifts2Panjshanbeh, TowShifts1Jomeh = TowShifts1Jomeh, TowShifts2Jomeh = TowShifts2Jomeh, Start1224 = Start1224, End1224 = End1224, Start1236 = Start1236, End1236 = End1236, Start2424 = Start2424, End2424 = End2424, Start2448 = Start2448, End2448 = End2448, EmployeeId = step1.EmployeeId, ContarctStart = CStart, ContractEnd = CEnd, GetWorkDateHide = step1.GetWorkDate, }; var step5 = _contractApplication.MandatoryHours(computing); string workingDays = string.Empty; if (step5.NumberOfWorkingDays == "0") { workingDays = step5.ComplexNumberOfWorkingDays; } else { workingDays = step5.NumberOfWorkingDays; } var createNew = new CreateContract { EmployeeId = step1.EmployeeId, EmployerId = step1.EmployerId, WorkshopIds = step1.WorkshopIds, GetWorkDate = step1.GetWorkDate, SetContractDate = CStart, ArchiveCode = step1.ArchiveCode, ContarctStart = CStart, ContractEnd = CEnd, YearlySalaryId = step1.YearlySalaryId, ConsumableItems = step5.ConsumableItems, HousingAllowance = step5.HousingAllowance, DayliWage = step5.SalaryCompute, FamilyAllowance = step5.FamilyAllowance, WeeklyWorkingTime = step5.SumTime44, WorkingHoursWeekly = step5.SumTime44, JobType = step1.JobType, JobTypeId = step1.JobTypeId, ContractType = step1.ContractType, WorkshopAddress1 = step1.WorkshopAddress1, WorkshopAddress2 = step1.WorkshopAddress2, AgreementSalary = step1.AgreementSalary, ContractPeriod = step1.ContractPeriod, ShiftWork = step2.ShiftWork, RestTime = RestTime, RestTimeYekshanbeh = RestTimeYekshanbeh, RestTimeDoshanbeh = RestTimeDoshanbeh, RestTimeSeshanbeh = RestTimeSeshanbeh, RestTimeCheharshanbeh = RestTimeCheharshanbeh, RestTimePanjshanbeh = RestTimePanjshanbeh, RestTimeJomeh = RestTimeJomeh, SingleShift1 = SingleShift1, SingleShift2 = SingleShift2, SingleShift1Yekshanbeh = SingleShift1Yekshanbeh, SingleShift2Yekshanbeh = SingleShift2Yekshanbeh, SingleShift1Doshanbeh = SingleShift1Doshanbeh, SingleShift2Doshanbeh = SingleShift2Doshanbeh, SingleShift1Seshanbeh = SingleShift1Seshanbeh, SingleShift2Seshanbeh = SingleShift2Seshanbeh, SingleShift1Cheharshanbeh = SingleShift1Cheharshanbeh, SingleShift2Cheharshanbeh = SingleShift2Cheharshanbeh, SingleShift1Panjshanbeh = SingleShift1Panjshanbeh, SingleShift2Panjshanbeh = SingleShift2Panjshanbeh, SingleShift1Jomeh = SingleShift1Jomeh, SingleShift2Jomeh = SingleShift2Jomeh, TowShifts1 = TowShifts1, TowShifts2 = TowShifts2, TowShifts1Yekshanbeh = TowShifts1Yekshanbeh, TowShifts2Yekshanbeh = TowShifts2Yekshanbeh, TowShifts1Doshanbeh = TowShifts1Doshanbeh, TowShifts2Doshanbeh = TowShifts2Doshanbeh, TowShifts1Seshanbeh = TowShifts1Seshanbeh, TowShifts2Seshanbeh = TowShifts2Seshanbeh, TowShifts1Cheharshanbeh = TowShifts1Cheharshanbeh, TowShifts2Cheharshanbeh = TowShifts2Cheharshanbeh, TowShifts1Panjshanbeh = TowShifts1Panjshanbeh, TowShifts2Panjshanbeh = TowShifts2Panjshanbeh, TowShifts1Jomeh = TowShifts1Jomeh, TowShifts2Jomeh = TowShifts2Jomeh, Start1224 = Start1224, End1224 = End1224, Start1236 = Start1236, End1236 = End1236, Start2424 = Start2424, End2424 = End2424, Start2448 = Start2448, End2448 = End2448, NumberOfWorkingDays = workingDays, NumberOfFriday = step5.NumberOfFriday, TotalHoursesH = step5.TotalHoursesH == "0" ? "" : step5.TotalHoursesH, TotalHoursesM = step5.TotalHoursesM == "0" ? "" : step5.TotalHoursesM, OverTimeWorkH = step5.OverTimeWorkH == "0" ? "" : step5.OverTimeWorkH, OverTimeWorkM = step5.OverTimeWorkM == "0" ? "" : step5.OverTimeWorkM, OverNightWorkH = step5.OverNightWorkH == "0" ? "" : step5.OverNightWorkH, OverNightWorkM = step5.OverNightWorkM == "0" ? "" : step5.OverNightWorkM, }; var resss = _contractApplication.Create(createNew); } public string GetBeforeDate(string date) { var persianBefore = ""; var year = Convert.ToInt32(date.Substring(0, 4)); var month = Convert.ToInt32(date.Substring(5, 2)); var day = Convert.ToInt32(date.Substring(8, 2)); var persianDate = new PersianDateTime(year, month, day); var persianBeforeDate = persianDate.AddDays(-1); persianBefore = persianBeforeDate.ToString("yyyy/MM/dd"); return persianBefore; } public List SearchForCreateInsuranceList( EmployeeForCreateInsuranceListSearchModel searchModel) { string startMonthCurrent = searchModel.Year + "/" + searchModel.Month + "/01"; var resultList = new List(); var leftWorkInsuranceList = _leftWorkInsuranceRepository.SearchForCreateInsuranceList(searchModel); //انتخاب ماه و سال برای ثبت بیمه اجباری است if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month)) { string yearAndMonth = searchModel.Year + "/" + searchModel.Month; // string endMonthCurrent = searchModel.Year + "/" + searchModel.Month + startMonthCurrent.FindeEndOfMonth(); var year = Convert.ToInt32(searchModel.Year); var month = Convert.ToInt32(searchModel.Month); var sartDateUser = Convert.ToInt32("01"); var pStartDateUser = new PersianDateTime(year, month, sartDateUser); var dayEndDate = Convert.ToInt32((startMonthCurrent.FindeEndOfMonth()).Substring(8, 2)); var persianEndDate = new PersianDateTime(year, month, dayEndDate); var currentDateToMiladi = persianEndDate.ToGregorianDateTime(); var pStartDateUserToMiladi = pStartDateUser.ToGregorianDateTime(); //leftWorkInsuranceList = leftWorkInsuranceList.Where(x => // x.StartWorkDate.Contains(yearAndMonth) || string.IsNullOrWhiteSpace(x.LeftWorkDate) || // (!string.IsNullOrWhiteSpace(x.LeftWorkDate) && x.LeftWorkDate.Contains(yearAndMonth)) || // (!string.IsNullOrWhiteSpace(x.EndWorkDate) && x.EndWorkDate.Contains(yearAndMonth)) // ).ToList(); leftWorkInsuranceList = leftWorkInsuranceList.Where(x => ((x.LeftWorkDateGr != null && x.LeftWorkDateGr != DateTime.MinValue) && ((DateTime)x.LeftWorkDateGr >= pStartDateUserToMiladi && (DateTime)x.LeftWorkDateGr <= currentDateToMiladi)) || ((x.LeftWorkDateGr != null && x.LeftWorkDateGr != DateTime.MinValue) && (DateTime)x.LeftWorkDateGr >= currentDateToMiladi) || (x.LeftWorkDateGr == null|| x.LeftWorkDateGr == DateTime.MinValue)).ToList(); foreach (var item in leftWorkInsuranceList) { var yearStartDateUser = Convert.ToInt32(item.StartWorkDate.Substring(0, 4)); var monthStartDateUser = Convert.ToInt32(item.StartWorkDate.Substring(5, 2)); var dayStartDateUser = Convert.ToInt32(item.StartWorkDate.Substring(8, 2)); var persianStartWorkDate = new PersianDateTime(yearStartDateUser, monthStartDateUser, dayStartDateUser); if (persianStartWorkDate <= persianEndDate) resultList.Add(item); } } resultList = resultList.Select(u => new { LeftWorkList = u, EmployeeId = u.EmployeeId }).ToList() .Select(u => u.LeftWorkList) .ToList(); return resultList; } public LeftWorkInsuranceViewModel GetLeftPersonelByWorkshopIdAndEmployeeId(long workshopId, long employeeId) { return _leftWorkInsuranceRepository.GetLeftPersonelByWorkshopIdAndEmployeeId(workshopId, employeeId); } public OperationResult CreateLeftWorkInsurance(InformationLeftworkInsurance command) { var operation = new OperationResult(); foreach (var item in command.ItemLeftworkInsuranceList) { DateTime? left = null; if (!string.IsNullOrWhiteSpace(item.LeftWorkDate)) left = item.LeftWorkDate.ToGeorgianDateTime(); var start = item.StartWorkDate.ToGeorgianDateTime(); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate > start && left == null && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("وارد کردن تاریخ پایان کار اجباری است "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate == start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("تاریخ وارد شده برابر سابقه شروع به کار قبلی است"); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate == left && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("شروع به کار قبلی این شخص ترک کار ندارد "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate < left && x.LeftWorkDate >= start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است"); } return _leftWorkInsuranceRepository.CreateLeftWorkInsurance(command); } public OperationResult CreateLeftworkInsuranceByLeftworkGroups(string employeeFullName, long commandEmployeeId, List commandPersonnelCode, List leftWorkGroups) { var operation = new OperationResult(); foreach (var item in leftWorkGroups) { if (item.LeftworkInsuranceViewModels != null && item.LeftworkInsuranceViewModels.Count() > 0) { foreach (var item2 in item.LeftworkInsuranceViewModels) { DateTime? left = null; if (!string.IsNullOrWhiteSpace(item2.LeftWorkDate)) left = item2.LeftWorkDate.ToGeorgianDateTime(); var start = item2.StartWorkDate.ToGeorgianDateTime(); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate > start && left == null && x.EmployeeId == commandEmployeeId && x.WorkshopId == item2.WorkshopId && x.id != item2.Id)) return operation.Failed("وارد کردن تاریخ پایان کار اجباری است "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate == start && x.EmployeeId == item2.EmployeeId && x.WorkshopId == item2.WorkshopId && (x.id != item2.Id && item2.Id!=0))) return operation.Failed("تاریخ وارد شده برابر سابقه شروع به کار قبلی است"); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate == left && x.EmployeeId == item2.EmployeeId && x.WorkshopId == item2.WorkshopId && (x.id != item2.Id && item2.Id != 0))) return operation.Failed("شروع به کار قبلی این شخص ترک کار ندارد "); if (_leftWorkInsuranceRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate < left && x.LeftWorkDate >= start && x.EmployeeId == item2.EmployeeId && x.WorkshopId == item2.WorkshopId && (x.id != item2.Id && item2.Id != 0))) return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است"); } } } return _leftWorkInsuranceRepository.CreateLeftworkInsuranceByLeftworkGroups(employeeFullName, commandEmployeeId, commandPersonnelCode, leftWorkGroups); } public OperationResult CheckDeleteLeftWorkInsurance(long workshopId, long employeeId, string date, int type) { return _leftWorkInsuranceRepository.CheckDeleteLeftWorkInsurance(workshopId, employeeId, date.ToGeorgianDateTime(), type); } public OperationResult CheckEditLeftWorkInsurance(long workshopId, long employeeId, string date, int type) { return _leftWorkInsuranceRepository.CheckEditLeftWorkInsurance(workshopId, employeeId, date.ToGeorgianDateTime(), type); } public OperationResult CheckBeforeSaveLeftWorkInsurance(long workshopId, long employeeId, string date, int type) { return _leftWorkInsuranceRepository.CheckBeforeSaveLeftWorkInsurance(workshopId, employeeId, date.ToGeorgianDateTime(), type); } #region Insurance public List GetEmployeeInsuranceLeftWorksAndInformation(long workshopId, DateTime startDate, DateTime endDate) { return _leftWorkInsuranceRepository.GetEmployeeInsuranceLeftWorksAndInformation(workshopId, startDate, endDate); } #endregion }