/** * 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); }
/** * 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); }