Exemplo n.º 1
0
        public async Task <QueryResult <Order> > GetOrdersByUserId(int userId, OrderQueryParams queryParams, bool includeUser)
        {
            if (includeUser)
            {
                var query = queryParams.IsShipped ? this.context.Orders
                            .Include(u => u.User)
                            .Where(x => x.UserId == userId && x.IsShipped).AsQueryable()
                                                                        :
                            this.context.Orders
                            .Include(u => u.User)
                            .Where(x => x.UserId == userId && !x.IsShipped).AsQueryable();

                return(await this.ApplyPagingAndSorting(query, queryParams));
            }
            else
            {
                var query = queryParams.IsShipped ? this.context.Orders
                            .Where(x => x.UserId == userId && x.IsShipped).AsQueryable()
                                                                        :
                            this.context.Orders
                            .Where(x => x.UserId == userId && !x.IsShipped).AsQueryable();

                return(await this.ApplyPagingAndSorting(query, queryParams));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetAllUserOrders(int userId, [FromQuery] OrderQueryParams queryParams)
        {
            var orders = await this.orderRepo.GetOrdersByUserId(userId, queryParams, false);

            var orderToReturn = this.mapper.Map <QueryResultResource <OrderForList> >(orders);

            return(Ok(orderToReturn));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> GetAllOrderedProducts([FromQuery] OrderQueryParams queryParams)
        {
            var order = await this.orderRepo.GetAllOrderedItems(queryParams);

            var orderToReturn = this.mapper.Map <QueryResultResource <OrderForList> >(order);

            return(Ok(orderToReturn));
        }
Exemplo n.º 4
0
        public async Task <QueryResult <Order> > GetAllOrderedItems(OrderQueryParams queryParams)
        {
            var query = queryParams.IsShipped ?
                        this.context.Orders.Where(x => x.IsShipped).AsQueryable()
                                                        :
                        this.context.Orders.Where(x => !x.IsShipped).AsQueryable();

            return(await this.ApplyPagingAndSorting(query, queryParams));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> GetUserOrders(int userId, [FromQuery] OrderQueryParams queryParams)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userFromRepo  = await this.userRepo.GetUser(userId);

            if (userFromRepo == null)
            {
                return(NotFound("User not found"));
            }

            if (currentUserId != userFromRepo.Id)
            {
                return(Unauthorized());
            }

            var orders = await this.orderRepo.GetOrdersByUserId(userId, queryParams);

            var orderToReturn = this.mapper.Map <QueryResultResource <OrderForDetail> >(orders);

            return(Ok(orderToReturn));
        }
Exemplo n.º 6
0
        private async Task <QueryResult <Order> > ApplyPagingAndSorting(IQueryable <Order> query, OrderQueryParams queryParams)
        {
            var queryResult = new QueryResult <Order>();

            var columMap = new Dictionary <string, Expression <Func <Order, object> > >()
            {
                ["orderDate"] = v => v.OrderDate,
            };

            query = query.ApplyOrdering(queryParams, columMap);

            queryResult.TotalItems = await query.CountAsync();

            queryResult.Items = query.ApplyPaging(queryParams);

            return(queryResult);
        }