<?php declare(strict_types=1);

class Sinistro2_Service_AtualizarStatusLiquidacaoAposConclusaoAnalise
{
    public function executar(int $idProposta, int $idProcesso)
    {
        $documentosBeneficiariosAnaliseConcluida = (new Seguro_Model_PropostasBeneficiarios())
            ->todosDocumentosAnalisados($idProposta);

        $documentosSeguradoAnaliseConcluida = (new Sinistro2_Model_Processos())
            ->todosDocumentosSeguradoAnalisados($idProposta);
        
        if ($documentosBeneficiariosAnaliseConcluida && $documentosSeguradoAnaliseConcluida) {
            $rs = (new Sinistro2_Model_Liquidacoes())->atualizarStatusLiquidacoesProcesso(
                $idProcesso,
                Sinistro2_Model_Liquidacoes::ID_STATUS_ENVIADA_SEGURADORA,
                Sinistro2_Model_Liquidacoes::ID_STATUS_AGUARDANDO_ENVIO_SEGURADORA
            );

            $model = new Sinistro2_Model_LiquidacoesStatus();

            foreach ($rs as $row) {
                $model->save(
                    $row['id'],
                    Sinistro2_Model_Liquidacoes::ID_STATUS_ENVIADA_SEGURADORA,
                    'Status atualizado automaticamente após a validação dos documentos obrigatórios do segurado/beneficiário.'
                );
            }
        }
    }
}