<?php

class Endosso_Model_Row_Proposta extends Agro_Db_Table_Row_Proposta {

	public function coberturas_atualizadas() {
		if ($this->id_endosso) {
			return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select fl_coberturas_atualizadas from seguro.propostas_endosso where id_endosso = {$this->id_endosso}");
		} else {
			return false;
		}
	}

	public function produtos($safra=null, $first=true) {
		$produto = $this->produto();
		$return = array();

		$Rs = Agro_Db_Table_Abstract::getDefaultAdapter()->fetchPairs("select id, case when ds_nome_abreviado <> '' then ds_nome_abreviado else ds_nome_produto end as ds_nome_produto from produto.produtos where fl_ativo=true and id_safra = {$produto['id_safra']} order by ds_nome_abreviado");

		if ($first) $return = array(0 => '--- Selecione um produto ---', '');
		if (count($Rs)) {
			foreach ($Rs as $value => $text) {
				$return[$value] = $text;
			}
		}

		return $return;
	}

	public function atributos_rn($modulo, $parent=null, $pairs=true) {
		if ($pairs) {
			$Select = $this->select()->setIntegrityCheck(false)->distinct(true);
			$Select->from(array('g' => 'produto.produtos_grupos_atributos_rn'), false);
			$Select->columns(array('a.ds_chave_rn', 'p.ds_valor'));
			$Select->join(array('p' => 'produto.produtos_atributos_rn'), 'g.id = p.id_grupo_atributo_rn', false);
			$Select->join(array('a' => 'produto.atributos_rn'), 'a.id = p.id_atributo_rn', false);
			$Select->join(array('t' => 'produto.tipo_atributo'), 't.id = a.id_tipo_atributo', false);
			$Select->join(array('m' => 'produto.atributos_modulos'), 'm.id = a.id_atributo_modulo', false);
			$parent ? $Select->where('a.id_parent = ?', $parent) : $Select->where('a.id_parent = 0');
			$Select->where('m.ds_chave_atributo_modulo = ?', $modulo);
			$Select->where('g.id_produto = ?', $this->id_produto);
			$Select->where('fl_grupo_padrao = true');
			

			return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchPairs($Select);
		} else {
			return parent::atributos_rn($modulo, $parent);
		}


	}

	public function atributos_endossar() {
		$Select = $this->select()->setIntegrityCheck(false)->from('seguro.propostas_atributos_rn')->where('id_proposta = ?', $this->id);
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchAll($Select);
	}

	public function cultura() {
	}

	public function tipo_endosso_proposta() {
	    return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select id_endosso_opcao from seguro.propostas_endosso_opcoes where id_proposta = {$this->id}");
	}

	public function tipos_endosso() {
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchAll("select * from seguro.tipo_endosso where fl_ativo=true order by ds_tipo_endosso");
	}

	public function opcao_endosso($opcao) {
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchOne("select count(*) from seguro.propostas_endosso_opcoes where id_proposta = {$this->id} and id_endosso_opcao = {$opcao}");
	}

	/**
 	* Busca as observações vinculadas às propostas e endossos anteriores ao endosso vigente
 	* @author mpaulino
 	*
 	*/
	public function observacoes_endosso() {
		$Select = $this->select()->setIntegrityCheck(false)->distinct(true);
		$Select->from(array('p'  => 'seguro.propostas_observacoes'));
		$Select->join(array('pr' => 'seguro.propostas'), 'pr.id = p.id_proposta', false);
		$Select->join(array('pe' => 'seguro.propostas_endosso'), 'pe.id_endosso = pr.id_endosso', false);
		$Select->join(array('u'  => 'sistema.usuarios'), 'p.id_usuario_criacao = u.id', array('ds_nome_usuario'));
		$Select->where('pe.id_proposta = ?', $this->id);
		$Select->where('p.id_proposta <> ?', $this->id);
		$Select->where('p.fl_principal is false');
		$Select->order('p.id_proposta');
		return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchAll($Select);
	}

	public function unidades($count=true, $lmgaZerado = false) {
    	$Model = new Seguro_Model_ItensSegurados();

    	if ($count) {
    		return $Model->fetchAll("id_proposta = {$this->id}")->count();
    	} else {
    		return $Model->fetchItensProposta($this->id, $lmgaZerado);
    	}
    }
}