zend-blog-3-backend
64 строки · 1.5 Кб
1<?php
2
3namespace App\API\Transformers;
4
5use App\DTO\PygmentsCodeDTO;
6use App\Entity\PygmentsCode;
7use League\Fractal\Resource\ResourceInterface;
8
9class PygmentsCodeTransformer extends BaseTransformer
10{
11/**
12* @var array
13*/
14protected array $availableIncludes = [
15'language',
16];
17
18/**
19* @param PygmentsCode $item
20*
21* @return array
22*/
23public function transform(PygmentsCode $item)
24{
25$languageId = null;
26if ($item->getLanguage()) {
27$languageId = $item->getLanguage()->getId();
28}
29
30return [
31'id' => $item->getId(),
32'code' => $item->getSourceCode(),
33'html' => $item->getSourceHtml(),
34'preview' => $item->getSourceHtmlPreview(),
35'language' => $languageId,
36'languageId' => $languageId,
37'createdAt' => $this->dateTimeToISO($item->getTimeCreated()),
38];
39}
40
41/**
42* @param PygmentsCode $entity
43* @param PygmentsCodeDTO $data
44*/
45public static function reverseTransform(PygmentsCode $entity, PygmentsCodeDTO $data)
46{
47$entity->setSourceCode($data['code']);
48}
49
50/**
51* @param PygmentsCode $entity
52*
53* @return ResourceInterface
54*/
55public function includeLanguage(PygmentsCode $entity): ResourceInterface
56{
57$items = [];
58if ($entity->getLanguage()) {
59$items = [$entity->getLanguage()];
60}
61
62return $this->collection($items, new PygmentsLanguageTransformer(), 'pygmentsLanguages');
63}
64}
65