<?php

class Produto_ValidacaolimiteslmgaController extends Agro_Controller_Action {
	public $_paginator = false;

	public function init() {
		$this->view->title = 'Produto » Validação » Limite de LMGA por Variedade';
	}

	public function getModel() {
		return new Produto_Model_ValidacaoLimitesLmga();
	}

	public function getFilter() {
		$where = array();

		$where[] = array(
			'field' => 'id_produto',
			'operator' => '=',
			'value' => $this->getRequest()->getParam('produto')
		);

		return $where;
	}

	public function listAction() {
		$this->view->id_produto = $this->getRequest()->getParam('produto');
		parent::listAction();
	}

	public function saveAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		//$result = array('execute' => "$.listGrupos($('.formGrupo #ds_tipo').val());");

		$Model = $this->getModel();
		$result['status'] = $Model->save($this->getRequest()->getParams());

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

	public function getformAction() {
		$this->getHelper('layout')->disableLayout();

		$this->view->grupo = $this->getRequest()->getParam('grupo');

		switch ($this->getRequest()->getParam('tipo')) {
			case 'q':
				$this->view->tipo = 'QUESTIONARIO';
				break;
			case 'p':
				$this->view->tipo = 'PROPRIEDADE';
				break;
			case 'u':
				$this->view->tipo = 'UNIDADE_SEGURADA';
				break;
		}
	}

	public function saveatributosAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$valores = $this->getRequest()->getParam('value_atributo');
		$tipo = $this->getRequest()->getParam('tipo');

		if (is_array($this->getRequest()->getParam('atributos'))) {
			$Model = new Produto_Model_ProdutosAtributos();

			try {
				$Model->getDefaultAdapter()->beginTransaction();
				$Model->deleteProdutoAtributo($this->getRequest()->getParam('grupo'));

				foreach ($this->getRequest()->getParam('atributos') as $atributo) {
					$data = array(
						'id_grupo_atributo_rn' => $this->getRequest()->getParam('grupo'),
						'id_atributo_rn' => $atributo,
						'ds_valor' => $valores[$atributo]
					);

					$Model->save($data);

					if ($tipo == 'QUESTIONARIO') {
						$children = $Model->getChildren($atributo);

						//salva os filhos se existirem e os pais estiverem marcados
						foreach($children as $child) {
							$data = array(
								'id_grupo_atributo_rn' => $this->getRequest()->getParam('grupo'),
								'id_atributo_rn' => $child['id'],
								'ds_valor' => $valores[$atributo]
							);
							$Model->save($data);
						}
					}
				}

				$Model->getDefaultAdapter()->commit();
			} catch (Exception $e) {
				$Model->getDefaultAdapter()->rollBack();
				die($e);
			}
		}
	}

	public function relacionausuarioAction() {
		$this->isAjax(true);

		$Grupos = new Produto_Model_ValidacaoLimitesLmgaUsuarios();

		$this->view->relacionados = $Grupos->getUsuariosRelacionados($this->getRequest()->getParam('grupo'));
		$this->view->grupo = $this->getRequest()->getParam('grupo');
	}

	public function saveusuariosAction() {
		$this->isAjax();

		try {
			$Usuarios = new Produto_Model_ValidacaoLimitesLmgaUsuarios();
			$Usuarios->clearGrupo($this->getRequest()->getParam('grupo'));

			if (is_array($this->getRequest()->getParam('id_usuario'))) {
				foreach ($this->getRequest()->getParam('id_usuario') as $usuario) {
					$data = array(
							'id_validacao_limites_lmga' => $this->getRequest()->getParam('grupo'),
							'id_usuario' => $usuario
					);

					$Usuarios->save($data);
				}
			}
			$this->getResponse()->setBody('Usuários relacionados com sucesso.');

		} catch (Exception $e) {

			$this->getResponse()->setBody($e->getMessage());
		}
	}

}
