Esempio n. 1
0
        public async Task AddMealAsyncShouldAddMealProperly(
            string name,
            double caloriesPer100Grams,
            MealType mealType,
            IEnumerable <SoftGym.Data.Models.Enums.FoodPreference> foodPreferencesData)
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;
            var db = new ApplicationDbContext(options);
            var mealsRepository            = new EfDeletableEntityRepository <Meal>(db);
            var mealsPreferencesRepository = new EfRepository <MealPreference>(db);
            var foodPreferencesRepository  = new EfRepository <SoftGym.Data.Models.FoodPreference>(db);

            var foodPreferences = new List <SoftGym.Data.Models.FoodPreference>();

            for (int i = 0; i < Enum.GetValues(typeof(SoftGym.Data.Models.Enums.FoodPreference)).Length; i++)
            {
                foodPreferences.Add(new SoftGym.Data.Models.FoodPreference()
                {
                    Preference = (SoftGym.Data.Models.Enums.FoodPreference)Enum.GetValues(typeof(SoftGym.Data.Models.Enums.FoodPreference)).GetValue(i),
                });

                await foodPreferencesRepository.AddAsync(foodPreferences[i]);
            }

            await foodPreferencesRepository.SaveChangesAsync();

            var cloudinaryService = new Mock <ICloudinaryService>();
            var fileMock          = new Mock <IFormFile>();

            var service = new MealsService(
                mealsRepository,
                mealsPreferencesRepository,
                cloudinaryService.Object,
                foodPreferencesRepository);

            var inputModel = new AddMealInputModel()
            {
                Name = name,
                CaloriesPer100Grams = caloriesPer100Grams,
                PictureFile         = fileMock.Object,
                Type            = mealType,
                FoodPreferences = foodPreferencesData,
            };

            var result = await service.AddMealAsync(inputModel);

            Assert.NotNull(result);
        }
Esempio n. 2
0
        public async Task <IActionResult> Add(AddMealInputModel inputModel)
        {
            if (!this.cloudinaryService.IsFileValid(inputModel.PictureFile) || !this.ModelState.IsValid)
            {
                if (!this.cloudinaryService.IsFileValid(inputModel.PictureFile))
                {
                    this.ModelState.AddModelError("PictureFile", "Plese enter valid image format!");
                }

                return(this.View(inputModel));
            }

            var meal = await this.mealsService.AddMealAsync(inputModel);

            return(this.Redirect($"/Trainers/Meals/Details/{meal.Id}"));
        }
Esempio n. 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);
        }