def updateRecipe()

in app/controllers/RecipeController.scala [77:155]


  def updateRecipe(id: RecipeId) = authAction(parse.formUrlEncoded) {
    implicit request =>
      Recipes.findById(id).fold[Result](NotFound) { recipe =>
        Forms.editRecipe
          .bindFromRequest()
          .fold(
            { formWithErrors =>
              BadRequest(
                views.html.editRecipe(
                  recipe,
                  formWithErrors,
                  BaseImages.list().toSeq,
                  Roles.listIds
                )
              )
            },
            {
              case (
                    description,
                    baseImageId,
                    diskSize,
                    bakeSchedule,
                    encryptFor
                  ) =>
                BaseImages.findById(baseImageId) match {
                  case Some(baseImage) =>
                    log.info(
                      s"Updating recipe ${id} - requested by ${request.user.email}"
                    )
                    val customisedRoles = controllers.ControllerHelpers
                      .parseEnabledRoles(request.body)
                    customisedRoles.fold(
                      error => BadRequest(s"Problem parsing roles: $error"),
                      roles => {
                        val updatedRecipe = Recipes.update(
                          recipe,
                          description,
                          baseImage,
                          diskSize,
                          roles,
                          modifiedBy = request.user.fullName,
                          bakeSchedule,
                          encryptFor
                        )
                        updatedRecipe.fold(
                          e => InternalServerError(e.toString),
                          { r =>
                            bakeScheduler.reschedule(r)
                            Redirect(routes.RecipeController.showRecipe(id))
                              .flashing("info" -> "Successfully updated recipe")
                          }
                        )
                      }
                    )
                  case None =>
                    val formWithError = Forms.editRecipe
                      .fill(
                        (
                          description,
                          baseImageId,
                          diskSize,
                          bakeSchedule,
                          encryptFor
                        )
                      )
                      .withError("baseImageId", "Unknown base image")
                    BadRequest(
                      views.html.editRecipe(
                        recipe,
                        formWithError,
                        BaseImages.list().toSeq,
                        Roles.listIds
                      )
                    )
                }
            }
          )
      }
  }