<?php
class Produto_RelacionarpropriedademunicipioController extends Agro_Controller_Action {

	public function init() {
	    ini_set('memory_limit','1024M');
	    ini_set('max_input_vars','10000');

		if ($this->getRequest()->getParam('grupo')) {
			$NomeGrupo = new Produto_Model_Atributogrupos();
			$Grupo = $NomeGrupo->find($this->getRequest()->getParam('grupo'))->current();

			$this->view->grupo = $Grupo['ds_nome_grupo'];
			$this->view->title = "Gerência de Propriedades » Relacionar Municípios";
		}

        $aba = '#ui-tabs-1';

        if ($Grupo['ds_tipo'] === Produto_Model_Atributogrupos::TIPO_PROPRIEDADES) {
            $aba = '#ui-tabs-2';
        }

        if ($Grupo['ds_tipo'] === Produto_Model_Atributogrupos::TIPO_UNIDADES_SEGURADAS) {
            $aba = '#ui-tabs-3';
        }

		$this->view->back = '/produto/produto/form/id/'.$this->getRequest()->getParam('id') . $aba;
	}

	public function indexAction() {
		$session = new Zend_Session_Namespace('propriedademunicipio');

		if ($this->getRequest()->isPost()) {
			$this->save($this->getRequest()->getParams());
		}

		$modelEstados = new Sistema_Model_Estados();
		$Model = new Produto_Model_AtributoGrupoMunicipios();

		$this->view->municipios = $modelEstados->getMenuEstadoAbas();
		
		$Rs = $Model->fetchAll("id_grupo_atributo_rn = {$this->getRequest()->getParam('grupo')}")->toArray();
		$this->view->relacionados = array();

		$idsMunicipio = [];

		if (is_array($Rs)) {
			foreach ($Rs as $relacionado) {
				$this->view->relacionados[$relacionado['id_municipio']] = true;
				$idsMunicipio[] = $relacionado['id_municipio'];
			}
			
			if (!empty($idsMunicipio)) {
				$estados = $modelEstados->getEstadosByIdsMunicipio($idsMunicipio);

				$map = [];
				foreach ($estados as $estado) {
					$map[$estado['ds_sigla']] = $estado['id'];
				}

				$this->view->estadosComMunicipiosRelacionados = $map;
			}
		}
	}

	public function save(array $post) {
		try {

			$Model = new Produto_Model_AtributoGrupoMunicipios();
			$Model->clearGrupo($post['grupo']);

			if (is_array($post['municipios'])) {
				foreach ($post['municipios'] as $municipio) {
					$data = array();
					$data['id_grupo_atributo_rn'] = $post['grupo'];
					$data['id_municipio'] = $municipio;

					$Model->save($data);
					$this->view->showMessage(MSG_SUCCESS, 'success');
				}
			}
		} catch (Exception $e) {
			$this->view->showMessage(MSG_ERROR, 'error');
		}
	}

	public function importamunicipiosAction() {
		$this->getHelper('layout')->disableLayout();
		$this->getHelper('ViewRenderer')->setNoRender();
		$result = array();
		$Adapter = new Zend_File_Transfer_Adapter_Http();
		$Adapter->setDestination(APPLICATION_PATH.'/upload_files/temp/');
		$file = $Adapter->getFileInfo();

		if(!$Adapter->receive($file['municipios_csv']['name'])) {
			$result['status'] = 'Erro ao importar municípios.';
		} else {
			$extensao = explode('.',$file['municipios_csv']['name']);
			if($extensao['1'] == 'csv'){
				$arquivo = fopen(APPLICATION_PATH.'/upload_files/temp/' . $file['municipios_csv']['name'], 'r');
				while(($dados = fgetcsv($arquivo, 0, ';')) != false){
					array_push($result, $dados[0]);
				}
				array_shift($result);
				$post['grupo'] = $this->getRequest()->getParam('grupo');
				$post['municipios'] = $result;
				$this->save($post);
				fclose($arquivo);
				$message['status'] = "Importação efetuada com sucesso!";
			} else {
				$message['status'] = "Somente são aceitos arquivos .csv!";
			}
		}

		$this->getResponse()->setBody(Zend_Json::encode($message));
	}

}
