Exemple #1
0
        public async Task SeedAsync(ApplicationDbContext dbContext, IServiceProvider serviceProvider)
        {
            if (!dbContext.Meals.Any())
            {
                var meals = JsonConvert.DeserializeObject <MealDto[]>(File.ReadAllText(@"../../Data/SoftGym.Data/Seeding/Data/Meals.json"));

                foreach (var meal in meals)
                {
                    var newMeal = new Meal()
                    {
                        Name                = meal.Name,
                        PictureUrl          = meal.PictureUrl,
                        Type                = meal.Type,
                        CaloriesPer100Grams = meal.CaloriesPer100Grams,
                    };

                    foreach (var mealPreference in meal.MealsPreferences)
                    {
                        var newMealPreference = new MealPreference()
                        {
                            MealId       = newMeal.Id,
                            PreferenceId = mealPreference.PreferenceId,
                        };

                        await dbContext.MealsPreferences.AddAsync(newMealPreference);
                    }

                    await dbContext.Meals.AddAsync(newMeal);

                    await dbContext.SaveChangesAsync();
                }
            }
        }
Exemple #2
0
        public async Task <Meal> EditMealAsync(EditMealInputModel inputModel)
        {
            var currentMeal = await this.mealsRepository
                              .All()
                              .FirstOrDefaultAsync(x => x.Id == inputModel.Id);

            currentMeal.Name = inputModel.Name;
            if (inputModel.NewImageFile != null)
            {
                currentMeal.PictureUrl = await this.cloudinaryService.UploudAsync(inputModel.NewImageFile);
            }

            currentMeal.Type = inputModel.Type;
            currentMeal.CaloriesPer100Grams = inputModel.CaloriesPer100Grams;

            foreach (var foodPreference in this.mealsPreferencesRepository
                     .All()
                     .Where(x => x.MealId == currentMeal.Id))
            {
                this.mealsPreferencesRepository.Delete(foodPreference);
            }

            await this.mealsPreferencesRepository.SaveChangesAsync();

            if (inputModel.FoodPreferences != null)
            {
                foreach (var foodPreference in inputModel.FoodPreferences)
                {
                    FoodPreference currentPreference;
                    currentPreference = await this.foodPreferenceRepository
                                        .All()
                                        .FirstAsync(x => x.Preference == foodPreference);

                    MealPreference mealPreference = new MealPreference
                    {
                        Meal         = currentMeal,
                        MealId       = currentMeal.Id,
                        Preference   = currentPreference,
                        PreferenceId = currentPreference.Id,
                    };

                    await this.mealsPreferencesRepository.AddAsync(mealPreference);

                    currentMeal.FoodPreferences.ToList().Add(mealPreference);
                    currentPreference.Meals.ToList().Add(mealPreference);
                }

                await this.mealsRepository.SaveChangesAsync();
            }

            return(currentMeal);
        }
Exemple #3
0
        public async Task <Meal> AddMealAsync(AddMealInputModel inputModel)
        {
            Meal meal = new Meal
            {
                Name = inputModel.Name,
                CaloriesPer100Grams = inputModel.CaloriesPer100Grams,
                PictureUrl          = await this.cloudinaryService.UploudAsync(inputModel.PictureFile),
                Type = inputModel.Type,
            };

            if (inputModel.FoodPreferences != null)
            {
                foreach (var foodPreference in inputModel.FoodPreferences)
                {
                    FoodPreference currentPreference;
                    currentPreference = await this.foodPreferenceRepository
                                        .All()
                                        .FirstAsync(x => x.Preference == foodPreference);

                    MealPreference mealPreference = new MealPreference
                    {
                        Meal         = meal,
                        MealId       = meal.Id,
                        Preference   = currentPreference,
                        PreferenceId = currentPreference.Id,
                    };

                    await this.mealsPreferencesRepository.AddAsync(mealPreference);

                    meal.FoodPreferences.ToList().Add(mealPreference);
                    currentPreference.Meals.ToList().Add(mealPreference);
                }
            }

            await this.mealsRepository.AddAsync(meal);

            await this.mealsRepository.SaveChangesAsync();

            return(meal);
        }
