<?php

class Sistema_Model_AssessoriasEnderecos extends Agro_Db_Table_Abstract {
	protected $_name = 'assessorias_enderecos';
	protected $_schema = 'sistema';
	protected $_primary = 'id';

	public function save(array $data) {
		$Row = $this->getRow($data['id']);

		$Principal = $this->fetchRow("fl_principal = true and id_assessoria = {$data['assessoria']}");
		if($Principal && $data['fl_principal'] && ($Principal->id != $data['id'])) {
			$data['fl_principal'] = false;
		}

		$Row->id_assessoria = $data['assessoria'];
		$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;

		return $Row->save();
	}

	public function getEnderecosFromAssessoria($id) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('ae' => 'sistema.assessorias_enderecos'));
		$select->join(array('m' => 'sistema.municipios'), 'ae.id_municipio = m.id', 'ds_nome_municipio');
		$select->join(array('e' => 'sistema.estados'), 'm.id_estado = e.id', 'ds_nome_estado');
		$select->where('ae.id_assessoria = ?', $id);
		return $this->fetchAll($select);
	}

	public function getData($where) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('ae' => 'sistema.assessorias_enderecos'), '*');
		$select->join(array('m' => 'sistema.municipios'), 'ae.id_municipio = m.id', 'ds_nome_municipio');
		$select->join(array('e' => 'sistema.estados'), 'm.id_estado = e.id', 'ds_nome_estado');
		$select->order('ae.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;
	}
}