/// <summary> /// Search for shifts based on a filter. /// </summary> /// <param name="filter"></param> /// <returns>A task of a list of shifts</returns> public Task <List <Shift> > SearchProjectsAsync(ShiftFilter filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } var q = EntitySet .AsNoTracking() .Include(s => s.Task) .Where(s => s.ProjectId == filter.ProjectId); q = filter.SetFilter(q); q = q.Where(x => x.TaskId == null || filter.Tasks.Any(t => t == x.TaskId.ToString())); q = q.Where(x => x.Date >= filter.Date); q = q.Where(x => x.StartTime >= TimeSpan.Parse(filter.Start)); q = q.Where(x => x.EndTime >= TimeSpan.Parse(filter.End)); q = q.Where(x => x.ParticipantsRequired >= filter.ParticipantsRequired); q = filter.SetFilter(q); filter.TotalItemCount = q.Count(); Task <List <Shift> > shifts; if (filter.Offset >= 0 && filter.PageSize != 0) { shifts = q.Skip(filter.Offset).Take(filter.PageSize).ToListAsync(); } else { shifts = q.ToListAsync(); } return(shifts); }
public async Task <ActionResult <SearchResultViewModel <ShiftViewModel> > > GetShiftsAsync(ShiftFilter filter) { if (filter == null) { return(BadRequest("No filter received")); } try { TaskListResult <Shift> result = await shiftService.GetShiftsAsync(filter); if (!result.Succeeded) { return(UnprocessableEntity(new ErrorViewModel { Type = Type.Error, Message = result.Message })); } if (result.Data == null || result.Data.Count == 0) { return(Ok(new SearchResultViewModel <ShiftViewModel>(0, new List <ShiftViewModel>()))); } List <ShiftViewModel> shiftVmList = result.Data.Select(ShiftViewModel.CreateVm) .ToList(); return(Ok(new SearchResultViewModel <ShiftViewModel>(filter.TotalItemCount, shiftVmList))); } catch (Exception ex) { string message = GetType() .Name + "Error in " + nameof(GetShiftAsync); logger.LogError(ex, message); return(UnprocessableEntity(new ErrorViewModel { Type = Type.Error, Message = message })); } }
private void shiftToolStripMenuItem_Click(object sender, EventArgs e) { Filters filter = new ShiftFilter(); backgroundWorker1.RunWorkerAsync(filter); }