public async Task <IActionResult> GetOrders([FromQuery]
                                                    OrdersResourceParameters orderParams)
        {
            // Check that a valid OrderStatus Value was supplied.
            if (!Enum.TryParse(typeof(DateRange), orderParams.DateRange, out object dateRange))
            {
                return(BadRequest(new { Error = "Invalid date range." }));
            }

            if (orderParams.RestId < 1 && orderParams.UserId < 1)
            {
                return(NotFound(new
                {
                    Error = "Please make sure you have specified a valid " +
                            "restaurant or user Id e.g. (restId = 10 or userId = 10)."
                }));
            }

            if (orderParams.RestId > 0)
            {
                var orderEnts = await _ordService.GetOrdersForRestaurantAsync(orderParams.RestId,
                                                                              orderParams, (DateRange)dateRange);

                var orderMods = _ordMapper.OrderEntitiesToModels(orderEnts);

                var paginationMetadata = new
                {
                    totalCount  = orderEnts.TotalCount,
                    pageSize    = orderEnts.PageSize,
                    currentPage = orderEnts.CurrentPage,
                    totalPages  = orderEnts.TotalPages
                };

                return(Ok(new { Values = orderMods, PagingInfo = paginationMetadata }));
            }

            if (orderParams.UserId > 0)
            {
                var orderEnts = await _ordService.GetOrdersForUserAsync(orderParams.UserId,
                                                                        orderParams, (DateRange)dateRange);

                var orderMods = _ordMapper.OrderEntitiesToModels(orderEnts);

                var paginationMetadata = new
                {
                    totalCount  = orderEnts.TotalCount,
                    pageSize    = orderEnts.PageSize,
                    currentPage = orderEnts.CurrentPage,
                    totalPages  = orderEnts.TotalPages
                };

                return(Ok(new { Values = orderMods, PagingInfo = paginationMetadata }));
            }

            return(NotFound(new { Warning = "You most likely did not specify a restaurantId or userId query parameter." }));
        }
        public async Task <IActionResult> GetOrderItems(int orderId,
                                                        OrdersResourceParameters orderParams)
        {
            var orderItemEnts = await _ordService.GetOrderItemsAsync(orderId,
                                                                     orderParams);

            var orderItemMods = _ordMapper.OrderItemEntitiesToModels(orderItemEnts);

            return(Ok(orderItemMods));
        }
示例#3
0
        public async Task <IActionResult> GetOrdersAsync([FromQuery] OrdersResourceParameters ordersResourceParameters)
        {
            if (!_propertyMappingService.ValidMappingExistsFor <OrderUiModel, Order>
                    (ordersResourceParameters.OrderBy))
            {
                return(BadRequest());
            }

            if (!_typeHelperService.TypeHasProperties <OrderUiModel>
                    (ordersResourceParameters.Fields))
            {
                return(BadRequest());
            }

            //var ordersQueryable =
            ////await _inquiryAllOrdersProcessor.GetOrdersAsync(ordersResourceParameters);

            //var orders = Mapper.Map<IEnumerable<OrderUiModel>>(ordersQueryable);

            //var previousPageLink = ordersQueryable.HasPrevious
            //  ? CreateOrdersResourceUri(ordersResourceParameters,
            //    ResourceUriType.PreviousPage)
            //  : null;

            //var nextPageLink = ordersQueryable.HasNext
            //  ? CreateOrdersResourceUri(ordersResourceParameters, ResourceUriType.NextPage)
            //  : null;

            //var paginationMetadata = new
            //{
            //  previousPageLink = previousPageLink,
            //  nextPageLink = nextPageLink,
            //  totalCount = ordersQueryable.TotalCount,
            //  pageSize = ordersQueryable.PageSize,
            //  currentPage = ordersQueryable.CurrentPage,
            //  totalPages = ordersQueryable.TotalPages
            //};

            //Response.Headers.Add("X-Pagination",
            //  JsonConvert.SerializeObject(paginationMetadata));

            //return Ok(orders.ShapeData(ordersResourceParameters.Fields));
            return(Ok());
        }