private void Seed(ModelBuilder modelBuilder) { var seedingDataJson = File.ReadAllText("C:\\Users\\mihaela\\source\\repos\\Restaurant\\Infrastructure\\DataSeeding\\Data.json"); var des = JsonConvert.DeserializeObject <Data>(seedingDataJson); List <IngredientOnStock> seededIngredients = new List <IngredientOnStock>(); foreach (var ingredient in des.IngredientsOnStock) { seededIngredients.Add(IngredientOnStock.Create(ingredient.Key, ingredient.Value)); } modelBuilder.Entity <IngredientOnStock>().HasData(seededIngredients); // List<Dish> seededDishes = new List<Dish>(); // foreach (var dish in des.Dishes) // { // foreach (var usedIngredient in dish.UsedIngredients) // { // var usedIngredientOnStock = seededIngredients.Find(ingredient => ingredient.Name == usedIngredient.Key); // DishIngredient dishIngredientLink = new DishIngredient() {Ingredient = usedIngredientOnStock, Dish = dish}; // } // // seededDishes.Add(Dish.Create(dish.Name,dish.Price, true, )); // } }
// *** public async Task <IResponseDto> CreateOrder(CreateOrderDto request) { bool areAllAvailable = true; var wantedDishesEnumerator = request.WantedDishes.GetEnumerator(); IList <Dish> wantedDishes = new List <Dish>(); IDictionary <Guid, int> wantedDishesCount = new Dictionary <Guid, int>(); while (wantedDishesEnumerator.MoveNext() && areAllAvailable == true) { var wantedDish = await _unitOfWork.DishesRepository.Get(wantedDishesEnumerator.Current.Id); wantedDishes.Add(wantedDish); wantedDishesCount.Add(wantedDish.Id, wantedDishesEnumerator.Current.Count); areAllAvailable = wantedDish.IsAvailable; } wantedDishesEnumerator.Dispose(); if (areAllAvailable == false) { return(ErrorResponseDto.Create("Some dishes are not available.")); } var createdOrder = Order.Create(DateTime.Now, request.Adress); await _unitOfWork.OrdersRepository.Add(createdOrder); foreach (var wantedDish in wantedDishes) { wantedDishesCount.TryGetValue(wantedDish.Id, out int count); var orderDish = OrderDish.Create(wantedDish, createdOrder, count); await _unitOfWork.OrderDishesRepository.Add(orderDish); foreach (var wantedDishIngredient in wantedDish.DishIngredients) { IngredientOnStock usedIngredient = wantedDishIngredient.Ingredient; usedIngredient.Quantity -= wantedDishIngredient.Quantity; await _unitOfWork.IngredientsRepository.Update(wantedDishIngredient.Ingredient); foreach (var usedIngredientDish in wantedDishIngredient.Ingredient.IngredientDishes) { if (usedIngredientDish.Quantity > wantedDishIngredient.Ingredient.Quantity) { usedIngredientDish.Dish.IsAvailable = false; await _unitOfWork.DishesRepository.Update(usedIngredientDish.Dish); } } } } await _unitOfWork.CommitAsync(); // cauta dishurile orderului //verifica daca sunt available // create order // scade din fiecare ingredient folosit in dishurile alese //si pentru fiecare ingredient modificat se verifica dishurile la care se foloseste ingredientul (is available?) return(SuccessResponseDto.Create(_mapper.Map <OrderDto>(createdOrder))); }
public async Task <ActionResult <IngredientOnStock> > Get(Guid id) { IngredientOnStock searchedIngredient = await _stockService.Get(id); if (searchedIngredient != null) { return(Ok(searchedIngredient)); } else { return(NotFound()); } }