public IActionResult Buy(BeerOrder beerOrder)
        {
            if (ModelState.IsValid)
            {
                this._repository.CreateOrder(beerOrder);
                return(RedirectToAction(nameof(Orders)));
            }

            return(RedirectToAction(nameof(Index)));
        }
        private Guid InsertOrder(BeerOrder beerOrder)
        {
            var order = new Order
            {
                Beer      = _context.Beers.Where(x => x.Id == beerOrder.BeerId).SingleOrDefault(),
                Processed = false,
                CreatedAt = DateTime.Now
            };

            _context.Orders.Add(order);
            _context.SaveChanges();
            return(order.Id);
        }
        public bool Create(IDictionary <int, int> beers, IDictionary <int, int> accessories, IDictionary <int, int> giftSets, IDictionary <int, int> glasses, decimal totalPrice, int addressId, string userId)
        {
            var address = this.db.Addresses.Find(addressId);

            if (address == null)
            {
                return(false);
            }

            var user = this.db.Users.Find(userId);

            if (user == null)
            {
                return(false);
            }

            var order = new Order
            {
                Address = address,
                User    = user,
                Status  = OrderStatus.Processing,
                Date    = DateTime.UtcNow,
                Price   = totalPrice
            };

            this.db.Orders.Add(order);
            this.db.SaveChanges();

            foreach (var beer in beers)
            {
                var beerOrder = new BeerOrder
                {
                    BeerId   = beer.Key,
                    Order    = order,
                    Quantity = beer.Value
                };

                this.db.BeerOrders.Add(beerOrder);
            }

            foreach (var accessory in accessories)
            {
                var accessoryOrder = new AccessoryOrder
                {
                    AccessoryId = accessory.Key,
                    Order       = order,
                    Quantity    = accessory.Value
                };

                this.db.AccessoryOrders.Add(accessoryOrder);
            }

            foreach (var giftSet in giftSets)
            {
                var giftSetOrder = new GiftSetOrder
                {
                    GiftSetId = giftSet.Key,
                    Order     = order,
                    Quantity  = giftSet.Value
                };

                this.db.GiftSetOrders.Add(giftSetOrder);
            }

            foreach (var glass in glasses)
            {
                var glassOrder = new GlassOrder
                {
                    GlassId  = glass.Key,
                    Order    = order,
                    Quantity = glass.Value
                };

                this.db.GlassOrders.Add(glassOrder);
            }

            this.db.SaveChanges();

            return(true);
        }
        public async void CreateOrder(BeerOrder beerOrder)
        {
            Guid orderId = this.InsertOrder(beerOrder);

            await this.Enqueue(orderId);
        }
 public async Task Post([FromBody] BeerOrder order)
 {
     //Send the beerorder for processing in the worker
     await _queueBus.EnqueueAsync(Models.Constants.Queues.BeerOrderQueue, order);
 }