Exemplo n.º 1
0
 /**
  * Takes a key, value pair and stores it as settings for the user.
  *
  * @param Request $request
  *
  * @return Response
  */
 public function putSettingsAction(Request $request)
 {
     $key = $request->get('key');
     $value = $request->get('value');
     try {
         if (!$key) {
             throw new MissingArgumentException(static::$entityNameUserSetting, 'key');
         }
         if (!$value) {
             throw new MissingArgumentException(static::$entityNameUserSetting, 'value');
         }
         $user = $this->tokenStorage->getToken()->getUser();
         // encode before persist
         $data = json_encode($value);
         // get setting
         // TODO: move this logic into own service (UserSettingManager?)
         $setting = $this->userSettingRepository->findOneBy(['user' => $user, 'key' => $key]);
         // or create new one
         if (!$setting) {
             $setting = new UserSetting();
             $setting->setKey($key);
             $setting->setUser($user);
             $this->objectManager->persist($setting);
         }
         // persist setting
         $setting->setValue($data);
         $this->objectManager->flush();
         //create view
         $view = View::create($setting, 200);
     } catch (RestException $exc) {
         $view = View::create($exc->toArray(), 400);
     }
     return $this->viewHandler->handle($view);
 }
Exemplo n.º 2
0
 /**
  * Deletes a user setting by a given key.
  *
  * @param Request $request
  *
  * @return Response
  */
 public function deleteSettingsAction(Request $request)
 {
     $key = $request->get('key');
     try {
         if (!$key) {
             throw new MissingArgumentException(static::$entityNameUserSetting, 'key');
         }
         $user = $this->tokenStorage->getToken()->getUser();
         // get setting
         // TODO: move this logic into own service (UserSettingManager?)
         $setting = $this->userSettingRepository->findOneBy(['user' => $user, 'key' => $key]);
         if ($setting) {
             $this->objectManager->remove($setting);
             $this->objectManager->flush();
             $view = View::create(null, 204);
         } else {
             $view = View::create(null, 400);
         }
     } catch (RestException $exc) {
         $view = View::create($exc->toArray(), 400);
     }
     return $this->viewHandler->handle($view);
 }