using System; using System.Collections.Generic; using System.Linq; using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.InsuranceListAgg; using Company.Domain.LeftWorkInsuranceAgg; using Company.Domain.PersonnelCodeAgg; using CompanyManagment.App.Contracts.InsuranceList; using CompanyManagment.App.Contracts.LeftWorkInsurance; using CompanyManagment.App.Contracts.PersonnleCode; namespace CompanyManagment.EFCore.Repository; public class LeftWorkInsuranceRepository : RepositoryBase, ILeftWorkInsuranceRepository { private readonly CompanyContext _context; public LeftWorkInsuranceRepository(CompanyContext context) : base(context) { _context = context; } public EditLeftWorkInsurance GetDetails(long id) { return _context.LeftWorkInsuranceList.Select(x => new EditLeftWorkInsurance() { Id = x.id, LeftWorkDate = x.LeftWorkDate != null ? x.LeftWorkDate.ToFarsi() : "", StartWorkDate = x.StartWorkDate.ToFarsi(), EmployeeFullName = x.EmployeeFullName, WorkshopName = x.WorkshopName, WorkshopId = x.WorkshopId, EmployeeId = x.EmployeeId }) .FirstOrDefault(x => x.Id == id); } public string StartWork(long employeeId, long workshopId, string leftWork) { var checkExist = _context.LeftWorkInsuranceList.Any(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); if (checkExist) { var LeftWorks = _context.LeftWorkInsuranceList .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .OrderByDescending(x => x.LeftWorkDate).ToList(); var lastLeft = LeftWorks.Select(x => x.LeftWorkDate).FirstOrDefault(); var leftWorkNew = leftWork.ToGeorgianDateTime(); var startWorkList = _context.Contracts .Where(x => x.EmployeeId == employeeId && x.WorkshopIds == workshopId) .Where(x => x.ContarctStart < leftWorkNew && x.ContarctStart > lastLeft) .OrderBy(x => x.ContarctStart).ToList(); var startWorkDate = startWorkList.Select(x => x.ContarctStart).FirstOrDefault(); var result = startWorkDate.ToFarsi(); return result; } else { var leftWorkNew = leftWork.ToGeorgianDateTime(); var startWorkList = _context.Contracts .Where(x => x.EmployeeId == employeeId && x.WorkshopIds == workshopId) .Where(x => x.ContarctStart < leftWorkNew) .OrderBy(x => x.ContarctStart).ToList(); var startWorkDate = startWorkList.Select(x => x.ContarctStart).FirstOrDefault(); var result = startWorkDate.ToFarsi(); return result; } } public List searchByWorkshopId(long workshopId) { var query = _context.LeftWorkInsuranceList.Select(x => new LeftWorkInsuranceViewModel() { Id = x.id, WorkshopId = x.WorkshopId, LeftWorkDate = x.LeftWorkDate != null ? x.LeftWorkDate.ToFarsi() : "", StartWorkDate = x.StartWorkDate.ToFarsi(), LeftWorkDateGr = x.LeftWorkDate, StartWorkDateGr = x.StartWorkDate, EmployeeFullName = x.EmployeeFullName, WorkshopName = x.WorkshopName, EmployeeId = x.EmployeeId, JobId = x.JobId, }).Where(x=>x.WorkshopId == workshopId); return query.ToList(); } public List search(LeftWorkInsuranceSearchModel searchModel) { var query = new List(); if (searchModel.EmployeeId != 0) query = _context.LeftWorkInsuranceList.Where(x => x.EmployeeId == searchModel.EmployeeId).ToList(); else if (searchModel.WorkshopId != 0 && searchModel.EmployeeId != 0) query = _context.LeftWorkInsuranceList.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId).ToList(); var list = new List(); foreach (var item in query) { var jobObj = _context.Jobs.Where(x => x.id == item.JobId).FirstOrDefault(); var insuranceListIds = _context.EmployeeInsurancListDataSet.Where(x => x.EmployeeId == searchModel.EmployeeId && (x.StartWorkDate == item.StartWorkDate ||x.LeftWorkDate==item.LeftWorkDate)) .Select(x=>x.InsuranceListId).ToList(); var hasInsuranceList = _context.InsuranceListSet.Any(x => insuranceListIds.Contains(x.id) && x.WorkshopId==item.WorkshopId); list.Add(new LeftWorkInsuranceViewModel() { Id = item.id, LeftWorkDate = item.LeftWorkDate != null ? item.LeftWorkDate.ToFarsi() : "", StartWorkDate = item.StartWorkDate.ToFarsi(), LeftWorkDateGr = item.LeftWorkDate, StartWorkDateGr = item.StartWorkDate, EmployeeFullName = item.EmployeeFullName, WorkshopName = item.WorkshopName, WorkshopId = item.WorkshopId, EmployeeId = item.EmployeeId, JobId = item.JobId, IncludeStatus = item.IncludeStatus, JobName = jobObj!=null?jobObj.JobName:string.Empty, JobCode = jobObj != null ? jobObj.JobCode : string.Empty, HasInsuranceList = hasInsuranceList, }); } //if (searchModel.WorkshopId != 0 && searchModel.EmployeeId !=0) // list = list.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId).ToList(); //if (searchModel.EmployeeId != 0) // list = list.Where(x => x.EmployeeId == searchModel.EmployeeId).ToList(); return list.OrderByDescending(x => x.StartWorkDateGr).ToList(); } public OperationResult RemoveLeftWorkInsurance(long id) { var op = new OperationResult(); var item = _context.LeftWorkInsuranceList.FirstOrDefault(x=>x.id==id); if(item !=null) _context.LeftWorkInsuranceList.Remove(item); _context.SaveChanges(); return op.Succcedded(); } public OperationResult RemoveAllLeftWorkInsurance(long workshopId, long employeeId) { var op = new OperationResult(); using (var transaction = _context.Database.BeginTransaction()) { try { bool hasInsurance = false; var insuranceList = _context.InsuranceListSet.Where(x => x.WorkshopId == workshopId).ToList(); foreach (var item in insuranceList) { hasInsurance =_context.EmployeeInsurancListDataSet.Any(x => x.EmployeeId == employeeId && x.InsuranceListId==item.id); if(hasInsurance) break; } if (hasInsurance) { return op.Failed("برای این پرسنل در این کارگاه لیست بیمه ارسال شده است."); } var list = _context.LeftWorkInsuranceList.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId).ToList(); if (list != null && list.Count > 0) _context.LeftWorkInsuranceList.RemoveRange(list); bool hasLeftWork = _context.LeftWorkList.Any(x => x.EmployeeId == employeeId && x.WorkshopId==workshopId); if (!hasLeftWork) { var personelCodeList = _context.PersonnelCodeSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId).ToList(); _context.PersonnelCodeSet.RemoveRange(personelCodeList); } _context.SaveChanges(); transaction.Commit(); string Message = ""; if (hasLeftWork) { op.Message="حذف با موفقیت انجام شد." + "
" + "" +"کد پرسنلی این شخص در این کارگاه به دلیل استفاده در ترک کار قرارداد قابل حذف نمی باشد. " + ""; op.IsSuccedded = true; } else { //op.Message = "حذف با موفقیت انجام شد"; op.IsSuccedded = true; } return op; } catch (Exception ex) { transaction.Rollback(); return op.Failed("حذف اطلاعات با خطا مواجه شد"); } } } public OperationResult RemoveAllLeftWorkInsuranceWithoutWorkshop(long employeeId) { var list = _context.LeftWorkInsuranceList.Where(x => x.EmployeeId == employeeId).ToList(); //if (list != null && list.Count > 0) //{ //} var op = new OperationResult(); return op; } public List GetLeftPersonelByWorkshopId(List workshopIds) { return _context.LeftWorkInsuranceList.Select(x => new LeftWorkInsuranceViewModel() { Id = x.id, WorkshopId = x.WorkshopId, EmployeeId = x.EmployeeId, }).Where(x => workshopIds.Contains(x.WorkshopId)).ToList(); } public List SearchForCreateInsuranceList(EmployeeForCreateInsuranceListSearchModel searchModel) { List listLeftWorkInsurance = new List(); // IQueryable query; //if (searchModel.WorkshopIds != null && searchModel.WorkshopIds.Count > 0) //{ // query = _context.LeftWorkInsuranceList.Where(x => searchModel.WorkshopIds.Contains(x.WorkshopId)).Select(x => new LeftWorkInsuranceViewModel() // { // Id = x.id, // LeftWorkDate = x.LeftWorkDate != null ? x.LeftWorkDate.ToFarsi() : "", // StartWorkDate = x.StartWorkDate.ToFarsi(), // LeftWorkDateGr = x.LeftWorkDate, // StartWorkDateGr = x.StartWorkDate, // EmployeeFullName = x.EmployeeFullName, // WorkshopName = x.WorkshopName, // WorkshopId = x.WorkshopId, // EmployeeId = x.EmployeeId, // JobId=x.JobId, // JobName = _context.Jobs.Where(i=>i.id== x.JobId).FirstOrDefault().JobName // }); //} //else //{ // query = _context.LeftWorkInsuranceList.Select(x => new LeftWorkInsuranceViewModel() // { // Id = x.id, // LeftWorkDate = x.LeftWorkDate != null ? x.LeftWorkDate.ToFarsi() : "", // StartWorkDate = x.StartWorkDate.ToFarsi(), // LeftWorkDateGr = x.LeftWorkDate, // StartWorkDateGr = x.StartWorkDate, // EmployeeFullName = x.EmployeeFullName, // WorkshopName = x.WorkshopName, // WorkshopId = x.WorkshopId, // EmployeeId = x.EmployeeId, // JobName = _context.Jobs.Where(i => i.id == x.JobId).FirstOrDefault().JobName // }); //} if (searchModel.WorkshopIds != null && searchModel.WorkshopIds.Count > 0) { var list = _context.LeftWorkInsuranceList.Where(x => searchModel.WorkshopIds.Contains(x.WorkshopId)).ToList(); foreach (var item in list) { var leftWorkInsurance = new LeftWorkInsuranceViewModel(); var job = _context.Jobs.Where(i => i.id == item.JobId).FirstOrDefault(); leftWorkInsurance.Id = item.id; leftWorkInsurance.LeftWorkDate = item.LeftWorkDate != null ? item.LeftWorkDate.ToFarsi() : ""; leftWorkInsurance.StartWorkDate = item.StartWorkDate.ToFarsi(); leftWorkInsurance.StartWorkDateGr = item.StartWorkDate; leftWorkInsurance.LeftWorkDateGr = item.LeftWorkDate; leftWorkInsurance.EmployeeFullName = item.EmployeeFullName; leftWorkInsurance.WorkshopName = item.WorkshopName; leftWorkInsurance.WorkshopId = item.WorkshopId; leftWorkInsurance.EmployeeId = item.EmployeeId; leftWorkInsurance.IncludeStatus = item.IncludeStatus; leftWorkInsurance.JobId = item.JobId; leftWorkInsurance.JobName = job!=null?job.JobName:string.Empty; leftWorkInsurance.JobCode = job != null ? job.JobCode : string.Empty; listLeftWorkInsurance.Add(leftWorkInsurance); } } else { var list = _context.LeftWorkInsuranceList.ToList(); foreach (var item in list) { var leftWorkInsurance = new LeftWorkInsuranceViewModel(); var job = _context.Jobs.Where(i => i.id == item.JobId).FirstOrDefault(); leftWorkInsurance.Id = item.id; leftWorkInsurance.LeftWorkDate = item.LeftWorkDate != null ? item.LeftWorkDate.ToFarsi() : ""; leftWorkInsurance.StartWorkDate = item.StartWorkDate.ToFarsi(); leftWorkInsurance.StartWorkDateGr = item.StartWorkDate; leftWorkInsurance.LeftWorkDateGr = item.LeftWorkDate; leftWorkInsurance.EmployeeFullName = item.EmployeeFullName; leftWorkInsurance.WorkshopName = item.WorkshopName; leftWorkInsurance.WorkshopId = item.WorkshopId; leftWorkInsurance.EmployeeId = item.EmployeeId; leftWorkInsurance.JobId = item.JobId; leftWorkInsurance.JobName = job != null ? job.JobName : string.Empty; ; leftWorkInsurance.JobCode = job != null ? job.JobCode : string.Empty; listLeftWorkInsurance.Add(leftWorkInsurance); } } return listLeftWorkInsurance; } public LeftWorkInsuranceViewModel GetLeftPersonelByWorkshopIdAndEmployeeId(long workshopId, long employeeId) { var leftWorkInsurance = new LeftWorkInsuranceViewModel(); var leftWorkInsuranceObj = _context.LeftWorkInsuranceList.Where(x=>x.EmployeeId==employeeId && x.WorkshopId==workshopId).OrderByDescending(x=>x.id).FirstOrDefault(); if (leftWorkInsuranceObj != null) { leftWorkInsurance.Id = leftWorkInsuranceObj.id; leftWorkInsurance.LeftWorkDateGr = leftWorkInsuranceObj.LeftWorkDate; leftWorkInsurance.StartWorkDateGr = leftWorkInsuranceObj.StartWorkDate; if(leftWorkInsuranceObj.LeftWorkDate!=null) leftWorkInsurance.LeftWorkDate = leftWorkInsuranceObj.LeftWorkDate.ToFarsi(); leftWorkInsurance.StartWorkDate = leftWorkInsuranceObj.StartWorkDate.ToFarsi(); leftWorkInsurance.WorkshopId = leftWorkInsuranceObj.WorkshopId; leftWorkInsurance.EmployeeId = leftWorkInsuranceObj.EmployeeId; leftWorkInsurance.EmployeeFullName = leftWorkInsuranceObj.EmployeeFullName; leftWorkInsurance.WorkshopName = leftWorkInsuranceObj.WorkshopName; //leftWorkInsurance.EndWorkDate = leftWorkInsuranceObj.EndWorkDate; // leftWorkInsurance.IsActiveWorkshop = leftWorkInsuranceObj.IsActiveWorkshop; leftWorkInsurance.JobId = leftWorkInsuranceObj.JobId; //leftWorkInsurance.JobName = leftWorkInsuranceObj.JobName; //leftWorkInsurance.JobCode = leftWorkInsuranceObj.JobCode; leftWorkInsurance.IncludeStatus = leftWorkInsuranceObj.IncludeStatus; } return leftWorkInsurance; } public OperationResult CreateLeftWorkInsurance(InformationLeftworkInsurance command) { var op = new OperationResult(); using (var transaction = _context.Database.BeginTransaction()) { try { #region PersonelCode if (command.PersonnelCodeList != null && command.PersonnelCodeList.Count > 0) { var personelcode = command.PersonnelCodeList.Where(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId).FirstOrDefault(); if (personelcode != null) { if(_context.PersonnelCodeSet.Any(x=> x.WorkshopId == command.WorkshopId && x.PersonnelCode == personelcode.PersonnelCode)) { op.Failed(" کد پرسنلی در کارگاه " + command.WorkshopName + " تکراری می باشد. "); } if (personelcode.PersonnelCode <= 0) { return op.Failed(" کد پرسنلی در کارگاه " + command.WorkshopName + "نامعتبر است."); } _context.PersonnelCodeSet.Add(new PersonnelCodeDomain(command.WorkshopId, command.EmployeeId, personelcode.PersonnelCode)); } } #endregion if (command.ItemLeftworkInsuranceList != null && command.ItemLeftworkInsuranceList.Count > 0) { bool checkRegister = false; foreach (var item2 in command.ItemLeftworkInsuranceList) { var leftWorkInsurance = _context.LeftWorkInsuranceList.Where(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId).ToList(); _context.LeftWorkInsuranceList.RemoveRange(leftWorkInsurance); DateTime? left = null; if (!string.IsNullOrWhiteSpace(item2.LeftWorkDate)) left = item2.LeftWorkDate.ToGeorgianDateTime(); var start = item2.StartWorkDate.ToGeorgianDateTime(); var leftwork = new LeftWorkInsurance(left, start, item2.WorkshopId, item2.EmployeeId, command.EmployeeFullName, item2.WorkshopName, item2.JobId, item2.IncludeStatus); Create(leftwork); } } _context.SaveChanges(); transaction.Commit(); op.Succcedded(-1, " ثبت اطلاعات کارگاه " + command.WorkshopName + " با موفقیت انجام شد. "); } catch (Exception ex) { transaction.Rollback(); op.Failed(" ثبت اطلاعات کارگاه " + command.WorkshopName + " با خطا مواجه شد. "); } } return op; } public OperationResult CreateLeftworkInsuranceByLeftworkGroups(string employeeFullName, long commandEmployeeId, List commandPersonnelCode, List leftworkInsuranceGroups) { var op = new OperationResult(); using (var transaction = _context.Database.BeginTransaction()) { try { foreach (var item in leftworkInsuranceGroups) { #region PersonelCode if (commandPersonnelCode != null && commandPersonnelCode.Count > 0) { var personelcode = commandPersonnelCode.Where(x => x.EmployeeId == commandEmployeeId && x.WorkshopId == item.WorkshopId).FirstOrDefault(); if (personelcode != null && personelcode.HasPersonelCode == false) { if (_context.PersonnelCodeSet.Any(x => x.WorkshopId == item.WorkshopId && x.PersonnelCode == personelcode.PersonnelCode)) { return op.Failed(" کد پرسنلی در کارگاه " + item.WorkshopName + " تکراری می باشد. "); } if (personelcode.PersonnelCode <= 0) { return op.Failed(" کد پرسنلی در کارگاه " + item.WorkshopName + "نامعتبر است."); } _context.PersonnelCodeSet.Add(new PersonnelCodeDomain(item.WorkshopId, commandEmployeeId, personelcode.PersonnelCode)); } } #endregion if (item.LeftworkInsuranceViewModels != null && item.LeftworkInsuranceViewModels.Count > 0) { bool checkRegister = false; var leftworkInsuranceList = _context.LeftWorkInsuranceList.Where(x => x.EmployeeId == commandEmployeeId && x.WorkshopId == item.WorkshopId).ToList(); var removeList = new List(); foreach (var removeItem in leftworkInsuranceList) { if(!item.LeftworkInsuranceViewModels.Any(x=>x.Id==removeItem.id)) removeList.Add(removeItem); } foreach (var item2 in item.LeftworkInsuranceViewModels) { DateTime? left = null; if (!string.IsNullOrWhiteSpace(item2.LeftWorkDate)) left = item2.LeftWorkDate.ToGeorgianDateTime(); var start = item2.StartWorkDate.ToGeorgianDateTime(); if (item2.Id == 0) { //var now = DateTime.Now; var check = _context.LeftWorkInsuranceList.Any(x => x.EmployeeId == item2.EmployeeId && x.WorkshopId == item2.WorkshopId && x.StartWorkDate == start); if (!check) { var leftworkInsuranceObj = new LeftWorkInsurance(left, start, item2.WorkshopId, item2.EmployeeId, employeeFullName, item2.WorkshopName, item2.JobId, item2.IncludeStatus); Create(leftworkInsuranceObj); } } else { var leftworkInsurance = _context.LeftWorkInsuranceList.Where(x => x.id==item2.Id)?.FirstOrDefault(); leftworkInsurance.Edit(left, start, item2.WorkshopId, item2.EmployeeId, item2.JobId, item2.IncludeStatus); } } if (removeList != null && removeList.Count > 0) { _context.LeftWorkInsuranceList.RemoveRange(removeList); } } } _context.SaveChanges(); transaction.Commit(); op.Succcedded(-1, " ثبت با موفقیت انجام شد. "); } catch (Exception ex) { transaction.Rollback(); op.Failed(" ثبت اطلاعات با خطا مواجه شد. "); } } return op; } public OperationResult CheckDeleteLeftWorkInsurance(long workshopId, long employeeId, DateTime date, int type) { var op = new OperationResult(); bool hasInsurance = false; var insuranceList = _context.InsuranceListSet.Where(x => x.WorkshopId == workshopId).ToList(); foreach (var item in insuranceList) { if(type == 1) hasInsurance = _context.EmployeeInsurancListDataSet.Any(x => x.EmployeeId == employeeId && x.InsuranceListId == item.id && x.StartWorkDate.Date >= date.Date && item.ConfirmSentlist); else hasInsurance = _context.EmployeeInsurancListDataSet.Any(x => x.EmployeeId == employeeId && x.InsuranceListId == item.id && (x.LeftWorkDate != null && ((DateTime)x.LeftWorkDate).Date == date.Date)); if (hasInsurance) break; } //در هر صورت میتواند شروع به کار را تغییر دهد //if (type == 1 && hasInsurance) //{ // return op.Failed("برای این پرسنل در این تاریخ لیست بیمه ارسال شده است.برای حذف تاریخ شروع به کار، ابتدا لیست بیمه مربوطه را حذف کنید"); //} //else if (type == 2 && hasInsurance) return op.Failed("برای این پرسنل در این تاریخ لیست بیمه تنظیم شده است.برای حذف تاریخ ترک کار، ابتدا لیست بیمه مربوطه را حذف کنید"); return op.Succcedded(); } public OperationResult CheckEditLeftWorkInsurance(long workshopId, long employeeId, DateTime date, int type) { var op = new OperationResult(); bool hasInsurance = false; List insuranceList = new List(); //if (type == 1) //{ // insuranceList = _context.InsuranceListSet.Where(x => x.WorkshopId == workshopId).ToList(); //} //else if (type == 2) //{ string pdate = date.ToFarsi(); string year = pdate.Split('/')[0]; string month = pdate.Split('/')[1]; insuranceList = _context.InsuranceListSet.Where(x => x.Year == year && x.Month == month && x.WorkshopId == workshopId).ToList(); if (insuranceList != null && insuranceList.Count > 0) { foreach (var item in insuranceList) { if (type == 1) { var insurance = _context.EmployeeInsurancListDataSet.Where(x => x.EmployeeId == employeeId && x.InsuranceListId == item.id && x.StartWorkDate.Date < date.Date).FirstOrDefault(); if (insurance!=null) { var insuranceListObj= insuranceList.FirstOrDefault(x => x.id == item.id); string resulDate= insuranceListObj.Month.ToFarsiMonthByNumber() + " " + insuranceListObj.Year; return op.Failed(" به دلیل استفاده این تاریخ در ایجاد لیست بیمه، ویرایش تاریخ قبل از تاریخ " + resulDate + " امکان پذیر می باشد. "); } } else { var insurance = _context.EmployeeInsurancListDataSet.Where(x => x.EmployeeId == employeeId && x.InsuranceListId == item.id && (x.LeftWorkDate == null || (x.LeftWorkDate != null && ((DateTime)x.LeftWorkDate).Date >= date.Date))).FirstOrDefault(); if (insurance != null) { var insuranceListObj = insuranceList.FirstOrDefault(x => x.id == item.id); string resulDate = insuranceListObj.Month.ToFarsiMonthByNumber() + " " + insuranceListObj.Year; return op.Failed(resulDate); } } } } //در هر صورت میتواند شروع به کار را تغییر دهد //if (type == 1 && hasInsurance) //{ // return op.Failed("تاریخ وارد شده باید از تاریخ شروع به کار وارد شده در لیست بیمه کوچکتر باشد."); //} //else //if (type == 2 && hasInsurance) // return op.Failed("برای این پرسنل در این تاریخ لیست بیمه تنظیم شده است.برای ویرایش تاریخ ترک کار، ابتدا لیست بیمه مربوطه را حذف کنید"); return op.Succcedded(); } public OperationResult CheckBeforeSaveLeftWorkInsurance(long workshopId, long employeeId, DateTime date, int type) { var op = new OperationResult(); bool hasInsurance = false; List insuranceList = new List(); string pdate = date.ToFarsi(); string year = pdate.Split('/')[0]; string month = pdate.Split('/')[1]; insuranceList = _context.InsuranceListSet.Where(x => x.Year == year && x.Month == month && x.WorkshopId == workshopId).ToList(); if (insuranceList != null && insuranceList.Count > 0) { // return op.Failed(" به دلیل استفاده این تاریخ در ایجاد لیست بیمه، ویرایش تاریخ قبل از تاریخ " + resulDate + " امکان پذیر می باشد. "); //foreach (var item in insuranceList) //{ // if (type == 1) // { // var insurance = _context.EmployeeInsurancListDataSet.Where(x => // x.EmployeeId == employeeId && x.InsuranceListId == item.id && // x.StartWorkDate.Date < date.Date).FirstOrDefault(); // if (insurance != null) // { // var insuranceListObj = insuranceList.FirstOrDefault(x => x.id == item.id); // string resulDate = insuranceListObj.Month.ToFarsiMonthByNumber() + " " + insuranceListObj.Year; // return op.Failed(" به دلیل استفاده این تاریخ در ایجاد لیست بیمه، ویرایش تاریخ قبل از تاریخ " + resulDate + " امکان پذیر می باشد. "); // } // } // else // { // var insurance = _context.EmployeeInsurancListDataSet.Where(x => // x.EmployeeId == employeeId && x.InsuranceListId == item.id && // (x.LeftWorkDate == null || (x.LeftWorkDate != null && ((DateTime)x.LeftWorkDate).Date >= date.Date))).FirstOrDefault(); // if (insurance != null) // { // var insuranceListObj = insuranceList.FirstOrDefault(x => x.id == item.id); // string resulDate = insuranceListObj.Month.ToFarsiMonthByNumber() + " " + insuranceListObj.Year; // return op.Failed(resulDate); // } // } //} if (type == 1) { string resulDate = month.ToFarsiMonthByNumber() + " " + year; return op.Failed("در صورت تمایل به ثبت تاریخ شروع به کار این پرسنل می بایست لیست تنظیمی "+ resulDate + " بیمه را حذف نمایید."); } else { string resulDate = month.ToFarsiMonthByNumber() + " " + year; return op.Failed("در صورت تمایل به ثبت تاریخ ترک کار به کار این پرسنل می بایست لیست تنظیمی بیمه "+ resulDate + " را حذف نمایید."); } } return op.Succcedded(); } public int TotalWorkingYears(long employeeId, long workshopId, DateTime startDate) { var lefts = _context.LeftWorkInsuranceList .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartWorkDate < startDate) .OrderBy(x=>x.StartWorkDate) .ToList(); if (lefts.Count > 0) { var totalDays = new List(); foreach (var item in lefts) { if (item.LeftWorkDate != null) { var span = ((DateTime)item.LeftWorkDate - item.StartWorkDate).TotalDays; totalDays.Add((int)(span)); } else { var span = (startDate - item.StartWorkDate).TotalDays; totalDays.Add((int)(span)); } } var sum = totalDays.Sum(x=>x); return (sum / 365); } else { return 0; } } }