<?

class Sinistro_Model_AvisosEncerramento extends Agro_Db_Table_Abstract {
	protected $_rowClass = 'Sinistro_Model_Row_AvisoEncerramento';
	protected $_schema = 'sinistro';
	protected $_name = 'avisos_encerramento';
	protected $_view = 'v_processos';
	protected $_primary = 'id';
	public $_order = 'id_proposta';

	public function getData($where) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array("pr"=>"sinistro.processos"));
		$Select->joinInner(array("p"=>"seguro.propostas"), "p.id = pr.id_proposta", array("seguro.id_proposta_mae(p.id) AS id_proposta_mae"));
		$Select->joinInner(array("pe"=>"seguro.propostas_endosso"), "pe.id_proposta = pr.id_proposta 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 as id_corretor"));
		$Select->where("p.id_status=".Agro_Util::status("APOLICE_EMITIDA", "PR"));
		$Select->where("pr.id_status<>".Agro_Util::getIdStatus("CANCELADO"));

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

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

		return $Select;
	}

	public function getItensSeguradosAvisosEncerramento($idProcesso, $idProposta){
		$data = array();
		if ($idProcesso && $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
					inner join sinistro.processos p on
						p.id_proposta = it.id_proposta
				where
					p.id = $idProcesso and
					it.id not in (
							select
								aeis.id_item_segurado
							from
								sinistro.avisos_encerramento ae
							inner join sinistro.avisos_encerramento_itens_segurados aeis on
								aeis.id_aviso_encerramento = ae.id
								and ae.fl_del = false
							where
								ae.id_proposta = $idProposta
					)
					and p.id_status != 168 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 existeAvisoParaProposta($idProposta){
		$Rs = $this->fetchRow("id_proposta = $idProposta");

		return ($Rs ? 1 : 0);
	}

	public function getDataViewAvisoEncerramento($idAvisoEncerramento) {

	    $data = array();

	    $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('ae'=>$this->_schema.'.'.$this->_name), array('ae.id',"to_char(ae.dt_encerramento_colheita, 'DD/MM/YYYY') as dt_encerramento_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 = ?", $idAvisoEncerramento);

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

        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('aeis'=>'sinistro.avisos_encerramento_itens_segurados'), "id");
        $select->join(array('it'=>'seguro.itens_segurados'), 'it.id = aeis.id_item_segurado', array("it.id as id_item_segurado", '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_encerramento = ?", $idAvisoEncerramento);
        $select->order("it.nr_item_segurado");

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

        return $data;
	}

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

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

	public function getDataEncerramentoItensSegurados($idProposta){
        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('ae'=>'sinistro.avisos_encerramento'), 'dt_encerramento_colheita');
        $select->join(array('aeit'=>'sinistro.avisos_encerramento_itens_segurados'), 'ae.id = aeit.id_aviso_encerramento');
        $select->where("ae.id_proposta = ?", $idProposta);

        return $this->fetchRow($select);
	}

	public function existemQuadrasParaEncerrar($id_proposta){
		$ModelItensSegurados = new Seguro_Model_ItensSegurados();
		$ModelAvisoEncerramentoIS = new Sinistro_Model_AvisosEncerramentoItensSegurados();

		$count = 0;

		$ItensSegurados = $ModelItensSegurados->fetchAll("id_proposta = $id_proposta");

		foreach ($ItensSegurados as $item){
			if ($ModelAvisoEncerramentoIS->fetchAll("id_item_segurado=$item->id")->count() <= 0){
				$count++;
			}
		}
		return ($count > 0 ? true : false);
	}
}
