public async Task <IActionResult> PutIngredients(long id, Ingredients ingredients)
        {
            if (id != ingredients.IngredientsId)
            {
                return(BadRequest());
            }

            _context.Entry(ingredients).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!IngredientsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutMealPlan(long id, MealPlan mealPlan)
        {
            if (id != mealPlan.MealId)
            {
                return(BadRequest());
            }

            _context.Entry(mealPlan).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MealPlanExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #3
0
        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();
        }
예제 #4
0
        public async Task <bool> UpdateIngredientOrder(int ingredientId, int?previousIngredientId, int?nextIngredientId)
        {
            try
            {
                using MealPlannerContext context = new MealPlannerContext(_dbOptions);
                var ingredientTask    = context.Ingredients.SingleOrDefaultAsync(x => x.Id == ingredientId);
                var previousOrderTask = GetIngredientOrder(previousIngredientId);
                var nextOrderTask     = GetIngredientOrder(nextIngredientId);
                await Task.WhenAll(ingredientTask, previousOrderTask, nextOrderTask);

                var ingredient    = ingredientTask.Result;
                var previousOrder = previousOrderTask.Result;
                var nextOrder     = nextOrderTask.Result;
                int stopOrder     = ingredient.Order;

                if (previousOrder.HasValue && ingredient.Order >= previousOrder)
                {
                    ingredient.Order = previousOrder.Value + 1;
                }
                else if (nextOrder.HasValue)
                {
                    ingredient.Order = nextOrder.Value - 1 > 0 ? nextOrder.Value : 1;
                }
                else
                {
                    ingredient.Order = previousOrder.Value;//set to the last row
                }
                if (stopOrder == ingredient.Order)
                {
                    return(true);
                }

                context.Entry(ingredient).State = EntityState.Modified;
                await context.SaveChangesAsync();//needs to happen first
                await UpdateAffectedSequences(ingredient.Order, ingredient.Id, stopOrder);

                return(true);
            }
            catch
            {
                return(false);
            }
        }