<?php

class Sinistro2_Service_LaudosFinais
{
    private Sinistro2_Model_LaudosFinais $modelLaudosFinais;
    private ?Log_Model_LaudosFinaisHistorico $modelLaudosFinaisHistorico;

    public function __construct(
        Sinistro2_Model_LaudosFinais     $modelLaudosFinais,
        ?Log_Model_LaudosFinaisHistorico $modelLaudosFinaisHistorico = null
    )
    {
        $this->modelLaudosFinais = $modelLaudosFinais;
        $this->modelLaudosFinaisHistorico = $modelLaudosFinaisHistorico;
    }

    public function devolverLaudo(int $idLaudoFinal): void
    {
        $idStatus = (new Sistema_Model_Status())->getIdStatus('PENDENTE_ENVIO', 'LF');
        $this->modelLaudosFinais->alterarStatusLaudo($idLaudoFinal, $idStatus);

        if (!$this->modelLaudosFinaisHistorico instanceof Log_Model_LaudosFinaisHistorico) {
            throw new InvalidArgumentException('Objeto inválido para salvar o histórico de devolução do laudo.');
        }

        (new Sinistro2_Service_LaudosFinaisHistorico($this->modelLaudosFinaisHistorico))
            ->salvarHistorico($idLaudoFinal, Log_Model_LaudosPreliminaresHistorico::ACAO_DEVOLVER);
    }
}
