Exemple #1
0
        public Task Consume(ConsumeContext <IOrderAccepted> context)
        {
            //Decrease or increase quantity of product stock numbers randomly
            RandomStockChange();

            Order order = _orderRepository.GetByID(context.Message.Order.OrderId);

            if (order == null)
            {
                Console.WriteLine("Order failed.");
                throw new Exception("Order Failed");
            }

            order.StatusCode   = StatusCode.Accepted;
            order.IsDeleted    = false;
            order.ModifiedDate = DateTime.UtcNow;

            _orderRepository.AddOrUpdate(order);

            var products = new List <Product>();

            foreach (var orderProduct in context.Message.OrderProducts.Where(x => x.OrderId == order.OrderId))
            {
                var product = _productRepository.GetAll().FirstOrDefault(x => x.ProductId == orderProduct.ProductId);
                //Decrease stock number
                product.InStock = product.InStock - orderProduct.Quantity;
                products.Add(product);
            }

            _productRepository.AddOrUpdateAll(products);

            _productRepository.Save();
            _orderRepository.Save();

            Console.WriteLine("Order accepted.");
            Console.WriteLine($"OrderID: {order.OrderId} -> Order Status: {order.StatusCode.ToString()} | Total Price: {order.ItemTotalPrice:C}");

            return(Task.CompletedTask);
        }