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()); }
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(); }
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); } }