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); } }