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 }); }
private IEnumerable <IWeekPlanListViewModel> GetListViewModel(IWeekPlanGridModel weekPlanModel, JobStateType jobState) { IEnumerable <IWeekPlanJobModel> weekPlanJobList = weekPlanModel.BackLogJobs.Concat(weekPlanModel.WeekJobs); foreach (var job in weekPlanJobList) { //TODO Replace IsAllowedJobForCurrentTab if (IsAllowedJobForCurrentTab(job, jobState)) { yield return(new WeekPlanListViewModel { Id = job.Id, Title = job.Title, StatusId = job.StatusId, AssignDate = GetJobAssignDate(job), DayAssignId = job.DayAssignId, GroupName = job.GroupName, DepartmentName = job.DepartmentName, Users = job.Users, JobType = job.JobType, Address = job.Address, TimeDate = job.DayAssignDate, IsAssignedToAllUsers = job.IsAssignedToAllUsers, SpentTime = job.SpentTime, EstimatedTime = job.Estimate, WeekDay = GetWeekDay(job), WeekNumber = job.WeekNumber, HasChangeStatusComment = job.IsCommentExistOnAnyStatus, IsUrgent = job.IsUrgent }); } } }