Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
 public PreparedRecipe FinishRecipePreparation(int preparedRecipeId)
 {
     using (this.unitOfWork)
     {
         PreparedRecipe finishedRecipe = this.unitOfWork.preparedRecipeRepository.FinishRecipePreparation(preparedRecipeId);
         this.unitOfWork.SaveChanges();
         return(finishedRecipe);
     }
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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);
     }
 }
Пример #8
0
        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);
        }
Пример #9
0
        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()
            });
        }
Пример #10
0
        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);
        }