<?php

class Produto_ValidacoesvariedadeController extends Agro_Controller_Action {
	
	public function init() {
		$this->view->title = 'Nome da Validação: VALIDACAO_PE_DENSIDADE_VAR ';
		$this->id_validacao = $this->getRequest()->getParam('id_validacao');
	}

	public function getModel() {
		return new Produto_Model_ValidacoesVariedades();
	}
	
	public function getFormVariedades() {
		return new Produto_Form_ValidacoesVariedades();
	}
	
	public function getFormPortaEnxerto() {
		return new Produto_Form_Validacoesportaenxerto();
	}
	
	/*
	Monta a tela de configuração de validações.
	Action responsavel por montar a tela, a listagem e salvar quando o formulario for postado.
	*/
	public function indexAction() {
		$this->view->form = $this->getFormVariedades();
		$this->view->form->populate($this->getRequest()->getParams());
		$Model = $this->getModel();
		
		if ($this->getRequest()->isPost()) {
			try {
				$insert = array();
				$insert['id_validacao'] = $this->getRequest()->getParam('id_validacao');
				$insert['ds_nome_grupo_variedade'] = $this->getRequest()->getParam('ds_nome_grupo_variedade');
				if ($this->view->form->isValid($this->getRequest()->getPost())) {
					$this->save($insert);
					$this->view->showMessage(MSG_SUCCESS, 'success');
				} else {
					$Errors = $this->view->form->getMessages();
					$this->view->showMessage($this->getHtmlFormError($Errors), 'error');
				}

			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
		
		$where = $this->getFilter();
		if ($this->getRequest()->getParam('id_validacao')) {
			$where[] = array(
				'field' => 'id_validacao',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_validacao')
			);
		}
		if ($this->getRequest()->getParam("delete")) {
			if (!$Model->delete($this->getRequest()->getParam('delete'))) {
				$this->view->message(MSG_SUCCESS, 'success', 'afterDelete()');
			}
		}
		
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}

				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
			$where = '';
			if ($this->getRequest()->getParam('id_validacao')) {
				$where[] = array(
					'field' => 'id_validacao',
					'operator' => '=',
					'value' => $this->getRequest()->getParam('id_validacao')
				);
			}
			$Rs = $Model->fetchAllPaginator($where, $this->getPageCache(),'','');
			$this->view->paginator = $Rs;
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	public function relacionarvariedadesAction() {
		//tenta salvar antes de montar a tela para que as alterações ja reflitam na mesmo
		if ($this->getRequest()->isPost()) {
			$Model = new Produto_Model_Validacoesgrupovariedadesvariedade();
			
			try {
					$insert = array();
					$insert['id_grupo_variedade'] = $this->getRequest()->getParam('id_grupo_variedade');
					$id_variedades = $this->getRequest()->getParam('id_variedades');
					$Model->removeAll($insert['id_grupo_variedade']);
					foreach($id_variedades as $key => $id_variedade) {
						$Model->removeVariedade($id_variedade);
						$insert['id_variedade'] = $id_variedade;
						$Model->insert($insert);
					}
					
				
				$this->view->showMessage(MSG_SUCCESS, 'success');
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
		
		$this->view->form = new Produto_Form_ValidacoesRelacionarVariedades($this->getRequest()->getParam('id_grupo_variedade'));
		$this->view->form->populate($this->getRequest()->getParams());
	}
	
	public function deleteAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$Model = $this->getModel();
		
		if ($Model->delete($this->getRequest()->getParam('id'))) {
			$this->view->message(MSG_SUCCESS, 'success', 'afterDelete()');
		} else {
			$this->view->message(MSG_ERROR, 'error');
		}
	}
	
	public function deletaportaenxertosAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$Model = new Produto_Model_Validacoesportaenxerto();
		
		if ($Model->delete($this->getRequest()->getParam('delete'))) {
			$this->view->message(MSG_SUCCESS, 'success', 'afterDelete()');
		} else {
			$this->view->message(MSG_ERROR, 'error');
		}
	}
	
	public function deletedensidadeAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$Model = new Produto_Model_Validacoesgrupodensidade();
		
		if ($Model->delete($this->getRequest()->getParam('delete'))) {
			$this->view->message(MSG_SUCCESS, 'success', 'afterDelete()');
		} else {
			$this->view->message(MSG_ERROR, 'error');
		}
	}
	
	public function save(array $post) {
		try {
			$Model = $this->getModel();
			
			$data = array();
			$data['ds_nome_grupo_variedade'] = $this->getRequest()->getParam('ds_nome_grupo_variedade');
			$data['id_validacao'] = $this->getRequest()->getParam('id_validacao');
			if ($this->getRequest()->getParam('id')) {
				$Model->update($data, "id = " . $this->getRequest()->getParam('id'));
			} else {
				$Model->insert($data);
			}
		} catch (Exception $e) {
			$this->view->showMessage(MSG_ERROR, 'error');
		}
	}
	
	public function buscavariedadesAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$id_culturas = implode(',', $this->getRequest()->getParam('id_culturas'));
		$Model = $this->getModel();
		$id = $this->getRequest()->getParam('id_grupo_variedade');
		$Variedades = $Model->getCheckBoxVariedadesCulturas($id_culturas, $id);
		$ret = array();
		$html = '<table style="width:350px"><tr>';
		$i = 1;
		foreach($Variedades as $key => $val) {
			if($i % 2 != 0) {
				$html .= "
				</tr><tr>
				";
			}
			$i++;
			$disabled = true;
			$extra = '';
			if($val['id_grupo_variedade'] != '') {
				$disabled = 'disabled';
				$extra = '(' . $val[ds_nome_grupo_variedade] . ')';
			}
			$html .= "<td><input name='id_variedades[]' value='{$val[id]}' id='id_variedades_{$val[id]}' class='class_id_variedades' $disabled type='checkbox'></td>
			<td valign='top'><label for='id_variedades_{$val[id]}'><b>{$val[ds_nome_variedade]}</b> $extra</label></td>";
		}
		$html .= "</tr></table><br><input type='button' id='liberarchecks' name='liberarchecks' value='Liberar registros Bloqueados'>";
		return $this->getResponse()->setBody($html);
	}
	
