public IWeekJobsResultModel GetJobsForWeek(IWeekPlanFilterModel filter) { IEnumerable <IWeekPlanListViewModel> jobs = Enumerable.Empty <IWeekPlanListViewModel>(); IWeekPlanGridModel model = GetWeekPlanGridModel(filter); if (filter.MemberIds.HasValue()) { var allowedDayAssignIds = dayAssignService.GetDayAssignIds(filter.Map <ITaskDataFilterModel>()).ToList(); jobs = GetListViewModel(model, filter.JobState) .Where(x => x.DayAssignId.HasValue && allowedDayAssignIds.Contains(x.DayAssignId.Value)); } else { jobs = GetListViewModel(model, filter.JobState); } List <IWeekPlanListViewModel> orderedJobList = jobs.OrderByDescending(x => x.AssignDate).ToList(); filter.Week = filter.Week > default(int) ? --filter.Week : default(int); int previousNotEmptyWeekNumber = jobService.GetPreviousNotEmptyWeekNumber(filter); return(new WeekJobsResultModel { Jobs = orderedJobList, IsAllowedPreviousWeeks = orderedJobList.Any() && previousNotEmptyWeekNumber > default(int), PreviousNotEmptyWeekNumber = previousNotEmptyWeekNumber }); }
public IWeekPlanGridModel GetWeekPlanGridModel(IWeekPlanFilterModel filter) { IWeekPlanGridModel result = new WeekPlanGridModel(); List <IWeekPlanJobModel> allJobs = GetWeekPlanJobs(filter); result.BackLogJobs = allJobs.Where(j => j.IsBackLogJob); result.WeekJobs = allJobs.Where(j => !j.IsBackLogJob).OrderByDescending(j => j.StatusId.GetSortIndex()); result.WeekendJobCount = allJobs.Count(j => j.IsWeekEndJob); result.IsShowWeekend = result.WeekendJobCount > 0; return(result); }
private List <Job> GetWeekTasks(IWeekPlanFilterModel filter) { var result = new List <Job>(); if (filter.HousingDepartmentId.HasValue) { result = jobProvider.GetByDepartmentIdYearWeek(filter.HousingDepartmentId.Value, filter.Year, filter.Week); } else { result = jobProvider.GetByYearWeekForAllDepartments(filter.Year, filter.Week); } return(result); }
private IEnumerable <IWeekPlanJobModel> GetExpiredJobsForPreviousWeek(IWeekPlanFilterModel filter) { IEnumerable <JobStatus> allowedStatusesForMovingInExpiredStatus = appSettingHelper.GetFromJson <IEnumerable <JobStatus> >(Constants.AppSetting.AllowedStatusesForMovingInExpiredStatus); int previousWeekNumber = GetPreviousWeekNumber(filter.Week); int previousWeekYear = GetPreviousWeekYear(filter.Week, filter.Year); var previousWeekFilter = filter.Clone(); previousWeekFilter.Week = previousWeekNumber; previousWeekFilter.Year = previousWeekYear; IEnumerable <Job> jobs = GetWeekTasks(previousWeekFilter); IEnumerable <IWeekPlanJobModel> allTicketsFromPreviousWeek = GetTicketsForExpiredJobs(jobs, filter.HousingDepartmentId.Value, previousWeekNumber, previousWeekYear, true); return(allTicketsFromPreviousWeek.Where(j => allowedStatusesForMovingInExpiredStatus.Contains(j.StatusId))); }
public int GetPreviousNotEmptyWeekNumber(IWeekPlanFilterModel filter) { int result = default(int); IWeekPlanFilterModel clonedFilter = filter.Clone(); while (clonedFilter.Week > default(int)) { if (dayAssignProvider.HasTasks(clonedFilter)) { result = clonedFilter.Week; break; } --clonedFilter.Week; } return(result); }
private Expression <Func <DayAssign, bool> > GetQuery(IWeekPlanFilterModel filter) { Expression <Func <DayAssign, bool> > query = i => true; if (filter.HousingDepartmentId.HasValue) { query = query.And(f => f.DepartmentId == filter.HousingDepartmentId.Value); } query = query.And(f => f.WeekNumber == filter.Week); query = query.And(f => f.Year == filter.Year); switch (filter.JobState) { case JobStateType.NotCompleted: query = query.And(f => f.StatusId == JobStatus.Canceled || f.StatusId == JobStatus.Expired); break; case JobStateType.InProgress: query = query.And(f => f.StatusId != JobStatus.Completed && f.StatusId != JobStatus.Canceled && f.StatusId != JobStatus.Expired); break; case JobStateType.Completed: query = query.And(f => f.StatusId == JobStatus.Completed); break; default: throw new InvalidEnumArgumentException($"No such job state {filter.JobState}"); } if (filter.MemberIds.Any()) { query = query.And(f => f.IsAssignedToAllUsers || f.UserIdList.Any(u => filter.MemberIds.Contains(u))); } return(query); }
private IEnumerable <IWeekPlanJobModel> GetAlreadyMovedExpiredJobsForSelectedWeek(IWeekPlanFilterModel filter) { IEnumerable <Job> jobs = GetWeekTasks(filter); List <IWeekPlanJobModel> ticketsExceptVirtual = GetTicketsForExpiredJobs(jobs, filter.HousingDepartmentId.Value, filter.Week, filter.Year, false); return(ticketsExceptVirtual.Where(t => t.ExpiredDayAssignId.HasValue)); }
private List <IWeekPlanJobModel> GetWeekPlanJobs(IWeekPlanFilterModel filter) { IEnumerable <Job> jobs = GetWeekTasks(filter); return(GetTicketsForJobList(jobs, filter.HousingDepartmentId, filter.Week, filter.Year, false)); }
public bool HasTasks(IWeekPlanFilterModel filter) { IEnumerable <IDayAssign> dayAssigns = Query.Where(GetQuery(filter)); return(dayAssigns.Any()); }