public ActionResult Index(TimeSheetEntrySearchViewModel vm) { ViewBag.ProjectId = new MultiSelectList(_projectRepository.GetAll().OrderBy(p => p.Title), "Id", "Title", vm.ProjectId); ViewBag.UserId = new MultiSelectList(_userRepository.GetAllBy(u => u.EmployeeStatus != EmployeeStatus.Ex && u.Id != 1, "Person").ToList().OrderBy(p => p.Person.Name), "Id", "Person.Name", vm.UserId); Func <IQueryable <TimeSheetLineItem>, IQueryable <TimeSheetLineItem> > timeSheetLineItemFilter = q => { q = q.Include(t => t.Project).Include("TimeSheet.CreatedByUser.Person"); if (vm.ProjectId != null && vm.ProjectId.Any()) { q = q.Where(r => vm.ProjectId.Contains(r.ProjectId)); } if (vm.UserId != null && vm.UserId.Any()) { q = q.Where(r => vm.UserId.Contains(r.TimeSheet.CreatedByUserId)); } if (vm.State.HasValue) { q = q.Where(r => r.TimeSheet.State == vm.State.Value); } if (vm.StartDate.HasValue) { q = q.Where(r => r.TimeSheet.Date >= vm.StartDate.Value); } if (vm.EndDate.HasValue) { q = q.Where(r => r.TimeSheet.Date <= vm.EndDate.Value); } if (vm.WorkType.HasValue) { q = q.Where(r => r.WorkType == vm.WorkType.Value); } return(q); }; vm.TimeSheetLineItems = _timeSheetLineItemRepository.SearchPage(timeSheetLineItemFilter, o => o.OrderByDescending(c => c.TimeSheet.Date), vm.GetPageNo(), vm.PageSize); return(View(vm)); }
public ActionResult Download(TimeSheetEntrySearchViewModel vm) { Func <IQueryable <TimeSheetLineItem>, IQueryable <TimeSheetLineItem> > timeSheetLineItemFilter = q => { q = q.Include(t => t.Project).Include("TimeSheet.CreatedByUser.Person").Include("TimeSheet.CreatedByUser.Department").Include("Project").Include("Task"); if (vm.ProjectId != null && vm.ProjectId.Any()) { q = q.Where(r => vm.ProjectId.Contains(r.ProjectId)); } if (vm.UserId != null && vm.UserId.Any()) { q = q.Where(r => vm.UserId.Contains(r.TimeSheet.CreatedByUserId)); } if (vm.State.HasValue) { q = q.Where(r => r.TimeSheet.State == vm.State.Value); } if (vm.StartDate.HasValue) { q = q.Where(r => r.TimeSheet.Date >= vm.StartDate.Value); } if (vm.EndDate.HasValue) { q = q.Where(r => r.TimeSheet.Date <= vm.EndDate.Value); } if (vm.WorkType.HasValue) { q = q.Where(r => r.WorkType == vm.WorkType.Value); } q = q.OrderByDescending(d => d.CreatedOn); return(q); }; var timeSheets = _timeSheetLineItemRepository.Search(timeSheetLineItemFilter); return(ExportAsCSV(timeSheets)); }