/// <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);
        }
示例#2
0
        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
                }));
            }
        }
示例#3
0
        private void shiftToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Filters filter = new ShiftFilter();

            backgroundWorker1.RunWorkerAsync(filter);
        }