public async Task <Ingredient> GetIngredient(int?id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Ingredients
            .Include(i => i.Store)
            .SingleOrDefaultAsync(m => m.Id == id));
 }
示例#2
0
        public async Task Create(Recipe recipe, IFormFile RecipeImage)
        {
            recipe.LastViewed = DateTime.Now;

            Image image = new Image()
            {
                DataUrl = GetImage(recipe.Name)
            };

            image.Recipes.Add(recipe);

            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            if (RecipeImage != null)
            {
                using var stream = new MemoryStream();
                RecipeImage.CopyTo(stream);
                Image recipeImage = new Image()
                {
                    Data = stream.ToArray()
                };
                recipeImage.RecipeLists.Add(recipe);
                context.Images.Add(recipeImage);
            }

            context.Images.Add(image);
            context.Add(recipe);
            await context.SaveChangesAsync();
        }
        private async Task UpdateAffectedSequences(int order, int excludedId, int stopOrder)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var affectedQuestionIdsQuery = context.Ingredients
                                           .AsNoTracking()
                                           .Where(x => x.Id != excludedId);

            List <Task> tasks = new List <Task>();

            if (order < stopOrder)
            {
                var affectedQuestionIds = await affectedQuestionIdsQuery
                                          .Where(x => x.Order >= order &&
                                                 x.Order <= stopOrder)
                                          .Select(x => x.Id).ToListAsync();

                foreach (var id in affectedQuestionIds)
                {
                    tasks.Add(IncrementOrder(id));
                }
            }
            else
            {
                var affectedQuestionIds = await affectedQuestionIdsQuery
                                          .Where(x => x.Order <= order &&
                                                 x.Order >= stopOrder)
                                          .Select(x => x.Id).ToListAsync();

                foreach (var id in affectedQuestionIds)
                {
                    tasks.Add(DecrementOrder(id));
                }
            }
            await Task.WhenAll(tasks);
        }
 public async Task <MealGroup> GetMealGroupSimple(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.MealGroups
            .AsNoTracking()
            .SingleOrDefaultAsync(x => x.Id == id));
 }
示例#5
0
 public async Task <Store> GetStore(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Stores
            .AsNoTracking()
            .SingleOrDefaultAsync(x => x.Id == id));
 }
示例#6
0
 public async Task <bool> RecipeExists(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .AsNoTracking()
            .AnyAsync(x => x.Id == id));
 }
示例#7
0
 public async Task <Recipe> GetRecipeWithRecipeImage(int recipeId)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .Include(r => r.RecipeImage)
            .SingleOrDefaultAsync(r => r.Id == recipeId));
 }
示例#8
0
 public async Task <RecipeCategory> GetRecipeCategory(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.RecipeCategories
            .AsNoTracking()
            .SingleOrDefaultAsync(x => x.Id == id));
 }
 public async Task <List <ShoppingListItem> > GetShoppingList()
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.ShoppingListItems
            .AsNoTracking()
            .ToListAsync());
 }
示例#10
0
        public async Task AddMealGroup(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var plans = await context.MealPlans
                        .AsNoTracking()
                        .Where(x => x.MealGroupId == id)
                        .Include(x => x.SideRecipes)
                        .ToListAsync();

            List <Task> tasks = new List <Task>();

            foreach (var plan in plans)
            {
                var newPlan = new MealPlan
                {
                    RecipeId = plan.RecipeId
                };
                foreach (var side in plan.SideRecipes)
                {
                    newPlan.SideRecipes.Add(new SideRelationship
                    {
                        ExcludeFromShoppingList = side.ExcludeFromShoppingList,
                        RecipeId = side.RecipeId
                    });
                }
                tasks.Add(AddMealPlan(newPlan));
            }
            await Task.WhenAll(tasks);
        }
示例#11
0
 public async Task <Recipe> GetRecipe(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .Where(x => x.Id == id)
            .SingleOrDefaultAsync());
 }
示例#12
0
        public void PopulateCampsDropDownList(MealPlannerContext _context, object selectedCamp = null)
        {
            var campsQuery = from c in _context.Camps
                             orderby c.Name
                             select c;

            CampNameSL = new SelectList(campsQuery.AsNoTracking(), "ID", "Name", selectedCamp);
        }
        public async Task DeleteIngredient(int id)
        {
            var ingredient = await GetIngredient(id);

            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            context.Ingredients.Remove(ingredient);
            await context.SaveChangesAsync();
        }
