예제 #1
0
        public async Task <ActionResult <IEnumerable <TaskItem> > > GetItems(
            [FromQuery(Name = "sortorder")] string sortOrder,
            [FromQuery(Name = "projectid")] int[] projectId,
            [FromQuery(Name = "datefrom")] DateTime?dateFrom,
            [FromQuery(Name = "dateto")] DateTime?dateTo,
            [FromQuery(Name = "status")] TaskItem.TaskStatus[] status,
            [FromQuery(Name = "priority")] TaskItem.TaskPriority[] priority,
            [FromQuery(Name = "page")] int page = DEFAULT_PDAGE_NUMBER,
            [FromQuery(Name = "pagesize")][Range(MIN_PAGE_SIZE, MAX_PAGE_SIZE)] int pageSize = DEFAULT_PAGE_SIZE
            )
        {
            try
            {
                var command = new GetTasksCommand
                {
                    Priority  = priority,
                    PageSize  = pageSize,
                    Status    = status,
                    Page      = page,
                    DateFrom  = dateFrom,
                    DateTo    = dateTo,
                    ProjectId = projectId,
                    SortOrder = sortOrder
                };

                return(await _taskRepository.GetTasks(command));
            }
            catch (Exception e)
            {
                //Logger.Log(e);
                return(BadRequest());
            }
        }
예제 #2
0
        public async Task <List <TaskItem> > GetTasks(GetTasksCommand command)
        {
            IEnumerable <TaskItem> items = _context.TaskItems;

            switch (command.SortOrder)
            {
            case "priority":
                items = items.OrderBy(x => x.Priority);
                break;

            case "created":
                items = items.OrderBy(x => x.Created);
                break;
            }

            if (command.ProjectId?.Length != 0)
            {
                items = items.Where(x => command.ProjectId.Contains(x.ProjectID));
            }

            if (command.Status?.Length != 0)
            {
                items = items.Where(x => command.Status.Contains(x.Status));
            }

            if (command.Priority?.Length != 0)
            {
                items = items.Where(x => command.Priority.Contains(x.Priority));
            }

            if (command.DateFrom != null)
            {
                items = items.Where(x => x.Created >= command.DateFrom);
            }

            if (command.DateTo != null)
            {
                items = items.Where(x => x.Created <= command.DateTo);
            }

            //используется пакет X.PagedList.Mvc.Core
            var itemsPagedList = await items.ToPagedListAsync(command.Page, command.PageSize);

            return(await itemsPagedList.ToListAsync());
        }