public ErrorModel PlaceOrder(PlaceOrderModel orderPlaceModel)
 {
     return Service.PlaceOrder(orderPlaceModel);
 }
        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;
            }
        }