/**
  * Get the configuration form for the given $operationAlias.
  *
  * @param string                              $operationAlias
  * @param ConfigurableOperationInterface|null $operation
  *
  * @throws \LogicException If operation get from $operationAlias or $operation
  *                         doesn't implements ConfigurableOperationInterface
  *
  * @return \Symfony\Component\Form\Form
  */
 public function getConfigurationForm($operationAlias, $operation = null)
 {
     if (null === $operation) {
         $operation = $this->operationRegistry->get($operationAlias);
     }
     if (!$operation instanceof ConfigurableOperationInterface) {
         throw new \LogicException(sprintf('Operation with alias "%s" is not an instance of ConfigurableOperationInterface', $operationAlias));
     }
     $operation->initialize();
     $form = $this->formFactory->create($this->chooseActionFormType, $operation);
     $form->add('operation', $operation->getFormType(), $operation->getFormOptions());
     return $form;
 }
 /**
  * @param string $operationAlias
  *
  * @AclAncestor("pim_enrich_mass_edit")
  *
  * @throws NotFoundResourceException
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function performAction($operationAlias)
 {
     $gridName = $this->request->get('gridName');
     $operation = $this->operationRegistry->get($operationAlias);
     $itemsName = $operation->getItemsName();
     $productCount = $this->request->get('objectsCount');
     $form = $this->massEditFormResolver->getConfigurationForm($operationAlias);
     $form->remove('operationAlias');
     $form->submit($this->request);
     if ($form->isValid()) {
         $operation = $form->getData();
         $pimFilters = $this->gridFilterAdapter->adapt($this->request);
         $operation->setFilters($pimFilters);
         $jobCode = $operation->getBatchJobCode();
         $jobInstance = $this->doctrine->getRepository('Akeneo\\Component\\Batch\\Model\\JobInstance')->findOneBy(['code' => $jobCode]);
         if (null === $jobInstance) {
             throw new NotFoundResourceException(sprintf('No job found with job code "%s"', $jobCode));
         }
         $operation->finalize();
         $rawConfiguration = $operation->getBatchConfig();
         $this->simpleJobLauncher->launch($jobInstance, $this->tokenStorage->getToken()->getUser(), $rawConfiguration);
     }
     if ($form->isValid()) {
         $this->request->getSession()->getFlashBag()->add('success', new Message(sprintf('pim_enrich.mass_edit_action.%s.launched_flash', $operationAlias)));
         $route = $this->getRouteFromMapping($gridName);
         return new RedirectResponse($this->router->generate($route, ['dataLocale' => $this->getQueryParams()['dataLocale']]));
     }
     return $this->templating->renderResponse(sprintf('PimEnrichBundle:MassEditAction:configure/%s.html.twig', $operationAlias), ['form' => $form->createView(), 'operationAlias' => $operationAlias, 'itemsName' => $itemsName, 'productCount' => $productCount, 'queryParams' => $this->getQueryParams()]);
 }
 /**
  * Display the form to configure the mass edit action to execute
  *
  * @AclAncestor("pim_enrich_mass_edit")
  *
  * @param Request $request
  * @param string  $operationAlias
  *
  * @return Response
  */
 public function configureAction(Request $request, $operationAlias)
 {
     $operation = $this->operationRegistry->get($operationAlias);
     $form = $this->massEditFormResolver->getConfigurationForm($operationAlias);
     $itemsCount = $request->get('itemsCount');
     $configureTemplate = $this->getConfigureOperationTemplate($operationAlias);
     return $this->templating->renderResponse($configureTemplate, ['form' => $form->createView(), 'operationAlias' => $operationAlias, 'operation' => $operation, 'queryParams' => $this->getQueryParams($request), 'itemsCount' => $itemsCount]);
 }