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)); } }
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)); }
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)); }
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)); }
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)); }
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); }