public ErrorModel PlaceOrder(PlaceOrderModel orderPlaceModel)
        {
            var errors = new ErrorModel();

            if (orderPlaceModel == null)
            {
                errors.Messages.Add("Invalid data.");
                return(errors);
            }
            var orderItems = orderPlaceModel.OrderItems;
            var userId     = orderPlaceModel.UserId;

            if (orderItems == null || orderItems.Count == 0)
            {
                errors.Messages.Add("No items found to order");
                return(errors);
            }
            var dishPrices = DbContext.GetDishes().Where(d => orderItems.Any(item => item.DishId == d.DishId && item.Quantity > 0)).ToDictionary(d => d.DishId, d => d.Price);
            var newOrder   = new OrderEntity {
                OrderDate = DateTime.Now, UserId = userId, SubTotal = orderItems.Where(item => item.Quantity > 0).Sum(item => item.Quantity * dishPrices[item.DishId])
            };

            try
            {
                DbContext.SaveOrder(newOrder, orderItems.Select(item => item.ToEntity()).ToList());
                return(errors);
            }
            catch (Exception ex)
            {
                errors.Messages.Add(ex.Message);
                return(errors);
            }
        }