/**
  * @param Request $request
  *
  * @return RedirectResponse|Response
  */
 public function updateAction(Request $request)
 {
     $resource = $this->findOr404($request);
     $form = $this->getForm($resource);
     $method = $request->getMethod();
     if (in_array($method, array('POST', 'PUT', 'PATCH')) && $form->submit($request, !$request->isMethod('PATCH'))->isValid()) {
         $this->domainManager->update($resource);
         if ($form->isValid()) {
             $this->actionLogger && $this->actionLogger->updateLog();
         }
         // On success, add last saved resource to session for later use...
         $session = $this->get('session');
         $session->set('dag-last-updated-resource-type', $this->config->getResourceName(), true);
         $session->set('dag-last-updated-resource-id', $resource->getId(), true);
         return $this->redirectHandler->redirectTo($resource);
     }
     if ($this->config->isApiRequest()) {
         return $this->handleView($this->view($form));
     }
     $view = $this->view()->setTemplate($this->config->getTemplate('update.html'))->setData(array($this->config->getResourceName() => $resource, 'form' => $form->createView()));
     $response = $this->handleView($view);
     if ($response->isSuccessful() && !$form->isSubmitted()) {
         $this->actionLogger && $this->actionLogger->editLog();
     }
     return $response;
 }