Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
CRAP | |
95.24% |
20 / 21 |
StudentConventionTransformer | |
0.00% |
0 / 1 |
|
50.00% |
1 / 2 |
11 | |
95.24% |
20 / 21 |
transform | |
0.00% |
0 / 1 |
5.01 | |
91.67% |
11 / 12 |
|||
reverseTransform | |
100.00% |
1 / 1 |
6 | |
100.00% |
9 / 9 |
<?php | |
/* | |
* This file is part of the Incipio package. | |
* | |
* (c) Théo FIDRY <theo.fidry@gmail.com> | |
* | |
* For the full copyright and license information, please view the LICENSE | |
* file that was distributed with this source code. | |
*/ | |
namespace FrontBundle\Form\DataTransformer; | |
use FrontBundle\Utils\IriHelper; | |
use Symfony\Component\Form\DataTransformerInterface; | |
/** | |
* @link http://symfony.com/doc/current/cookbook/form/data_transformers.html#about-model-and-view-transformers | |
* | |
* @author Théo FIDRY <theo.fidry@gmail.com> | |
*/ | |
class StudentConventionTransformer implements DataTransformerInterface | |
{ | |
/** | |
* API URI for the StudentConvention. Is put as a constant here to avoid to have to inject the router service to | |
* generate it. This would indeed result in declaring those forms as services which is quite heavy and ugly. | |
*/ | |
const API_URI_PREFIX = '/api/student_conventions'; | |
/** | |
* {@inheritdoc} | |
*/ | |
public function transform($value) | |
{ | |
if (null === $value) { | |
return; | |
} | |
if (isset($value['@id'])) { | |
$value['@id'] = IriHelper::extractId($value['@id']); | |
} | |
if (isset($value['dateOfSignature'])) { | |
$value['dateOfSignature'] = (true === empty($value['dateOfSignature'])) | |
? null | |
: new \DateTime($value['dateOfSignature']) | |
; | |
} | |
return $value; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function reverseTransform($value) | |
{ | |
if (null === $value) { | |
return; | |
} | |
if (isset($value['@id']) && false === empty($value['@id'])) { | |
$value['@id'] = sprintf('%s/%s', self::API_URI_PREFIX, IriHelper::extractId($value['@id'])); | |
} | |
if (isset($value['dateOfSignature']) && $value['dateOfSignature'] instanceof \DateTime) { | |
$value['dateOfSignature'] = $value['dateOfSignature']->format('Y-m-d\TH:i:sP'); | |
} | |
return $value; | |
} | |
} |