<?php
class Regulacao_Model_LaudosFinaisItensSeguradosAmostras extends Agro_Db_Table_Abstract {

    /**
     * Limpa os dados que foram digitados dos itens que foram repliados apartir do idItemSeguradoOrigem
     * 
     * @param int $idLaudoFinal - Id do laudo final
     * @param int $idItemSeguradoOrigem - Id do item que originou a replicação
     * @param array $idItensSeguradoReplicar - Array contendo os ids dos itens que serão replicados
     */
    protected function limparDadosReplicados($idLaudoFinal, $idItemSeguradoOrigem, $idItensSeguradoReplicar) {
		
		$modelLaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();
		$select = $modelLaudosFinaisItensSegurados->getData("id_laudo_final = {$idLaudoFinal} AND id_item_segurado_origem = {$idItemSeguradoOrigem}");
		
		$rsLaudosFinaisItensSegurados = $this->fetchAll($select);

		foreach($rsLaudosFinaisItensSegurados as $laudoFinalItemSegurado ) {
			$this->delete($laudoFinalItemSegurado->id, "id_laudo_final_item_segurado");
			$modelLaudosFinaisItensSegurados->deleteItem($laudoFinalItemSegurado->id);
		}

        $this->limparIdItemOrigem($idLaudoFinal, $idItensSeguradoReplicar);
	}

    /**
     * Limpa o id_item_segurado_origem dos itens que estão sendo replicados e copia o arquivo de origem. Para o caso de um desses itens ter sido origem de outro item.
     * 
     * @param int $idLaudoFinal - Id do laudo final
     * @param array $idItensSeguradoReplicar - Array contendo os ids dos itens que serão replicados
     */
    private function limparIdItemOrigem($idLaudoFinal, $idItensSeguradoReplicar) {

        if (empty($idItensSeguradoReplicar) || !is_array($idItensSeguradoReplicar)) {
            return;
        }

        $ids = implode(", ", $idItensSeguradoReplicar);

        $modelLaudoFinal = new Sinistro2_Model_LaudosFinais();
        $modelLaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();
		$select = $modelLaudosFinaisItensSegurados->getData("id_laudo_final = {$idLaudoFinal} AND id_item_segurado_origem in ({$ids})");
		
		$rsLaudosFinaisItensSegurados = $this->fetchAll($select);
        
        foreach($rsLaudosFinaisItensSegurados as $laudoFinalItemSegurado ) {

            $oldName = $laudoFinalItemSegurado->ds_nome_laudo_fisico;
            $laudoFinalItemSegurado->ds_nome_laudo_fisico = '';
            
            $dados = ['id_vistoria' => '', 'id_processo' => ''];
            $dados['id_vistoria'] = $modelLaudoFinal->getIdVistoriaByIdLaudoFinal($idLaudoFinal);
            $dados['id_processo'] = $modelLaudoFinal->getIdProcessoByIdLaudoFinal($idLaudoFinal);

            $newName = $modelLaudosFinaisItensSegurados->geraNomeArquivoFisico($laudoFinalItemSegurado, $oldName, $dados);
            $diretorio = (APPLICATION_ENV != 'production') ? PATH_LAUDOS_DEV : PATH_LAUDOS;
            copy("{$diretorio}/{$oldName}", "{$diretorio}/{$newName}");

            $modelLaudosFinaisItensSegurados->update(['id_item_segurado_origem' => null, 'ds_nome_laudo_fisico' => $newName], "id = {$laudoFinalItemSegurado->id}");
        }
    }
}