示例#14
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipeCategory = await context.RecipeCategories.SingleOrDefaultAsync(m => m.Id == id);

            context.RecipeCategories.Remove(recipeCategory);
            await context.SaveChangesAsync();
        }
示例#15
0
 private async Task <ShoppingListItem> GetShoppingListItem(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.ShoppingListItems
            .AsNoTracking()
            .Where(x => x.Id == id)
            .SingleOrDefaultAsync());
 }
        public void PopulateIngredientCategories(MealPlannerContext _context, object selectedCategory = null)
        {
            var categoryQuery = from c in _context.IngredientCategories
                                orderby c.Name
                                select c;

            IngredientNameSL = new SelectList(categoryQuery, "IngredientCategoryID", "Name", selectedCategory);
        }
示例#17
0
 public async Task <List <Store> > GetStoresForSelect()
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Stores
            .AsNoTracking()
            .OrderBy(x => x.Name)
            .ToListAsync());
 }
示例#18
0
        public async Task <int> Create(MealGroup group)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            context.MealGroups.Add(group);
            await context.SaveChangesAsync();

            return(group.Id);
        }
        public async Task CreateIngredient(Ingredient ingredient)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            ingredient.Order = await GetMaxOrder() + 1;

            context.Add(ingredient);
            await context.SaveChangesAsync();
        }
示例#20
0
 public async Task <List <Recipe> > GetRecipes()
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .AsNoTracking()
            .OrderBy(x => x.Name)
            .ToListAsync());
 }
示例#21
0
 public async Task <Recipe> GetRecipeWithImage(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .Include(r => r.Image)
            .Include(r => r.RecipeCategory)
            .SingleOrDefaultAsync(m => m.Id == id));
 }
示例#22
0
        public async Task Delete(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var store = await context.Stores.SingleOrDefaultAsync(m => m.Id == id);

            context.Stores.Remove(store);
            await context.SaveChangesAsync();
        }
示例#23
0
 public async Task <MealGroup> GetMealGroup(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.MealGroups
            .AsNoTracking()
            .Include(x => x.MealPlans).ThenInclude(x => x.Recipe)
            .Include(x => x.MealPlans).ThenInclude(x => x.SideRecipes).ThenInclude(x => x.Recipe)
            .SingleOrDefaultAsync(x => x.Id == id));
 }
示例#24
0
        public async Task UpdateViewedDate(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipe = await context.Recipes.FindAsync(id);

            recipe.LastViewed = DateTime.Now;
            context.Recipes.Update(recipe);
            await context.SaveChangesAsync();
        }
示例#25
0
 public async Task <List <Unit> > GetUnits()
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Units
            .AsNoTracking()
            .Include(x => x.RecipeDetails)
            .OrderBy(x => x.Name)
            .ToListAsync());
 }
示例#26
0
 public async Task <string> GetRecipeName(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.Recipes
            .AsNoTracking()
            .Where(x => x.Id == id)
            .Select(x => x.Name)
            .SingleOrDefaultAsync());
 }
示例#27
0
        public async Task UpdateRecipe(int recipeId)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var recipe = await context.Recipes.SingleOrDefaultAsync(r => r.Id == recipeId);

            recipe.LastViewed = DateTime.Now;
            context.Update(recipe);
            await context.SaveChangesAsync();
        }
示例#28
0
 public async Task <int> GetMealGroupIdFromPlan(int id)
 {
     using MealPlannerContext context = new MealPlannerContext(_dbOptions);
     return(await context.MealPlans
            .AsNoTracking()
            .Where(x => x.Id == id)
            .Select(x => x.MealGroupId)
            .SingleOrDefaultAsync() ?? 0);
 }
示例#29
0
        public async Task UpdateImage(EditImageModel model)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var image = await GetRecipeDisplayImage(model.RecipeId);

            image.DataUrl = GetImage(model.ImageSearch);
            context.Update(image);
            await context.SaveChangesAsync();
        }
        private async Task DecrementOrder(int id)
        {
            using MealPlannerContext context = new MealPlannerContext(_dbOptions);
            var ingredient = await context.Ingredients.FindAsync(id);

            ingredient.Order--;
            context.Entry(ingredient).State = EntityState.Modified;
            await context.SaveChangesAsync();
        }