	public function portaenxertosAction() {
		//Tenta salvar primeiro para que os dados salvos também sejam exibidos na tela
		$Model = new Produto_Model_Validacoesportaenxerto();
		
		if ($this->getRequest()->isPost()) {
			try {
					$insert = array();
					$insert['id_validacao'] = $this->getRequest()->getParam('id_validacao');
					$insert['ds_nome_grupo_portaenxerto'] = $this->getRequest()->getParam('ds_nome_grupo_portaenxerto');
					if ($this->getRequest()->getParam('id')) {
						$Model->update($insert, "id = " . $this->getRequest()->getParam('id'));
					} else {
						$Model->insert($insert);
					}
				
				$this->view->showMessage(MSG_SUCCESS, 'success');
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
		$this->view->formPortaEnxerto = $this->getFormPortaEnxerto();
		$this->view->formPortaEnxerto->populate($this->getRequest()->getParams());
		
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}
				
				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
			$where = '';
			if ($this->getRequest()->getParam('id_validacao')) {
				$where[] = array(
					'field' => 'id_validacao',
					'operator' => '=',
					'value' => $this->getRequest()->getParam('id_validacao')
				);
			}
			$Rs = $Model->fetchAllPaginator($where, $this->getPageCache());
			$this->view->paginator = $Rs;
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	public function relacionarportaenxertoAction() {
		$this->view->form = new Produto_Form_ValidacoesRelacionarPortaEnxerto($this->getRequest()->getParam('id_grupo_portaenxerto'), $this->getRequest()->getParam('id_validacao'));
		$this->view->form->populate($this->getRequest()->getParams());
		
		if ($this->getRequest()->isPost()) {
			$Model = new Produto_Model_Validacoesgrupoportaenxerto();
			
			try {
					$insert = array();
					$insert['id_grupo_portaenxerto'] = $this->getRequest()->getParam('id_grupo_portaenxerto');
					
					$id_portaenxertos = $this->getRequest()->getParam('id_portaenxerto');
					
					$Model->removeAll($insert['id_grupo_portaenxerto']);
					
					foreach($id_portaenxertos as $key => $id_portaenxerto) {
						$insert['id_portaenxerto'] = $id_portaenxerto;
						$Model->insert($insert);
					}

				$this->view->showMessage(MSG_SUCCESS, 'success');
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
	}
	
	public function densidadeAction() {
		$Model = new Produto_Model_Validacoesgrupodensidade();
		if ($this->getRequest()->isPost()) {
			try {
				
				if ($this->view->form->isValid($this->getRequest()->getPost())) {
					$ret = $Model->save($this->getRequest()->getParams());
				} else {
					$Errors = $this->view->form->getMessages();
					$this->view->showMessage($this->getHtmlFormError($Errors), 'error');
				}

				$this->view->showMessage(MSG_SUCCESS, 'success');
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
		
		$this->view->form = new Produto_Form_Validacoesdensidade($this->getRequest()->getParam('id_grupo_portaenxerto'), $this->getRequest()->getParam('id_validacao'));
		
		if($this->getRequest()->getParam('id')) {
			$this->view->form->populate($Model->find($this->getRequest()->getParam('id'))->current()->toArray());
		} else {
			$this->view->form->populate($this->getRequest()->getParams());
		}
		
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}
				
				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
			
			$Rs = $Model->fetchAllPaginator('gd.id_validacao = ' . $this->id_validacao, $this->getPageCache());
			$this->view->paginator = $Rs;
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	public function valoresAction() {
		$Model = new Produto_Model_ValidacoesValores();
		if ($this->getRequest()->isPost()) {
			try {
				if ($this->view->form->isValid($this->getRequest()->getPost())) {
					$ret = $Model->save($this->getRequest()->getParams());
				} else {
					$Errors = $this->view->form->getMessages();
					$this->view->showMessage($this->getHtmlFormError($Errors), 'error');
				}

				$this->view->showMessage(MSG_SUCCESS, 'success');
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
		
		$this->view->form = new Produto_Form_ValidacoesValores($this->getRequest()->getParam('id_grupo_portaenxerto'), $this->getRequest()->getParam('id_validacao'));
		
		if($this->getRequest()->getParam('id')) {
			$this->view->form->populate($Model->find($this->getRequest()->getParam('id'))->current()->toArray());
		} else {
			$this->view->form->populate($this->getRequest()->getParams());
		}
		
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}
				
				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
			
			$Rs = $Model->fetchAllPaginator('gd.id_validacao = ' . $this->id_validacao, $this->getPageCache());
			$this->view->paginator = $Rs;
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	public function pesquisavaloresAction() {
		$this->view->form =  new Produto_Form_ValidacoesValores($this->getRequest()->getParam("id_validacao"));
		
		$params = $this->getRequest()->getParams();
		if (is_object($this->view->form)) {
			$this->view->form->populate($params);
		}
		$Model = new Produto_Model_ValidacoesValores();
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}
				
				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
			
			$Rs = $Model->fetchAllPaginator('gd.id_validacao = ' . $this->id_validacao, $this->getPageCache());
			$this->view->paginator = $Rs;
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	//busca a listagem da tela de valores
	public function getvaloresAction() {
		
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_ValidacoesValores();
		try {
			if ($this->getRequest()->getParam("order")) {
				
				$order = explode('#', $this->getRequest()->getParam("order"));
				$this->view->order = $order[0];
				if(count($order) > 1){
					$this->view->orderType = $order[1];
				}
				
				$Model->_order = trim($this->view->order .' '. $this->view->orderType);
			}
					$where = '';
		if ($this->getRequest()->isPost()) {
			$where[] = array(
					'field' => 'v.id_validacao',
					'operator' => '=',
					'value' => $this->id_validacao
				);
				
				if ($this->getRequest()->getParam('fl_ativo')) {
					$where[] = array(
						'field' => 'v.fl_ativo',
						'operator' => '=',
						'value' => $this->getRequest()->getParam('fl_ativo')
					);
				}

				if ($this->getRequest()->getParam('id_grupo_variedade')) {
					$where[] = array(
						'field' => 'v.id_grupo_variedade',
						'operator' => '=',
						'value' => $this->getRequest()->getParam('id_grupo_variedade')
					);
				}
				
				if ($this->getRequest()->getParam('id_grupo_portaenxerto')) {
					$where[] = array(
						'field' => 'v.id_grupo_portaenxerto',
						'operator' => '=',
						'value' => $this->getRequest()->getParam('id_grupo_portaenxerto')
					);
				}
				
				if ($this->getRequest()->getParam('id_grupo_densidade')) {
					$where[] = array(
						'field' => 'v.id_grupo_densidade',
						'operator' => '=',
						'value' => $this->getRequest()->getParam('id_grupo_densidade')
					);
				}

			}
			$this->view->paginator = $Model->fetchAllPaginator($where, $this->getPageCache());
			
			if ($this->_columnList) {
				
				$this->getResponse()->setBody(Agro_List_Table::getList($Rs, $this->_columnList, $this->getRequest()->getModuleName(), $this->getRequest()->getControllerName()));
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}
	
	public function adicionavaloresAction() {
		$id_validacao = $this->getRequest()->getParam('id_validacao');
		$this->view->form =  new Produto_Form_ValidacoesValores($id_validacao);
		
		$Model = new Produto_Model_ValidacoesValores();
		$id = $this->getRequest()->getParam('id');
		if ($id) {
			$params = $Model->find($id)->current()->toArray();
			
		} else {
			$params = $this->getRequest()->getParams();
		}
		$this->view->form->populate($params);
		if ($this->getRequest()->isPost()) {
			try {
				if ($this->view->form->isValid($this->getRequest()->getPost())) {
					$ret = $Model->save($this->getRequest()->getParams());
				} else {
					$Errors = $this->view->form->getMessages();
					$this->view->showMessage($this->getHtmlFormError($Errors), 'error');
				}
				
				if($ret) {
					$this->view->showMessage(MSG_SUCCESS, 'success');
				} else {
					$this->view->showMessage(MSG_ERROR, 'error');
				}
			} catch (Exception $e) {
				$this->view->showMessage(MSG_ERROR, 'error');
			}
		}
	}
	
	public function ativavaloresAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_ValidacoesValores();
		
		if ($this->getRequest()->getParam('id')) {
			if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
				$this->view->message(MSG_SUCCESS, 'success', $img);
			} else {
				$this->view->message(MSG_ERROR, 'error');
			}
		}
	}
	
	
	public function ativavariedadesAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_ValidacoesVariedades();
		
		if ($this->getRequest()->getParam('id')) {
			if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
				$this->view->message(MSG_SUCCESS, 'success', $img);
			} else {
				$this->view->message(MSG_ERROR, 'error');
			}
		}
	}
	
	
	public function ativaportaenxertoAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_Validacoesportaenxerto();
		
		if ($this->getRequest()->getParam('id')) {
			if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
				$this->view->message(MSG_SUCCESS, 'success', $img);
			} else {
				$this->view->message(MSG_ERROR, 'error');
			}
		}
	}
	
	public function ativadensidadeAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_Validacoesdensidade();
		
		if ($this->getRequest()->getParam('id')) {
			if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
				$this->view->message(MSG_SUCCESS, 'success', $img);
			} else {
				$this->view->message(MSG_ERROR, 'error');
			}
		}
	}
	
	public function deletavaloresAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = new Produto_Model_ValidacoesValores();
		
		if ($this->getRequest()->getParam('id')) {
			if ($Model->delete($this->getRequest()->getParam('id'))) {
				$this->view->message(MSG_SUCCESS, 'success', $img);
			} else {
				$this->view->message(MSG_ERROR, 'error');
			}
		}
	}
}
