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"))
}
)
}