public setSystemPreference ( string $key, string $value ) : |
||
$key | string | The key to set |
$value | string | The value to set |
return | The user preference |
public function setSystemPreference($key, $value)
{
$dql = 'SELECT sp FROM PartKeepr\\SystemPreferenceBundle\\Entity\\SystemPreference sp WHERE sp.preferenceKey = :key';
$query = $this->entityManager->createQuery($dql);
$query->setParameter('key', $key);
try {
$systemPreference = $query->getSingleResult();
} catch (\Exception $e) {
$systemPreference = new SystemPreference();
$systemPreference->setPreferenceKey($key);
$this->entityManager->persist($systemPreference);
}
$systemPreference->setPreferenceValue($value);
$this->entityManager->flush();
return $systemPreference;
}
/** * Retrieves a collection of resources. * * @param Request $request * * @throws \Exception If the format is invalid * @throws RuntimeException|RootNodeNotFoundException * * @return JsonResponse */ public function __invoke(Request $request) { $data = json_decode($request->getContent()); if (property_exists($data, 'preferenceKey') && property_exists($data, 'preferenceValue')) { $preference = $this->systemPreferenceService->setSystemPreference($data->preferenceKey, $data->preferenceValue); } else { throw new \Exception('Invalid format'); } /** * @var ResourceInterface $resourceType */ list($resourceType) = $this->extractAttributes($request); $serializedData = $this->serializer->normalize($preference, 'json', $resourceType->getNormalizationContext()); return new JsonResponse($serializedData); }