public ErrorModel AddDishToMenu(AddDishModel model) { var errors = new ErrorModel(); if (model == null) { errors.Messages.Add("Invalid data."); return errors; } var dish = model.DishToAdd; if (dish == null) { errors.Messages.Add("No dish found to add."); return errors; } var provider = DbContext.GetProviders().SingleOrDefault(p => p.ProviderId == model.ProviderId); if (provider == null || provider.ProviderStatus != ProviderStatus.Verified) { errors.Messages.Add("Cannot add dish for any address not verified provider."); return errors; } var newDish = dish.ToEntity(); newDish.ProviderId = model.ProviderId; newDish.Available = true; try { DbContext.SaveDishes(new List<DishEntity>{newDish}); return errors; } catch (Exception ex) { errors.Messages.Add(ex.Message); return errors; } }
public ErrorModel UpdateOrderItemStatus(UpdateOrderItemModel updateModel) { var errors = new ErrorModel(); if (updateModel == null) { errors.Messages.Add("Invalid data. Please try again!"); return errors; } try { DbContext.UpdateOrderItemStatus(updateModel.OrderId, updateModel.DishId, updateModel.ProviderId, updateModel.TargetStatus); } catch (Exception ex) { errors.Messages.Add(ex.Message); } return errors; }
public ErrorModel RemoveDishFromMenu(RemoveDishModel removeModel) { var errors = new ErrorModel(); if (removeModel == null) { errors.Messages.Add("Invalid data."); return errors; } var dishId = removeModel.DishId; var providerId = removeModel.ProviderId; try { DbContext.RemoveDish(dishId, providerId); return errors; } catch (Exception ex) { errors.Messages.Add(ex.Message); return errors; } }
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; } }