<?php

namespace App\Dto\Output;

use ApiPlatform\Metadata\Get;
use App\Entity\ImageImageRepository;
use Symfony\Component\Serializer\Annotation\Groups;

#[Get(shortName: 'ImageImageRepository')]
class ImageImageRepositoryOutput extends AbstractOutput
{
    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?ImageOutput $image = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?ImageRepositoryOutput $imageRepository = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public string $status;

    #[Groups(['image-image-repository:read', 'image:read', 'partition:read', 'client:read'])]
    public string $name;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?string $imageFullsum = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?array $partitionInfo = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?string $datasize = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?string $description = null;

    #[Groups(['image:read', 'image-image-repository:read'])]
    public ?int $version = null;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public \DateTime $createdAt;

    #[Groups(['image-image-repository:read', 'image:read'])]
    public ?string $createdBy = null;

    public function __construct(ImageImageRepository $imageImageRepository, array $context = [])
    {
        parent::__construct($imageImageRepository);

        if (isset($context['groups']) && in_array('image-image-repository:read', $context['groups'])) {
            if ($imageImageRepository->getImage()) {
                $this->image = new ImageOutput($imageImageRepository->getImage());
            }
        }

        if ($imageImageRepository->getRepository()) {
            $this->imageRepository = new ImageRepositoryOutput($imageImageRepository->getRepository());
        }

        $this->name = $imageImageRepository->getName();
        $this->version = $imageImageRepository->getVersion();
        $this->partitionInfo = json_decode($imageImageRepository->getPartitionInfo(), true);
        $this->status = $imageImageRepository->getStatus();
        $this->imageFullsum = $imageImageRepository->getImageFullsum();
        $this->datasize = $imageImageRepository->getDatasize();
        $this->description = $imageImageRepository->getDescription();
        $this->createdAt = $imageImageRepository->getCreatedAt();
        $this->createdBy = $imageImageRepository->getCreatedBy();
    }
}