/**
  * @EXT\Route(
  *     "/api/admin/home/tab/{homeTabConfig}/type/{homeTabType}/edit",
  *     name="api_put_admin_home_tab_edition",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", options={"authenticatedUser" = true})
  *
  * Edits an admin home tab
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function putAdminHomeTabEditionAction(HomeTabConfig $homeTabConfig, $homeTabType = 'desktop')
 {
     $homeTab = $homeTabConfig->getHomeTab();
     $this->checkAdminHomeTab($homeTab, $homeTabType);
     $this->checkAdminHomeTabConfig($homeTabConfig, $homeTabType);
     $formType = new HomeTabType('admin');
     $formType->enableApi();
     $form = $this->createForm($formType);
     $form->submit($this->request);
     if ($form->isValid()) {
         $formDatas = $form->getData();
         $color = $form->get('color')->getData();
         $locked = $form->get('locked')->getData();
         $visible = $form->get('visible')->getData();
         $roles = $formDatas['roles'];
         $homeTab->emptyRoles();
         foreach ($roles as $role) {
             $homeTab->addRole($role);
         }
         $homeTab->setName($formDatas['name']);
         $homeTabConfig->setVisible($visible);
         $homeTabConfig->setLocked($locked);
         $details = $homeTabConfig->getDetails();
         if (is_null($details)) {
             $details = [];
         }
         $details['color'] = $color;
         $homeTabConfig->setDetails($details);
         $this->homeTabManager->persistHomeTabConfigs($homeTab, $homeTabConfig);
         $event = new LogHomeTabAdminEditEvent($homeTabConfig);
         $this->eventDispatcher->dispatch('log', $event);
         return new JsonResponse($this->serializer->serialize($homeTabConfig, 'json', SerializationContext::create()->setGroups(['api_home_tab'])), 200);
     } else {
         $options = ['http_code' => 400, 'extra_parameters' => null, 'serializer_group' => 'api_home_tab'];
         return $this->apiManager->handleFormView('ClarolineCoreBundle:API:HomeTab\\adminHomeTabEditForm.html.twig', $form, $options);
     }
 }
 /**
  * @EXT\Route(
  *     "/api/desktop/home/tab/{homeTab}/edit",
  *     name="api_put_user_home_tab_edition",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", options={"authenticatedUser" = true})
  *
  * Edits a home tab
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function putUserHomeTabEditionAction(User $user, HomeTab $homeTab)
 {
     $this->checkHomeLocked();
     $this->checkHomeTabEdition($homeTab, $user);
     $formType = new HomeTabType();
     $formType->enableApi();
     $form = $this->createForm($formType);
     $form->submit($this->request);
     if ($form->isValid()) {
         $homeTabConfig = $this->homeTabManager->getHomeTabConfigByHomeTabAndUser($homeTab, $user);
         if (is_null($homeTabConfig)) {
             $homeTabConfig = new HomeTabConfig();
             $homeTabConfig->setHomeTab($homeTab);
             $homeTabConfig->setType('desktop');
             $homeTabConfig->setUser($user);
             $homeTabConfig->setLocked(false);
             $homeTabConfig->setVisible(true);
             $lastOrder = $this->homeTabManager->getOrderOfLastDesktopHomeTabConfigByUser($user);
             if (is_null($lastOrder['order_max'])) {
                 $homeTabConfig->setTabOrder(1);
             } else {
                 $homeTabConfig->setTabOrder($lastOrder['order_max'] + 1);
             }
         }
         $formDatas = $form->getData();
         $homeTab->setName($formDatas['name']);
         $color = $form->get('color')->getData();
         $details = $homeTabConfig->getDetails();
         if (is_null($details)) {
             $details = [];
         }
         $details['color'] = $color;
         $homeTabConfig->setDetails($details);
         $this->homeTabManager->persistHomeTabConfigs($homeTab, $homeTabConfig);
         $event = new LogHomeTabUserEditEvent($homeTabConfig);
         $this->eventDispatcher->dispatch('log', $event);
         return new JsonResponse($this->serializer->serialize($homeTabConfig, 'json', SerializationContext::create()->setGroups(['api_home_tab'])), 200);
     } else {
         $options = ['http_code' => 400, 'extra_parameters' => null, 'serializer_group' => 'api_home_tab'];
         return $this->apiManager->handleFormView('ClarolineCoreBundle:API:HomeTab\\userHomeTabEditForm.html.twig', $form, $options);
     }
 }