<?php

class Sinistro2_Service_LaudosPreliminares
{
    private Sinistro2_Model_LaudosPreliminares $modelLaudosPreliminares;
    private ?Log_Model_LaudosPreliminaresHistorico $modelLaudosPreliminaresHistorico;

    public function __construct(
        Sinistro2_Model_LaudosPreliminares     $modelLaudosPreliminares,
        ?Log_Model_LaudosPreliminaresHistorico $modelLaudosPreliminaresHistorico = null
    )
    {
        $this->modelLaudosPreliminares = $modelLaudosPreliminares;
        $this->modelLaudosPreliminaresHistorico = $modelLaudosPreliminaresHistorico;
    }

    public function devolverLaudo(int $idLaudoPreliminar): void
    {
        $idStatus = (new Sistema_Model_Status())->getIdStatus('PENDENTE_ENVIO', 'LAUDOS_PRELIMINARES');
        $this->modelLaudosPreliminares->alterarStatusLaudo($idLaudoPreliminar, $idStatus);

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

        (new Sinistro2_Service_LaudosPreliminaresHistorico($this->modelLaudosPreliminaresHistorico))
            ->salvarHistorico($idLaudoPreliminar, Log_Model_LaudosPreliminaresHistorico::ACAO_DEVOLVER);
    }
}
