<?php

class Endosso_Model_Row_Processo extends Agro_Db_Table_Row_Abstract {
	
	/**
	 * Duplica a o processo
	 * 
	 * @param integer $idProposta
	 */
	public function duplicar($idPropostaOriginal, $AvisoBackup) {
		try {
			//$Processo = parent::duplicar(array('id_proposta' => $idPropostaOriginal));
			
			//$this->_duplicar_observacoes_processo($Processo->id);
			//$this->_duplicar_arquivos($Processo->id);
			//$this->_duplicar_observacoes_arquivos($Processo->id);
			//$this->_duplicar_empresas($Processo->id);
			//$this->_duplicar_questionario($Processo->id);
			$this->_duplicar_vistorias($Processo->id, $AvisoBackup);
			
			return $Processo->id;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as observacoes do processo
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_observacoes_processo($idProcessoBackup) {
		try {
			$Model = new Endosso_Model_ProcessosObservacoes();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_processo' => $idProcessoBackup));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os arquivos
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_arquivos($idProcessoBackup) {
		try {
			$Model = new Endosso_Model_ProcessosArquivos();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_processo' => $idProcessoBackup));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as observacoes dos arquivos
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_observacoes_arquivos($idProcessoBackup) {
		try {
			$Model = new Endosso_Model_ProcessosObservacoesArquivos();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_processo' => $idProcessoBackup));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as empresas do processo
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_empresas($idProcessoBackup) {
		try {
			$Model = new Endosso_Model_ProcessosEmpresas();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_processo' => $idProcessoBackup));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os questionarios do processo
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_questionario($idProcessoBackup) {
		try {
			$Model = new Endosso_Model_ProcessosQuestionarios();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_processo' => $idProcessoBackup));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as vistorias do processo
	 * 
	 * @param integer $idProcessoBackup
	 */
	protected function _duplicar_vistorias($idProcessoBackup, $AvisoBackup) {
		try {
			$Model = new Endosso_Model_VistoriasProcessos();
			$Rs = $Model->fetchAll("id_processo = {$this->id}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar($idProcessoBackup, $AvisoBackup);
				}
			}
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
}