<?php

class Sinistro_Model_AvisosInicio extends Agro_Db_Table_Abstract {
	protected $_rowClass = 'Sinistro_Model_Row_AvisoInicio';
	protected $_schema = 'sinistro';
	protected $_name = 'avisos_inicio';
	protected $_view = 'v_avisos_inicio_colheita';
	protected $_primary = 'id';
	public $_order = 'pr.id_proposta';


	//Não sei se isto é utilizado em algum lugar, vamos aguardar possíveis reclamações
	// Inclusive, PELO AMOR DE DEUS! NÃO FAÇA COISAS DESTE TIPO!!!!!!!!!!!!!!!
	/*
	public function delete($idProposta) {
		$this->_db->query("delete from {$this->_schema}.{$this->_name} where id_proposta = $idProposta");
	}
	*/

	public function getData($where) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array("p"=>"seguro.propostas"), array("seguro.id_proposta_mae(p.id) AS id_proposta_mae", "p.id as id_proposta"));
		$Select->joinLeft(array("pr"=>"sinistro.processos"), 'pr.id_proposta = p.id', 'pr.id as id_processo');
		$Select->joinInner(array("pe"=>"seguro.propostas_endosso"), "pe.id_proposta = p.id AND pe.fl_proposta_vigente = true", false);
		$Select->joinInner(array("pp"=>"seguro.propostas_proponentes"), "pp.id_proposta = p.id", array("pp.ds_nome_proponente"));
		$Select->joinInner(array("pc"=>"seguro.propostas_corretores"), "pc.id_proposta = p.id", array("pc.id_usuario"));
		$Select->joinInner(array("pd"=>"produto.produtos"), "pd.id = p.id_produto", false);
		$Select->joinInner(array("pg"=>"produto.produtos_geral"), "pg.id = pd.id_produto_geral", false);
		$Select->joinInner(array("c"=>"produto.culturas"), "c.id = pg.id_cultura", false);


		$Select->where("p.id_status=".Agro_Util::status("APOLICE_EMITIDA", "PR"));

		if ($this->_order) {
			$Select->order($this->_order);
		}

		$this->getWhere($Select, $where);

		return $Select;
	}

	public function getItensSeguradosAvisosInicio($idProcesso, $idProposta){
		$data = array();
		if ($idProposta) {
			$select = "
				select
					p.id as id_processo,
					it.id_proposta,
					it.id,
					it.nr_item_segurado,
					it.ds_item_segurado,
					it.vl_area,
					it.vl_lmga,
					v.ds_nome_variedade
				from
						   seguro.itens_segurados it
					inner join produto.variedades v  on
						v.id = it.id_variedade
					left join sinistro.processos p on
						p.id_proposta = it.id_proposta
				where
					it.id_proposta = $idProposta and
					it.id not in (
							select
								aiis.id_item_segurado
							from
								sinistro.avisos_inicio ai
							inner join sinistro.avisos_inicio_itens_segurados aiis on
								aiis.id_aviso_inicio = ai.id
							where
								ai.id_proposta = $idProposta
					)
					and (p.id_status != 168 or p.id_status is null) and it.vl_lmga > 0

				group by
					p.id,
					it.id_proposta,
					it.id,
					it.nr_item_segurado,
					it.ds_item_segurado,
					it.vl_area,
					it.vl_lmga,
					v.ds_nome_variedade
				order by
					it.id
			";

			$data = $this->_db->fetchAll($select);
		}

		return $data;
	}

    public function getAvisosInicioByProposta($idProposta) {
        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array("ai" => $this->_schema.'.'.$this->_name),array('ai.id',"to_char(ai.dt_inicio_colheita, 'DD/MM/YYYY') as dt_inicio_colheita","to_char(ai.dt_criacao,'DD/MM/YYYY HH24:MI') as dt_envio",'ai.id_usuario_criacao'));
        $select->join(array('u'=>'sistema.usuarios'), 'u.id = ai.id_usuario_criacao', 'ds_nome_usuario as ds_nome_usuario_envio');
        $select->where('id_proposta = ?', $idProposta);

        return $this->fetchAll($select)->toArray();
    }

    public function getDataViewAvisoInicio($idAvisoInicio) {

        $data = array();

        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('ae'=>$this->_schema.'.'.$this->_name), array('ae.id',"to_char(ae.dt_inicio_colheita, 'DD/MM/YYYY') as dt_inicio_colheita","to_char(ae.dt_criacao,'DD/MM/YYYY HH24:MI') as dt_envio", 'id_proposta'));
        $select->join(array('p'=>'sinistro.processos'), 'p.id_proposta = ae.id_proposta', 'p.id as id_processo');
        $select->where("ae.id = ?", $idAvisoInicio);

        $data = $this->fetchRow($select)->toArray();

        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('aeis'=>'sinistro.avisos_inicio_itens_segurados'), null);
        $select->join(array('it'=>'seguro.itens_segurados'), 'it.id = aeis.id_item_segurado', array('nr_item_segurado', 'ds_item_segurado', 'vl_area'));
        $select->join(array('v'=>'produto.variedades'), 'v.id = it.id_variedade', 'ds_nome_variedade');
        $select->where("aeis.id_aviso_inicio = ?", $idAvisoInicio);
        $select->order("it.nr_item_segurado");

        $data['arItensSegurados'] = $this->fetchAll($select)->toArray();

        return $data;
    }

    public function getAvisosInicioByItem($idProposta, $idItemSegurado) {
        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('ai'=>'sinistro.avisos_inicio'), array("to_char(ai.dt_inicio_colheita, 'DD/MM/YYYY') as dt_inicio_colheita"));
        $select->join(array('aeis'=>'sinistro.avisos_inicio_itens_segurados'), 'ai.id = aeis.id_aviso_inicio', null);
        $select->where("aeis.id_item_segurado = ?", $idItemSegurado);
        $select->where("ai.id_proposta = ?", $idProposta);

        return $this->getAdapter()->fetchOne($select);
    }

    public function getEmailFuncionariosAviso($idProposta, $idAviso) {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(array('sai'=>'sinistro.avisos_inicio'), null);
        $select->join(array('sp'=>'sinistro.processos'), 'sai.id_proposta = sp.id_proposta', null);
        $select->join(array('lp'=>'sinistro.laudos_preliminares'), 'lp.id_processo = sp.id', null);
        $select->join(array('vlp'=>'sistema.vistorias_laudos_preliminares'), 'vlp.id_laudo_preliminar = lp.id', null);
        $select->join(array('vf'=>'sistema.vistorias_funcionarios'), 'vf.id_vistoria = vlp.id_vistoria', null);
        $select->join(array('f'=>'sistema.funcionarios'), 'f.id = vf.id_funcionario', 'ds_nome_funcionario, lower(ds_email) as ds_email');
        $select->where('sai.fl_novo = true');
        $select->where('sai.id_proposta = ?', $idProposta);
        $select->where('sai.id = ?', $idAviso);

        return $this->fetchAll($select)->toArray();
    }
}
