src/Controller/Api/AccountInstitutionAppPersonalizationController.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use App\Entity\Institution;
  4. use App\Entity\InstitutionAppPersonalization;
  5. use App\Entity\User;
  6. use App\Service\InstitutionService;
  7. use App\Service\Rsa;
  8. use App\Service\SerializeService;
  9. use App\Service\Tools;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. /**
  18.  * Class AccountInstitutionAppPersonalizationController
  19.  * @package App\Controller\Api
  20.  * @Route(path="/api/account/institution/app/personalization", name="api_account_institution_app_personalization")
  21.  * @IsGranted("IS_AUTHENTICATED_FULLY")
  22.  */
  23. class AccountInstitutionAppPersonalizationController extends AbstractController
  24. {
  25.     private $em;
  26.     private $serializeService;
  27.     private $institutionService;
  28.     private $rsa;
  29.     private $translator;
  30.     public function __construct(
  31.         EntityManagerInterface $em,
  32.         SerializeService $serializeService,
  33.         InstitutionService $institutionService,
  34.         Rsa $rsa,
  35.         TranslatorInterface $translator,
  36.     ) {
  37.         $this->em $em;
  38.         $this->serializeService $serializeService;
  39.         $this->institutionService $institutionService;
  40.         $this->rsa $rsa;
  41.         $this->translator $translator;
  42.     }
  43.     /**
  44.      * @param InstitutionAppPersonalization $institutionAppPersonalization
  45.      * @param Request $request
  46.      * @return JsonResponse
  47.      * @Route("/{institutionAppPersonalization}", name="find", requirements={"institutionAppPersonalization"="\d+"})
  48.      */
  49.     public function find(InstitutionAppPersonalization $institutionAppPersonalizationRequest $request)
  50.     {
  51.         if (!$this->rsa->isValidToken($request->request->get('apiKey'))) {
  52.             return new JsonResponse([
  53.                 'success' => false,
  54.                 'message' => $this->translator->trans('global.invalidToken'),
  55.             ]);
  56.         }
  57.         /** @var User $user */
  58.         $user $this->getUser();
  59.         if (!$user->getInstitutions()->contains($institutionAppPersonalization->getInstitution())) {
  60.             return new JsonResponse([
  61.                 'success' => false,
  62.             ]);
  63.         }
  64.         return new JsonResponse([
  65.             'success' => true,
  66.             'institutionAppPersonalization' => $this->serializeService->serializeInstitutionAppPersonalization($institutionAppPersonalization),
  67.         ]);
  68.     }
  69.     /**
  70.      * @param Request $request
  71.      * @return JsonResponse
  72.      * @Route("/update", name="update")
  73.      */
  74.     public function update(Request $request)
  75.     {
  76.         if (!$this->rsa->isValidToken($request->request->get('apiKey'))) {
  77.             return new JsonResponse([
  78.                 'success' => false,
  79.                 'message' => $this->translator->trans('global.invalidToken'),
  80.             ]);
  81.         }
  82.         /** @var User $user */
  83.         $user $this->getUser();
  84.         /** @var Institution|JsonResponse $institution */
  85.         $institution $this->institutionService->getInstitutionForUser($request$user);
  86.         
  87.         // Check if a JSON error has been returned
  88.         if ($institution instanceof JsonResponse) {
  89.             return $institution;
  90.         }
  91.         $institutionAppPersonalization $institution->getInstitutionAppPersonalization();
  92.         if (is_null($institutionAppPersonalization)) {
  93.             $institutionAppPersonalization = new InstitutionAppPersonalization();
  94.             $institutionAppPersonalization->setInstitution($institution);
  95.         }
  96.         $data Tools::getRequestData($request);
  97.         $institutionAppPersonalization->setPrimaryColor($data['primaryColor']);
  98.         $institutionAppPersonalization->setPrimaryVariantColor($data['primaryVariantColor']);
  99.         $institutionAppPersonalization->setTextOverPrimaryColor($data['textOverPrimaryColor']);
  100.         $this->em->persist($institutionAppPersonalization);
  101.         $this->em->flush();
  102.         return new JsonResponse([
  103.             'success' => true,
  104.             'user' => $this->serializeService->serializeInstitutionAppPersonalization($institutionAppPersonalization),
  105.             'message' => $this->translator->trans('personalize.success'),
  106.         ]);
  107.     }
  108. }