public async Task <int> CreateOrder(FinalisedOrderRepoModel order)
 {
     if (await CustomerExists(order.CustomerId) &&
         order.OrderedItems.Count > 0 &&
         CompletesOrders)
     {
         FinalisedOrder = order;
         return(order.OrderId == 0? 1 : order.OrderId);
     }
     return(0);
 }
        public async Task <int> CreateOrder(FinalisedOrderRepoModel finalisedOrder)
        {
            if (finalisedOrder == null || finalisedOrder.OrderedItems == null || finalisedOrder.OrderedItems.Count < 1)
            {
                return(0);
            }
            foreach (OrderedItemRepoModel orderedItem in finalisedOrder.OrderedItems)
            {
                if (orderedItem == null)
                {
                    return(0);
                }
            }
            try
            {
                finalisedOrder.OrderId = 0;
                var order = _mapper.Map <OrderData.Order>(finalisedOrder);
                _context.Add(order);
                foreach (OrderData.OrderedItem orderedItem in order.OrderedItems)
                {
                    var product = _context.Products.FirstOrDefault(product => product.ProductId == orderedItem.ProductId);
                    if (product != null)
                    {
                        int newStock = product.Quantity - orderedItem.Quantity;
                        product.Quantity = newStock;
                    }
                }
                await _context.SaveChangesAsync();

                return(order.OrderId);
            }
            catch (DbUpdateConcurrencyException)
            {
                return(0);
            }
        }