<?php

class Sistema_Model_VistoriasEmpresas extends Agro_Db_Table_Abstract {
	protected $_schema = 'sistema';
	protected $_name = 'vistorias_empresas';
	protected $_primary = array('id_vistoria','id_empresa');
	protected $_sequence = false;

	public function save(array $data) {
		$Row = $this->find($data['id_vistoria'], $data['id_empresa'])->current();
		if (!$Row) {
			$Row = $this->createRow();
		}

		$Row->id_vistoria = $data["id_vistoria"];
		$Row->id_empresa = $data["id_empresa"];

		return $Row->save();
	}

	public function getEmpresaByVistoria($idVistoria) {

		$result = '';
		if ($idVistoria) {
			$select = $this->select();
			$select->setIntegrityCheck(false);

			$select->from(array('ve' => 'sistema.vistorias_empresas'), 'id_empresa');
			$select->where("ve.id_vistoria = ?", $idVistoria);

			$rs = $this->_db->fetchRow($select);
			if ($rs) {
				$result = $rs['id_empresa'];
			}
		}

		return $result;
	}

	public function getIdEmpresaByLaudoFinal($idLaudoFinal) {

		$select = $this->select();
		$select->setIntegrityCheck(false);

		$select->from(array('vlf' => 'sistema.vistorias_laudos_finais'), null);
		$select->join(array('ve' => 'sistema.vistorias_empresas'), 've.id_vistoria = vlf.id_vistoria','id_empresa');
		$select->where("vlf.id_laudo_final = ?", $idLaudoFinal);

		return $this->_db->fetchOne($select);
	}

    public function getIdEmpresaByLaudoPreliminar($idLaudoPreliminar) {

        $select = $this->select();
        $select->setIntegrityCheck(false);

        $select->from(array('vlp' => 'sistema.vistorias_laudos_preliminares'), null);
        $select->join(array('ve' => 'sistema.vistorias_empresas'), 've.id_vistoria = vlp.id_vistoria','id_empresa');
        $select->where("vlp.id_laudo_preliminar = ?", $idLaudoPreliminar);

        return $this->_db->fetchOne($select);
    }

	public function checkUsuarioVistoriaMesmaEmpresa($id_usuario, $id_vistoria){
		$ModelFuncionario = new Sistema_Model_Funcionarios();
		$Funcitonario = $ModelFuncionario->fetchRow('id_usuario = '.$id_usuario);

		$id_empresa_vistoria = $this->getEmpresaByVistoria($id_vistoria);

		return ($Funcitonario->id_empresa == $id_empresa_vistoria ? true : false);
	}

	public function delete($idVistoria, $idEmpresa = null) {
		$sql = "delete from {$this->_schema}.{$this->_name} where id_vistoria = $idVistoria";
		if ($idEmpresa) {
			$sql .= " and id_empresa = $idEmpresa";
		}

		$this->_db->query($sql);
	}

	public function getNomeVistoriaEmpresas($idEmpresa = null) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('e' => 'sistema.empresas'), array('e.id','e.ds_nome_fantasia'));
		$select->join(array('c' => 'sistema.categorias'), 'e.id_categoria = c.id', null);
		$select->where('c.ds_chave = ?', 'VISTORIADORA');

		if ($idEmpresa) {
			$select->where('e.id = ?', $idEmpresa);
		}

		$select->where('e.fl_ativo = true');
		$select->where('e.fl_del = false');
		$select->group(array('e.id', 'e.ds_nome_fantasia'));
		$select->order('e.ds_nome_fantasia');

		return $this->fetchAll($select);
	}
	
	public function getVistoriaPreliminarPendente($idProcesso) {
	
		$select = $this->select();
		$select->setIntegrityCheck(false);
	
		$select->from(array('vlp' => 'sistema.vistorias_laudos_preliminares'), null);
		$select->join(array('ve'  => 'sistema.vistorias_empresas'), 've.id_vistoria = vlp.id_vistoria',array('ve.id_empresa', 've.id_vistoria'));
		$select->join(array('lp'  => 'sinistro.laudos_preliminares'), 'lp.id = vlp.id_laudo_preliminar', 'lp.id as id_laudo_preliminar');
		$select->join(array('st'  => 'sistema.status'), 'lp.id_status = st.id', null);
		$select->where("lp.id_processo = ?", $idProcesso);
		$select->where("st.ds_chave in ('PENDENTE_LAUDO_PRELIMINAR')");
	
		return $this->fetchAll($select);
	}	
	
	public function getVistoriaFinalPendente($idProcesso) {
	
		$select = $this->select();
		$select->setIntegrityCheck(false);
	
		$select->from(array('vlp' => 'sistema.vistorias_laudos_finais'), null);
		$select->join(array('ve'  => 'sistema.vistorias_empresas'), 've.id_vistoria = vlp.id_vistoria',array('ve.id_empresa', 've.id_vistoria'));
		$select->join(array('lp'  => 'sinistro.laudos_finais'), 'lp.id = vlp.id_laudo_final', 'lp.id as id_laudo_final');
		$select->join(array('st'  => 'sistema.status'), 'lp.id_status = st.id', null);
		$select->where("lp.id_processo = ?", $idProcesso);
		$select->where("st.ds_chave in ('PENDENTE_LAUDO_FINAL')");
	
		return $this->fetchAll($select);
	}	
	
	public function getVistoriaAgendamentoPendente($idProcesso) {
	
		$select = $this->select();
		$select->setIntegrityCheck(false);
	
		$select->from(array('va' => 'sistema.vistorias_agendamentos'), null);
		$select->join(array('ve'  => 'sistema.vistorias_empresas'), 've.id_vistoria = va.id_vistoria', array('ve.id_empresa', 've.id_vistoria'));
		$select->join(array('vp'  => 'sinistro.vistorias_processos'), 'vp.id_vistoria = va.id_vistoria', array('ve.id_empresa', 've.id_vistoria'));
		$select->join(array('ag'  => 'sistema.agendamentos'), 'ag.id = va.id_agendamento', 'ag.id as id_agendamento');
		$select->join(array('st'  => 'sistema.status'), 'ag.id_status = st.id', null);
		$select->where("vp.id_processo = ?", $idProcesso);
		$select->where("st.ds_chave in ('AGUARDANDO_DATA')");
	
		return $this->fetchAll($select);
	}	
}
