← Back
Editing: NoteDenormalizer.php
<?php namespace App\Service\Control; use App\Entity\Controle; use App\Entity\Item; use App\Entity\Note; use App\Repository\ItemRepository; use App\Repository\NoteRepository; use App\Service\Upload; class NoteDenormalizer { public function __construct( private readonly ItemRepository $itemRepository, private readonly PictureDenormalizer $pictureDenormalizer, private readonly NoteRepository $noteRepository, private readonly string $photosDirectory ) { } public function __invoke(array $itemControls, Controle $control): void { $upload = new Upload($this->photosDirectory); $controlUid = uniqid(); // Fetch item notes foreach ($itemControls as $item) { $itemEntity = $this->itemRepository->find($item['id']); $note = $this->getNoteFromItemAndControl($itemEntity, $control); $note->setNote($item['note']['note']); ($this->pictureDenormalizer)($note, $item['note']); // add comment if exists if (array_key_exists('commentaire', $item['note'])) { $note->setCommentaire($item['note']['commentaire']); } // save and add picture path if exists if (array_key_exists('photo', $item['note'])) { $data = $item['note']['photo']; $filePath = $upload->saveBase64File($data, 'jpg', $controlUid); $note->setPhoto($filePath); } if (null === $note->getId()) { $control->addNote($note); } } } private function getNoteFromItemAndControl(Item $item, Controle $control): Note { $note = $this->noteRepository->findOneBy([ 'item' => $item, 'controle' => $control, ]); if (null === $note && false === $control->hasNote($item)) { return (new Note()) ->setItem($item) ->setControle($control); } return $note; } }
Save File
Cancel