<?php

class Produto_Model_Variedades extends Agro_Db_Table_Abstract {
	protected $variedades = array(
		'0' => array(),
		'1' => array(),
		'2' => array(),
		'3' => array(),
		'4' => array(),
		'5' => array(),
		'6' => array(),
		'7' => array(),
		'8' => array(),
		'9' => array(),
		'a' => array(),
		'b' => array(),
		'c' => array(),
		'd' => array(),
		'e' => array(),
		'f' => array(),
		'g' => array(),
		'h' => array(),
		'i' => array(),
		'j' => array(),
		'k' => array(),
		'l' => array(),
		'm' => array(),
		'n' => array(),
		'o' => array(),
		'p' => array(),
		'q' => array(),
		'r' => array(),
		's' => array(),
		't' => array(),
		'u' => array(),
		'v' => array(),
		'x' => array(),
		'z' => array()
	);

	protected $_schema = 'produto';
	protected $_name = 'variedades';
	protected $_primary = 'id';
	public $_order = 'ds_nome_variedade';
	public $idVariedadeGeral = false;
	public $_columnExcel = array(
		'id' => 'Id',
		'ds_nome_variedade' => 'Variedade',
		'cd_variedade_seguradora' => 'Cod. Seguradora'
	);

	public function init() {
		$Row = $this->fetchRow("upper(ds_nome_variedade) = 'GERAL'");
		$this->idVariedadeGeral = $Row->id;
	}

	public function getCheckVariedades() {
		$rs = $this->fetchAll('fl_ativo = true', $this->_order)->toArray();

		if (is_array($rs)) {
			foreach ($rs as $variedade) {
				$palavra = $variedade['ds_nome_variedade'];
				$palavra = str_replace('(N)', '', $palavra);
				$palavra = str_replace('Á', 'A', $palavra);

				$letra = strtolower(substr(trim($palavra), -(strlen(trim($palavra))), 1));

				if ($letra == 'Á') {

				}

				$this->variedades[$letra][$variedade['id']] = $variedade['ds_nome_variedade'];
			}
		}

		return $this->variedades;
	}


	public function getComboByProposta($idProposta, $first=true, $field='ds_nome_variedade'){

		$Select = $this->select()->setIntegrityCheck(false)->distinct();
		$Select->from(array('v'=>'produto.variedades'), array('id','ds_nome_variedade'));
		$Select->join(array('pv'=>'produto.produtos_variedades'), 'pv.id_variedade = v.id ', false);
		$Select->join(array('p'=>'seguro.propostas'), 'p.id_produto = pv.id_produto ', false);

		$Select->where('p.id = ?', $idProposta);
		$Select->order('v.ds_nome_variedade');
		$Rs = $this->fetchAll($Select)->toArray();

		return $Rs;

	}

	/*
	 * Recupera variedades para o App Android
	*/
	public function getVariedadesMobile() {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('v'=>'produto.variedades'), array('id','ds_nome_variedade'));
		$Select->join(array('pv'=>'produto.produtos_variedades'), 'pv.id_variedade = v.id ', false);
		$Select->join(array('pc'=>'produto.produtos_coberturas'), 'pc.id_produto = pv.id_produto', false);
		$Select->join(array('pp'=>'produto.produtos'), 'pp.id = pc.id_produto', false);
		$Select->where('pc.fl_vistoria_previa = ?', 't');
		$Select->where('pp.id_safra >= 16');
		$Select->group(array('v.id', 'v.ds_nome_variedade'));
		$Select->order('v.ds_nome_variedade');

		$Rs = $this->fetchAll($Select)->toArray();

		return $Rs;
	}

    public function getSelectVariedades($idProposta, $iterator, $value, $tabindex, $disabled='', $name='', $class='') {
    	$Variedades = $this->getComboByProposta($idProposta);

    	$outraVariedade = array(array("id" => 6971, "ds_nome_variedade" => "Não está na lista (Inserir nas OBS)"));
    	$Variedades = array_merge($outraVariedade,$Variedades);

    	if (!$name) {
    		$name = "id_variedade[]";
    		$id = "variedade";
    	} else {
    		$id = $name;
    		$onchange = "onchange=\"$.set_hidden_value(this)\"";
    	}

        $selectVar = '<select name="'.$name.'" id="variedade_'.$tabindex.'" tabindex='.$tabindex.' '.$disabled.' '.$onchange.' class="'.$class.'">';
        $selectVar .= '<option value=""></option>';

        foreach ($Variedades as $Variedade) {
        	if($Variedade['id'] == $value ){
        		$selected = 'selected';
        	}else{
        		$selected = '';
        	}

            $selectVar .= '<option value="'.$Variedade['id'].'" '.$selected.'>'.$Variedade['ds_nome_variedade'].'</option>';
        }
        $selectVar .= '</select>';

        return $selectVar;
    }


	public function getDadosXls() {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('c'=>'produto.variedades'));


		$Rs = $this->fetchAll($Select);
		if ($Rs->count()) {
			return $Rs->toArray();
		} else {
			return array();
		}
	}

	public function getCombo($idProduto) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('v' => 'produto.variedades'), array('id', 'ds_nome_variedade'));
		$select->join(array('pv' => 'produto.produtos_variedades'), 'pv.id_variedade = v.id', null);
		$select->where('pv.id_produto = ?', $idProduto);
		$select->order('v.ds_nome_variedade');

		$Rs = $this->fetchAll($select);

		$ret = array('');
		if ($Rs->count()) {
			foreach ($Rs as $Row) {
				$ret[$Row->id] = $Row->ds_nome_variedade;
			}
		}

		return $ret;
	}

    public function getVariedadeByDescricao(string $descricao): array
    {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from('produto.variedades');
        $select->where('ds_nome_variedade = ?', $descricao);

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