def cloneRecipe()

in app/controllers/RecipeController.scala [265:295]


  def cloneRecipe(id: RecipeId) = authAction { implicit request =>
    Forms.cloneRecipe
      .bindFromRequest()
      .fold(
        { form =>
          Redirect(routes.RecipeController.showRecipe(id)).flashing(
            "info" -> s"Failed to clone recipe: ${form.errors.head.message}"
          )
        },
        { newId =>
          Recipes
            .findById(newId)
            .fold[Result] {
              Recipes.findById(id).fold[Result](NotFound) { recipe =>
                Recipes.create(
                  id = newId,
                  description = recipe.description,
                  baseImage = recipe.baseImage,
                  diskSize = recipe.diskSize,
                  roles = recipe.roles,
                  createdBy = request.user.fullName,
                  bakeSchedule = recipe.bakeSchedule,
                  encryptedCopies = recipe.encryptFor
                )
                Redirect(routes.RecipeController.showRecipe(newId))
                  .flashing("info" -> "Successfully cloned recipe")
              }
            }(_ => Conflict(s"$newId already exists"))
        }
      )
  }