/**
  * On form pre set data
  *
  * @param FormEvent $event
  */
 public function preSetData(FormEvent $event)
 {
     $user = $event->getData();
     if (!$user instanceof UserInterface) {
         return;
     }
     $form = $event->getForm();
     $types = $this->datagridViewRepo->getDatagridViewTypeByUser($user);
     foreach ($types as $type) {
         $alias = $type['datagridAlias'];
         $form->add('default_' . str_replace('-', '_', $alias) . '_view', 'entity', ['class' => 'PimDataGridBundle:DatagridView', 'choice_label' => 'label', 'label' => 'user.default_' . str_replace('-', '_', $alias) . '_view.label', 'query_builder' => function (DatagridViewRepositoryInterface $gridViewRepository) use($user, $alias) {
             return $gridViewRepository->findDatagridViewByUserAndAlias($user, $alias);
         }, 'required' => false, 'attr' => ['data-type' => 'default-grid-view']]);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function reverseTransform($value)
 {
     if (null === $value) {
         return null;
     }
     $types = $this->datagridViewRepo->getDatagridViewTypeByUser($value);
     foreach ($types as $type) {
         $field = 'default_' . str_replace('-', '_', $type['datagridAlias']) . '_view';
         if (property_exists($value, $field)) {
             if ($value->getDefaultGridView($type['datagridAlias']) !== $value->{$field}) {
                 $value->setDefaultGridView($type['datagridAlias'], $value->{$field});
             }
         }
     }
     return $value;
 }
 /**
  * Remove the Datagrid View with the given $identifier.
  *
  * If any errors occur during the process, a Json response is sent with {'errors' => 'Error message'}.
  * If success, return an empty Json response with code 204 (No content).
  *
  * @param Request $request
  * @param string  $identifier
  *
  * @return JsonResponse
  */
 public function removeAction(Request $request, $identifier)
 {
     $user = $this->tokenStorage->getToken()->getUser();
     $view = $this->datagridViewRepo->findOneBy(['owner' => $user, 'id' => $identifier]);
     if (null === $view) {
         return new JsonResponse($this->translator->trans('grid.view_selector.flash.not_removable'), 404);
     }
     $this->remover->remove($view);
     $request->getSession()->getFlashBag()->add('success', new Message('grid.view_selector.flash.removed'));
     return new JsonResponse(null, 204);
 }