<?php

namespace Lc\ShopBundle\Form\DataTransformer;

use Lc\ShopBundle\Context\ProductInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;

class ProductToIdTransformer implements DataTransformerInterface
{
        private $em ;

        public function __construct(EntityManagerInterface $em)
        {
                $this->em = $em;
        }

        public function transform($product)
        {

                if (null === $product) {
                        return '';
                }

                return $product->getId();
        }

        public function reverseTransform($productId)
        {
                if (!$productId) {
                        return;
                }

                $product = $this->em->getRepository($this->em->getClassMetadata(ProductInterface::class)->getName())->find($productId);

                if (null === $product) {
                        throw new TransformationFailedException(sprintf(
                                'An issue with number "%s" does not exist!',
                                $productId
                        ));
                }

                return $product;
        }
}
