<?php

class Sinistro2_Model_ProcessosObservacoesArquivos extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'processos_observacoes_arquivos';
	protected $_primary = array('id');
	public $_order = 'id_processo';
	
	const FILE_PATH_DEL = APPLICATION_PATH . '/upload_files/processos_arquivos_excluidos';

	public function getObservacoesArquivosByProcesso($idProcesso) {
		if ($idProcesso) {
			$select = $this->select();
			$select->setIntegrityCheck(false);
			$select->from(array('po' => 'sinistro.processos_observacoes_arquivos'), array('po.id','po.ds_observacao_arquivos',"to_char(po.dt_criacao, 'DD/MM/YYYY HH24:MI:SS') as dt_entrada", 'ds_nome_arquivo'));
			$select->join(array('u'  => 'sistema.usuarios'),'po.id_usuario_criacao = u.id','u.ds_nome_usuario as ds_nome_funcionario');
			$select->where("po.id_processo = ?", $idProcesso);
			$select->where("po.fl_ativo = true");
			$select->order(array('po.dt_criacao desc'));
			
			return $this->_db->fetchAll($select);
		} else {
			return false;			
		}
	}
	
	public function saveObservacaoExclusao($dados){
		try{
			$observacao = 'Arquivo '.$dados['ds_nome_arquivo'].' foi excluído.';
	
			$Row = $this->createRow();
			$Row->id_processo = $dados['id_processo'];
			$Row->ds_observacao_arquivos = $observacao;
	
			$Row->save();
		}catch (Exception $e){
			die($e);
		}
	}
	
	public function saveObservacaoAlteracaoStatus($idProcesso, $idStatus, $nomeRevisor){
		try{
			$observacao = 'Arquivos alterados para o status "'.Agro_Util::getStatus($idStatus);
	
			$Row = $this->createRow();
			$Row->id_processo = $idProcesso;
			$Row->ds_observacao_arquivos = $observacao;
	
			$Row->save();
		}catch (Exception $e){
			die($e);
		}
	}

	/**
	 * Move o arquivo para a pasta de arquivos excluídos logicamente, quando os mesmos devem permanecer para download nas observações dos arquivos dos processos.
	 * 
	 * @param string $caminhoArquivoOriginal
	 */
	public function moverArquivoExcluidoLogicamente($caminhoArquivoOriginal)
	{
		if (!file_exists(self::FILE_PATH_DEL)) {
			mkdir(self::FILE_PATH_DEL, '0755', true);
		}

		$nomeArquivo = end(explode('/', $caminhoArquivoOriginal));

		if (!rename($caminhoArquivoOriginal, self::FILE_PATH_DEL . "/" . $nomeArquivo)) {
			throw new Exception("Erro ao mover arquivo.");
		}
	}
	
}
