<?php

namespace App\Dtos\Factory;

use App\Dtos\InformaciaDto;
use App\Dtos\PouzivatelDto;
use App\Models\Informacia\Informacia;
use Carbon\Carbon;

/**
 * Trieda InformaciaDtoFactory
 *
 * Sluzi na vytvorenie DTO objektu z modelu Informacia
 *
 * @package App\Dtos\Factory
 * @author Radoslav Lukac <dev@seka.sk>
 */
final class InformaciaDtoFactory
{
    /**
     * Vytvori novy InformaciaDto objekt z modelu Informacia
     *
     * @param Informacia $informacia Model informacie
     * @return InformaciaDto Vytvoreny DTO objekt
     */
    public static function make(Informacia $informacia): InformaciaDto
    {
        $model = $informacia->withoutRelations()->toArray();
        $vytvoril = $informacia->vytvoril;

        $model['vytvoril'] = new PouzivatelDto($vytvoril->toArray());
        $model['planovany_cas_zverejnenia'] = Carbon::make($model['planovany_cas_zverejnenia']);
        $model['cas_zverejnenia'] = Carbon::make($model['cas_zverejnenia']);
        $model['created_at'] = Carbon::make($model['created_at']);
        $model['updated_at'] = Carbon::make($model['updated_at']);
        $model['deleted_at'] = Carbon::make($model['deleted_at'] ?? null);

        return new InformaciaDto($model);
    }
}