Exemple #4
0
        public async Task <EatingPlansService> Before()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase("CardsDb").Options;
            var db = new ApplicationDbContext(options);
            var mealsRepositoryInMemory           = new EfDeletableEntityRepository <Meal>(db);
            var foodPreferencesRepositoryInMemory = new EfRepository <SoftGym.Data.Models.FoodPreference>(db);
            var mealPreferenceReposityoryInMemory = new EfRepository <MealPreference>(db);
            var eatingPlansRepositoryInMemory     = new EfDeletableEntityRepository <EatingPlan>(db);

            var service = new EatingPlansService(
                eatingPlansRepositoryInMemory,
                mealsRepositoryInMemory,
                this.mealsPlansRepository.Object,
                this.usersService.Object,
                this.notificationsService.Object);

            for (int i = 0; i < 8; i++)
            {
                if (i <= 4)
                {
                    await mealsRepositoryInMemory.AddAsync(new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Breakfast,
                    });
                }
                else
                {
                    var meal = new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Breakfast,
                    };

                    var foodPreference = new SoftGym.Data.Models.FoodPreference()
                    {
                        Preference = SoftGym.Data.Models.Enums.FoodPreference.Egg,
                    };

                    var mealPreference = new MealPreference()
                    {
                        MealId       = meal.Id,
                        Meal         = meal,
                        PreferenceId = foodPreference.Id,
                        Preference   = foodPreference,
                    };

                    await foodPreferencesRepositoryInMemory.AddAsync(foodPreference);

                    await mealPreferenceReposityoryInMemory.AddAsync(mealPreference);

                    meal.FoodPreferences.ToList().Add(new SoftGym.Data.Models.MealPreference()
                    {
                        MealId     = meal.Id,
                        Preference = foodPreference,
                    });
                    await mealsRepositoryInMemory.AddAsync(meal);
                }
            }

            for (int i = 0; i < 8; i++)
            {
                if (i <= 4)
                {
                    await mealsRepositoryInMemory.AddAsync(new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Lunch,
                    });
                }
                else
                {
                    var meal = new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Lunch,
                    };

                    var foodPreference = new SoftGym.Data.Models.FoodPreference()
                    {
                        Preference = SoftGym.Data.Models.Enums.FoodPreference.Egg,
                    };

                    var mealPreference = new MealPreference()
                    {
                        MealId       = meal.Id,
                        Meal         = meal,
                        PreferenceId = foodPreference.Id,
                        Preference   = foodPreference,
                    };

                    await foodPreferencesRepositoryInMemory.AddAsync(foodPreference);

                    await mealPreferenceReposityoryInMemory.AddAsync(mealPreference);

                    meal.FoodPreferences.ToList().Add(new SoftGym.Data.Models.MealPreference()
                    {
                        MealId     = meal.Id,
                        Preference = foodPreference,
                    });
                    await mealsRepositoryInMemory.AddAsync(meal);
                }
            }

            for (int i = 0; i < 8; i++)
            {
                if (i <= 4)
                {
                    await mealsRepositoryInMemory.AddAsync(new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Dinner,
                    });
                }
                else
                {
                    var meal = new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Dinner,
                    };

                    var foodPreference = new SoftGym.Data.Models.FoodPreference()
                    {
                        Preference = SoftGym.Data.Models.Enums.FoodPreference.Egg,
                    };

                    var mealPreference = new MealPreference()
                    {
                        MealId       = meal.Id,
                        Meal         = meal,
                        PreferenceId = foodPreference.Id,
                        Preference   = foodPreference,
                    };

                    await foodPreferencesRepositoryInMemory.AddAsync(foodPreference);

                    await mealPreferenceReposityoryInMemory.AddAsync(mealPreference);

                    meal.FoodPreferences.ToList().Add(new SoftGym.Data.Models.MealPreference()
                    {
                        MealId     = meal.Id,
                        Preference = foodPreference,
                    });
                    await mealsRepositoryInMemory.AddAsync(meal);
                }
            }

            for (int i = 0; i < 16; i++)
            {
                if (i <= 8)
                {
                    await mealsRepositoryInMemory.AddAsync(new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Snack,
                    });
                }
                else
                {
                    var meal = new Meal()
                    {
                        Name = "Supa",
                        CaloriesPer100Grams = 100,
                        PictureUrl          = "some url",
                        Type = MealType.Snack,
                    };

                    var foodPreference = new SoftGym.Data.Models.FoodPreference()
                    {
                        Preference = SoftGym.Data.Models.Enums.FoodPreference.Egg,
                    };

                    var mealPreference = new MealPreference()
                    {
                        MealId       = meal.Id,
                        Meal         = meal,
                        PreferenceId = foodPreference.Id,
                        Preference   = foodPreference,
                    };

                    await foodPreferencesRepositoryInMemory.AddAsync(foodPreference);

                    await mealPreferenceReposityoryInMemory.AddAsync(mealPreference);

                    meal.FoodPreferences.ToList().Add(new SoftGym.Data.Models.MealPreference()
                    {
                        MealId     = meal.Id,
                        Preference = foodPreference,
                    });
                    await mealsRepositoryInMemory.AddAsync(meal);
                }
            }

            await mealsRepositoryInMemory.SaveChangesAsync();

            return(service);
        }