<?php

class Sistema_Model_CorretoresEnderecos extends Agro_Db_Table_Abstract {
	protected $_name = 'corretores_enderecos';
	protected $_schema = 'sistema';
	protected $_primary = 'id';
	
	public function save(array $data) {
		$Row = $this->getRow($data['id']);

		// Caso ja exista um endereco principal altera o novo para falso
		$Principal = $this->fetchRow("fl_principal = true and id_corretor = {$data['corretor']}");
		if ($Principal && $data['fl_principal'] && ($Principal->id != $data['id'])) {
			$data['fl_principal'] = false;
		}

		$Row->id_corretor = $data['corretor'];
		$Row->ds_endereco_rua = $data['ds_endereco_rua'];
		$Row->ds_endereco_nro = $data['ds_endereco_nro'];
		$Row->ds_endereco_bairro = $data['ds_endereco_bairro'];
		$Row->ds_endereco_cep = $data['ds_endereco_cep'];
		$Row->ds_endereco_complemento = $data['ds_endereco_complemento'];
		$Row->id_municipio = $data['id_municipio'];
		$Row->fl_principal = ($data['fl_principal'] ? 1 : 0);

		if (!empty($data['id_usuario_criacao'])) {
            $Row->id_usuario_criacao = $data['id_usuario_criacao'];
        }

		return $Row->save();
	}
	
	public function getEnderecosFromCorretor($id) {
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('ce' => 'sistema.corretores_enderecos'));
		$select->join(array('m' => 'sistema.municipios'), 'ce.id_municipio = m.id', 'ds_nome_municipio');
		$select->join(array('e' => 'sistema.estados'), 'm.id_estado = e.id', 'id as id_estado, ds_nome_estado, ds_sigla');
		$select->where('ce.id_corretor = ?', $id);

		return $this->fetchAll($select);
	}
	
	public function getData($where) {
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('ce' => 'sistema.corretores_enderecos'), '*');
		$select->join(array('m' => 'sistema.municipios'), 'ce.id_municipio = m.id', 'ds_nome_municipio');
		$select->join(array('e' => 'sistema.estados'), 'm.id_estado = e.id', 'ds_nome_estado');
		$select->order('ce.ds_endereco_cep');
		
		if (is_array($where)) {
			foreach ($where as $clause) {
				$field = $clause['field'];
				$operator = $clause['operator'];
				$value = $clause['value'];
				
				$select->where("$field $operator ?", $value);
			}
		} elseif ($where != '') {
			$select->where($where);
		}
		
		return $select;
	}
}