Add getQuantityUnits and set/getUserFieldsForObject

This commit is contained in:
Tim
2021-10-04 02:40:45 +02:00
parent 22c4101729
commit 5a65036620
5 changed files with 176 additions and 52 deletions

View File

@ -4,35 +4,27 @@
namespace Ardent\GrocyApi\Objects;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
class ObjectTransformer
{
public function SerializeObjectToJsonResponse($object, $context = []): JsonResponse
private static function objectList(): array
{
$defaultContext = [
AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object, $format, $context) {
return $object->getId();
},
return [
ProductsObject::getEntity() => ProductsObject::class,
QuantityUnitsObject::getEntity() => QuantityUnitsObject::class,
];
$serializer = new Serializer([
new ObjectNormalizer(),
], [new JsonEncoder()]);
$json = $serializer->serialize($object, 'json', $context);
return new JsonResponse($json, 200, [], true);
}
public static function denormalize($object, string $name): AbstractApiObject
{
return (new ObjectNormalizer())->denormalize($object, sprintf('%s\\%sObject', __NAMESPACE__, ucfirst($name)));
// $name = (new CamelCaseToSnakeCaseNameConverter())->denormalize($name);
// sprintf('%s\\%sObject', __NAMESPACE__, ucfirst($name))
return (new ObjectNormalizer())->denormalize($object, self::objectList()[$name]);
}
public static function normalize(AbstractApiObject $object): array