<?php

class Comercializacao_Model_ComercializacoesMunicipios extends Agro_Db_Table_Abstract {
	protected $_schema = 'comercializacao';
	protected $_name = 'comercializacoes_municipios';
	protected $_primary = array('id_comercializacao', 'id_municipio');

	public function save($values) {
		$Row = $this->find($values['id_comercializacao'], $values['id_municipio'])->current();
		if (!$Row) $Row = $this->createRow();

		$Row->id_comercializacao = $values['id_comercializacao'];
		$Row->id_municipio = $values['id_municipio'];

		return $Row->save();
	}

	public function getMuniciposPorEstado($SiglaUf, $idComercializacao=null, $idProduto=null){
		$Estado = new Sistema_Model_Estados();

		$id_estado = $Estado->getId($SiglaUf);

		if(!is_null($idProduto) && !is_null($idComercializacao)){
			$select ="
				select
				   m.id,
				   m.ds_nome_municipio,
				   tmp_com.ds_nome_comercializacao as ds_comerc_munic
				from
				   sistema.municipios m left join
				   (
				      select
				         c.ds_nome_comercializacao,
				         cm.id_municipio
				      from
				         comercializacao.comercializacoes c left join
				         comercializacao.comercializacoes_municipios cm on cm.id_comercializacao = c.id
				      where
				         c.id != $idComercializacao and
				         c.id_produto = $idProduto and
				         c.tp_comercializacao='M' and
				         cm.id_municipio is not null and
				         c.id not in (select id_comercializacao from comercializacao.comercializacoes_usuarios) and
				         c.fl_ativo = true
				   ) as tmp_com on m.id = tmp_com.id_municipio
				where
				   m.fl_ativo = true and
				   m.id_estado = $id_estado
				order by
				   m.ds_nome_municipio
			";
		} else{
			$select = $this->_db->select();
			$select->from(array('m'=>'sistema.municipios'),array('id','ds_nome_municipio'));
			$select->where('m.fl_ativo = true');
			$select->where("m.id_estado = '$id_estado'");
			$select->order("m.ds_nome_municipio");
		}

		$municipios = $this->_db->fetchAll($select);

		$checkMunicipios = array();

		if(is_array($municipios)){
			foreach($municipios as $municipio){
				$checkMunicipios[] = array('id' => $municipio['id'],
										   'ds_nome_municipio' => $municipio['ds_nome_municipio'],
										   'ds_comerc_munic' => $municipio['ds_comerc_munic']
				);

			}
		}


		return $checkMunicipios;

	}




	/**
	 * Obtém lista de municípios para relacionamento
	 * com as comercializações
	 *
	 * @param int $idComercializacao
	 * @param int $idProduto
	 * @return array
	 */
	public function getCheckMunicipios($idComercializacao=null,$idProduto=null) {
		// Busca estados para formar as abas na tela de relacionamento
		$Estado = new Sistema_Model_Estados();
		$checkMunicipios = $Estado->getMenuEstadoAbas();

		/* Se $idProduto e $idComercializacao forem null, serão buscados todos os municípios,
		independente de já terem sido relacionados com outras comercializações ou não.*/
		if(!is_null($idProduto) && !is_null($idComercializacao)){
			$select ="
				select
				   m.id,
				   m.ds_nome_municipio,
				   e.ds_sigla as uf,
				   tmp_com.ds_nome_comercializacao as ds_comerc_munic
				from
				   sistema.municipios m inner join
				   sistema.estados e on m.id_estado = e.id left join
				   (
				      select
				         c.ds_nome_comercializacao,
				         cm.id_municipio
				      from
				         comercializacao.comercializacoes c left join
				         comercializacao.comercializacoes_municipios cm on cm.id_comercializacao = c.id
				      where
				         c.id != $idComercializacao and
				         c.id_produto = $idProduto and
				         c.tp_comercializacao='M' and
				         cm.id_municipio is not null and
				         c.id not in (select id_comercializacao from comercializacao.comercializacoes_usuarios) and
				         c.fl_ativo = true
				   ) as tmp_com on m.id = tmp_com.id_municipio
				where
				   m.fl_ativo = true
				order by
				   e.ds_sigla, m.ds_nome_municipio
			";
		} else{
			$select = $this->_db->select();
			$select->from(array('m'=>'sistema.municipios'),array('id','ds_nome_municipio'));
			$select->join(array('e'=>'sistema.estados'),'m.id_estado = e.id',array('uf'=>'e.ds_sigla'));
			$select->where('m.fl_ativo = true');
			$select->order('e.ds_sigla');
		}

		$municipios = $this->_db->fetchAll($select);

		//print_r($municipios);die;

		if(is_array($municipios)){
			$i=0;
			// Atribui os municípios do array $municipio à variavel de instância $this->municipios.
			foreach($municipios as $municipio){
				$checkMunicipios[$municipio['uf']][$i]['id'] 				  = $municipio['id'];
				$checkMunicipios[$municipio['uf']][$i]['ds_nome_municipio']   = $municipio['ds_nome_municipio'];
				if(!is_null($idProduto) && !is_null($idComercializacao)) {
					$checkMunicipios[$municipio['uf']][$i]['ds_comerc_munic'] = $municipio['ds_comerc_munic'];
				}
				$i++;
			}
		}


		return $checkMunicipios;
	}


}