/**
  * This is the step when adding an advertisement
  * @PreAuthorize("hasAnyRole('SUPER_ADMIN', 'CAN_MANAGE_ADVERTISEMENTS')")
  * @param Request $request
  */
 public function saveAction()
 {
     $request = $this->getRequest();
     $advertisementData = $request->get('advertisement');
     if (!$request->getMethod() == 'POST') {
         return new Response("Save requires POST method!", 405);
     }
     if (!$this->advertisement) {
         $advertisement = new Advertisement();
         $advertisementType = $this->getDoctrine()->getRepository('AdvertisementBundle:AdvertisementType')->find($advertisementData['advertisementType']);
         $advertisement->setAdvertisementType($advertisementType);
         $formAction = $this->generateUrl('admin_advertisement_create');
     } else {
         $advertisement = $this->advertisement;
         $formAction = $this->generateUrl('admin_advertisement_update', array('advertisementId' => $advertisement->getId()));
     }
     $advertisement->setInstitution($this->institution);
     $em = $this->getDoctrine()->getEntityManager();
     $form = $this->createForm(new AdvertisementFormType($em), $advertisement);
     $form->bind($request);
     if ($form->isValid()) {
         $this->saveMedia($advertisement);
         $this->get('services.advertisement')->save($advertisement);
         // Invalidate Advertisement cache
         $this->invalidateAdsCache($advertisement);
         $request->getSession()->setFlash("success", "Successfully created advertisement. You may now generate invoice.");
         return $this->redirect($this->generateUrl('admin_advertisement_index'));
     }
     return $this->render('AdminBundle:Advertisement:form.html.twig', array('formAction' => $formAction, 'form' => $form->createView(), 'step' => (int) $request->get('step', 2)));
 }