Exemplo n.º 1
0
        public async Task <Order> GetOrderWithWithStocksAndProductsById(int id)
        {
            var entityOrder = await _ctx.Orders
                              .Where(x => x.Id == id)
                              .Include(x => x.OrderStocks)
                              .ThenInclude(x => x.Stock)
                              .ThenInclude(x => x.Product)
                              .SingleOrDefaultAsync();

            if (entityOrder is null)
            {
                throw new ArgumentException("There is no such order.");
            }

            var order = Projections.EntityOrderToDomainOrder(entityOrder);

            order.OrderStocks = entityOrder.OrderStocks.Select(x =>
            {
                var orderStock = new OrderStock
                {
                    StockId = x.StockId,
                    Qty     = x.Qty,

                    Stock = Projections.EntityStockToDomainStock(x.Stock),
                };

                orderStock.Stock.Product = Projections.EntityProductToDomainProduct(x.Stock.Product);

                return(orderStock);
            });

            return(order);
        }
Exemplo n.º 2
0
 public async Task <IEnumerable <Order> > GetOrdersByStatus(OrderStatus status)
 {
     return(await _ctx.Orders
            .Where(x => x.Status == status)
            .Select(x => Projections.EntityOrderToDomainOrder(x))
            .ToListAsync());
 }
Exemplo n.º 3
0
        public async Task <Order> GetOrderByReference(string reference)
        {
            var order = await _ctx.Orders.SingleOrDefaultAsync(x => x.OrderRef == reference);

            if (order is null)
            {
                throw new ArgumentException("There is no such order.");
            }

            return(Projections.EntityOrderToDomainOrder(order));
        }
Exemplo n.º 4
0
        //private TResult GetOrder<TResult>(
        //    Expression<Func<Order, bool>> condition,
        //    Func<Order, TResult> selector)
        //{
        //    return _ctx.Orders
        //        .Where(condition)
        //        .Include(x => x.OrderStocks)
        //            .ThenInclude(x => x.Stock)
        //                .ThenInclude(x => x.Product)
        //        .Select(selector)
        //        .FirstOrDefault();
        //}
        public async Task <Order> GetOrderById(int id)
        {
            var order = await _ctx.Orders.FindAsync(id);

            if (order is null)
            {
                throw new ArgumentException("There is no such order.");
            }

            return(Projections.EntityOrderToDomainOrder(order));
        }