Exemplo n.º 1
0
        public async Task <Order> UpdateOrderAdminAsync(int idOrder, string buyerEmail, int deliveryMethodId, List <BasketItem> orderItems, Address shippingAddress)
        {
            var deliveryMethod = await _unitOfWork.Repository <DeliveryMethod>().GetByIdAsync(deliveryMethodId);

            var spec     = new OrdersAllWithItemsAndOrderingSpecification(idOrder);
            var orderOld = await _unitOfWork.Repository <Order>().GetEntityWithSpec(spec);

            var items = new List <OrderItem>();

            foreach (var item in orderItems)
            {
                var specProduct = new ProductWithTypesAndBrandsSpecification(item.Id);
                var productItem = await _unitOfWork.Repository <Product>().GetEntityWithSpec(specProduct);

                var itemOrdered = new ProductItemOrdered(productItem.Id, item.Size, productItem.Name,
                                                         productItem.Photos.FirstOrDefault(x => x.IsMain)?.PictureUrl);
                var productSize = productItem.ProductSizes.FirstOrDefault(x => x.Size == item.Size);
                var orderItem   = new OrderItem();

                orderItem = new OrderItem(itemOrdered, productItem.Price, item.Quantity);
                items.Add(orderItem);
            }
            var subtotal = items.Sum(item => item.Price * item.Quantity);

            //var order = new Order(items, buyerEmail, shippingAddress, deliveryMethod, subtotal);
            orderOld.OrderItems     = items;
            orderOld.ShipToAddress  = shippingAddress;
            orderOld.DeliveryMethod = deliveryMethod;
            orderOld.Subtotal       = subtotal;
            _unitOfWork.Repository <Order>().Update(orderOld);
            var result = await _unitOfWork.Complete();

            //return order
            return(orderOld);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <OrderToReturnDto> > GetOrderById(int id)
        {
            var spec  = new OrdersAllWithItemsAndOrderingSpecification(id);
            var order = await _unitOfWork.Repository <Order>().GetEntityWithSpec(spec);

            if (order == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            return(Ok(_mapper.Map <Order, OrderToReturnDto>(order)));
        }
Exemplo n.º 3
0
        public async Task <ActionResult <IReadOnlyList <OrderDto> > > GetAllOrders([FromQuery] OrderSpecParams orderParams)
        {
            var spec      = new OrdersAllWithItemsAndOrderingSpecification(orderParams);
            var countSpec = new OrderWithFiltersForCountSpecification(orderParams);
            var totalItem = await _unitOfWork.Repository <Order>().CountAsync(countSpec);

            var orders = await _unitOfWork.Repository <Order>().ListAsync(spec);

            // var data = _mapper.Map<IReadOnlyList<Order>, IReadOnlyList<OrderToReturnDto>>(orders);
            return(Ok(_mapper.Map <IReadOnlyList <Order>, IReadOnlyList <OrderToReturnDto> >(orders)));
        }