public ActionResult <PreparedRecipe> Post(int id, int recipeId, PreparedRecipe preparedRecipe) { ActionResult result; try { int preparedRecipeId = this.recipeInteractor.PrepareRecipe(id, recipeId, preparedRecipe); preparedRecipe.PreparedRecipeId = preparedRecipeId; result = Ok(preparedRecipe); } catch (RecordNotFoundException) { result = NotFound(); } catch (RecordAlreadyExistException) { result = StatusCode(StatusCodes.Status409Conflict); } catch (Exception) { result = StatusCode(StatusCodes.Status500InternalServerError); } return(result); }
public int Insert(string email, string recipeName, PreparedRecipe preparedRecipe) { if (this.cookbookDbContext.preparedRecipes.Any(pr => pr.Cook.Email == email && pr.Recipe.Name == recipeName && pr.Alias == preparedRecipe.Alias && !pr.Complete)) { throw new RecordAlreadyExistException("Record alread exist."); } DAL.Cook cook = this.cookbookDbContext.cooks.FirstOrDefault(c => c.Email == email); DAL.Recipe recipe = this.cookbookDbContext.recipes.FirstOrDefault(r => r.Name == recipeName); if (cook is null || recipe is null) { throw new RecordNotFoundException("Record not found."); } DAL.PreparedRecipe newPreparedRecipe = new DAL.PreparedRecipe { Alias = preparedRecipe.Alias, CookId = cook.CookId, RecipeId = recipe.RecipeId, Complete = false, PreparedWhen = DateTime.Now, }; this.cookbookDbContext.preparedRecipes.Add(newPreparedRecipe); this.cookbookDbContext.SaveChanges(); return(newPreparedRecipe.PreparedRecipeId); }
public PreparedRecipe GetInProgressRecipe(int recipeId) { PreparedRecipe preparedRecipe = this.cookbookDbContext.preparedRecipes.Where( pr => pr.RecipeId == recipeId && !pr.Complete) .Select(pr => new PreparedRecipe { PreparedRecipeId = pr.PreparedRecipeId, Alias = "Recipe Alias", Complete = pr.Complete, PreparedWhen = pr.PreparedWhen.ToString("MMMM dd, yyyy hh:mm tt") }).FirstOrDefault(); if (preparedRecipe is null) { throw new RecordNotFoundException("Record not found."); } IEnumerable <Ingredient> ingredients = this.cookbookDbContext.preparedRecipeIngredients.Where( pri => pri.PreparedRecipe.RecipeId == recipeId && pri.PreparedRecipeId == preparedRecipe.PreparedRecipeId && !pri.PreparedRecipe.Complete) .Select(pri => new Ingredient { IngredientId = pri.IngredientId, Name = pri.Ingredient.Name }).ToList(); if (ingredients.Any()) { preparedRecipe.Ingredients = ingredients; } return(preparedRecipe); }
public PreparedRecipe FinishRecipePreparation(int cookId, int recipeId, PreparedRecipe preparedRecipeToComplete) { using (this.unitOfWork) { PreparedRecipe finishedRecipe = this.unitOfWork.preparedRecipeRepository.FinishRecipePreparation(cookId, recipeId, preparedRecipeToComplete); this.unitOfWork.SaveChanges(); return(finishedRecipe); } }
public PreparedRecipe FinishRecipePreparation(int preparedRecipeId) { using (this.unitOfWork) { PreparedRecipe finishedRecipe = this.unitOfWork.preparedRecipeRepository.FinishRecipePreparation(preparedRecipeId); this.unitOfWork.SaveChanges(); return(finishedRecipe); } }
public int PrepareRecipe(string email, string recipeName, PreparedRecipe preparedRecipe) { using (this.unitOfWork) { int preparedRecipeId = 0; preparedRecipeId = unitOfWork.preparedRecipeRepository.Insert(email, recipeName, preparedRecipe); //unitOfWork.SaveChanges(); return(preparedRecipeId); } }
public int PrepareRecipe(int cookId, int recipeId, PreparedRecipe preparedRecipe) { using (this.unitOfWork) { int preparedRecipeId = 0; preparedRecipeId = unitOfWork.preparedRecipeRepository.Insert(cookId, recipeId, preparedRecipe); //unitOfWork.SaveChanges(); return(preparedRecipeId); } }
public ActionResult <PreparedRecipe> Continue(int id, int recipeId) { ActionResult result; try { PreparedRecipe preparedRecipe = this.recipeInteractor.GetInProgressPreparedRecipe(id, recipeId); result = Ok(preparedRecipe); } catch (RecordNotFoundException) { result = NotFound(); } catch (Exception) { result = StatusCode(StatusCodes.Status500InternalServerError); } return(result); }
public PreparedRecipe FinishRecipePreparation(int cookId, int recipeId, PreparedRecipe preparedRecipeToFinish) { DAL.PreparedRecipe retrievedPreparedRecipe = this.cookbookDbContext.preparedRecipes.FirstOrDefault(pr => pr.PreparedRecipeId == preparedRecipeToFinish.PreparedRecipeId && pr.CookId == cookId && pr.RecipeId == recipeId); if (retrievedPreparedRecipe is null) { throw new RecordNotFoundException("Record not found."); } IEnumerable <Ingredient> ingredients = this.cookbookDbContext.preparedRecipeIngredients.Where(pri => pri.PreparedRecipeId == retrievedPreparedRecipe.PreparedRecipeId && pri.PreparedRecipe.CookId == cookId && pri.PreparedRecipe.RecipeId == recipeId && pri.PreparedRecipeId == retrievedPreparedRecipe.PreparedRecipeId) .Select(pri => new Ingredient { IngredientId = pri.IngredientId, Name = pri.Ingredient.Name }); if (ingredients is null || !ingredients.Any()) { throw new RecordNotFoundException("At least one ingredient is required."); } retrievedPreparedRecipe.Alias = preparedRecipeToFinish.Alias; retrievedPreparedRecipe.Complete = true; this.cookbookDbContext.preparedRecipes.Update(retrievedPreparedRecipe); return(new PreparedRecipe { PreparedRecipeId = retrievedPreparedRecipe.PreparedRecipeId, Alias = string.IsNullOrEmpty(retrievedPreparedRecipe.Alias) ? "Empty Recipe Alias" : retrievedPreparedRecipe.Alias, Complete = retrievedPreparedRecipe.Complete, PreparedWhen = retrievedPreparedRecipe.PreparedWhen.ToString("MMMM dd, yyyy hh:mm tt"), Ingredients = ingredients.ToList() }); }
public ActionResult <PreparedRecipe> Put(int id, int recipeId, int preparedRecipeId, PreparedRecipe preparedRecipeToComplete) { ActionResult result; try { if (preparedRecipeId != preparedRecipeToComplete.PreparedRecipeId) { result = BadRequest(preparedRecipeToComplete); } else { var preparedRecipe = this.recipeInteractor.FinishRecipePreparation(id, recipeId, preparedRecipeToComplete); result = Ok(preparedRecipe); } } catch (RecordNotFoundException ex) { result = NotFound(ex.Message); } catch (Exception) { result = StatusCode(StatusCodes.Status500InternalServerError); } return(result); }