<?php

class Endosso_Model_Row_VistoriaProcesso extends Agro_Db_Table_Row_Abstract {
	
	/**
	 * Duplicar
	 * 
	 * @param integer $idProcesso
	 * @param integer $idVistoria
	 */
	public function duplicar($idProcessoBackup, $AvisoBackup) {
		try {
			$Model = new Endosso_Model_Vistorias();
			$Rs = $Model->fetchAll("id = {$this->id_vistoria}");
			
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$VistoriaBackup = $Row->duplicar($AvisoBackup);
					
					if ($VistoriaBackup->id) {
						//$this->_duplicar_agendamentos_vistoria($VistoriaBackup->id);
						//$this->_duplicar_vistorias_processo($idProcessoBackup, $VistoriaBackup->id);
						//$this->_duplicar_coberturas_vistoria($VistoriaBackup->id);
						//$this->_duplicar_empresas_vistoria($VistoriaBackup->id);
						//$this->_duplicar_funcionarios_vistoria($VistoriaBackup->id);
						$this->_duplicar_itenssegurados_vistoria($VistoriaBackup->id);
						$this->_duplicar_laudospreliminares_vistoria($idProcessoBackup, $VistoriaBackup->id);
						$this->_duplicar_laudosfinais_vistoria($idProcessoBackup, $VistoriaBackup->id);
					}
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as vistorias do processo
	 * 
	 * @param integer $idProcesso
	 * @param integer $idVistoria
	 */
	protected function _duplicar_vistorias_processo($idProcessoBackup, $idVistoriaBackup) {
		try {
			parent::duplicar(array('id_processo' => $idProcessoBackup, 'id_vistoria' => $idVistoriaBackup));
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os agendamentos da vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_agendamentos_vistoria($idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasAgendamentos();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Agendamento = $Row->duplicar($idVistoriaBackup);
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as coberturas do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_coberturas_vistoria($idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasCoberturas();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_vistoria' => $idVistoriaBackup, 'id_cobertura' => $Row->id_cobertura));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica as empresas do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_empresas_vistoria($idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasEmpresas();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_vistoria' => $idVistoriaBackup, 'id_empresa' => $Row->id_empresa));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os funcionarios do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_funcionarios_vistoria($idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasFuncionarios();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_vistoria' => $idVistoriaBackup, 'id_funcionario' => $Row->id_funcionario));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os itens segurados do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_itenssegurados_vistoria($idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasItensSegurados();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar(array('id_vistoria' => $idVistoriaBackup, 'id_item_segurado' => $Row->id_item_segurado));
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os laudos finais do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_laudosfinais_vistoria($idProcessoBackup, $idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasLaudosFinais();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar($idProcessoBackup, $idVistoriaBackup);
				}
			}
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}
	
	/**
	 * Duplica os laudos preliminares do vistoria
	 * 
	 * @param integer $idVistoria
	 */
	protected function _duplicar_laudospreliminares_vistoria($idProcessoBackup, $idVistoriaBackup) {
		try {
			$Model = new Endosso_Model_VistoriasLaudosPreliminares();
			$Rs = $Model->fetchAll("id_vistoria = {$this->id_vistoria}");
			
			if ($Rs->count()) {
				foreach ($Rs as $Row) {
					$Row->duplicar($idProcessoBackup, $idVistoriaBackup);
				}
			}
			
			return true;
		} catch (Exception $e) {
			die($e);
		}
	}

}