<?php

class Produto_ValidacoesdensidadeController extends Agro_Controller_Action {

	public function init() {
		$this->view->title = "Produto » Cadastro » Validações » Configurar » $Validacao->ds_nome_validacao";
		$this->id_validacao = $this->getRequest()->getParam('id_validacao');
		$this->view->back = "/produto/validacoesdensidade/index/id_validacao/".$this->id_validacao;
	}

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

	public function getPortaEnxertoModel() {
		return new Produto_Model_Validacoesportaenxerto();
	}

	public function getFormVariedades() {
		return new Produto_Form_ValidacoesVariedades();
	}

	public function getDensidadeModel() {
		return new Produto_Model_Validacoesgrupodensidade();	
	}

	public function getValoresModel() {
		return new Produto_Model_ValidacoesValores();
	}
	
	public function indexAction() {
		$this->view->form = $this->getFormVariedades();
		$this->view->form->populate(array("id_validacao" => $this->getRequest()->getParam('id_validacao')));
		$Model = $this->getModel();
	}

	public function listavariedadesAction(){
		$Model = $this->getModel();
		$Model->_order = array('ds_nome_grupo_variedade');
		$this->isAjax(true);
		$id = $this->getRequest()->getParam('id_validacao');
		$this->view->paginator = $Model->fetchAllPaginator( 'id_validacao = '.$id, $this->getPageCache());
	}

    public function loadvariedadesAction() {
        $Model = $this->getModel();
        $this->isAjax();

        $Row = $Model->find($this->getRequest()->getParam('id'))->current();
        $this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));
    }

    public function loadAction() {
        $Model = $this->getModel();
        $this->isAjax();

        $Row = $Model->find($this->getRequest()->getParam('id'))->current();
        $this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));
    }

    public function getvariedadesAction(){
        $this->isAjax();
        $Model = $this->getModel();

        $this->getResponse()->setBody(Zend_Json::encode($Model->getVariedade($this->getRequest()->getParam('id_validacao'))));
    }

    public function savegrupovariedadeAction(){
        $this->isAjax();
        try {
            $Model = $this->getModel();
            $Model->_order = array('ds_nome_grupo_variedade');

            $Model->save(array(
                'id_validacao' => $this->getRequest()->getParam('id_validacao'),
                'ds_nome_grupo_variedade' => trim($this->getRequest()->getParam('ds_nome_grupo_variedade')),
                'id' => $this->getRequest()->getParam('id')
            ));
            $this->_forward('listavariedades');

        } catch (Exception $e) {
            $this->getResponse()->setBody("Erro ao cadastrar grupo de Variedade!");
            return false;
        }

    }

    public function deletevariedadesAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
            
        $Model = $this->getModel();
        
        if ($Model->delete($this->getRequest()->getParam('id'))) {
            $this->getResponse()->setBody(MSG_SUCCESS);
        } else {
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function ativavariedadesAction() {
        $this->isAjax();
        $Model = $this->getModel();

        try{
            if ($this->getRequest()->getParam('id')) {
                if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
                    $this->getResponse()->setBody(MSG_SUCCESS);
                }
            }
        }catch (Exception $e){
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    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(array("id_validacao" => $this->getRequest()->getParam('id_validacao'),
                                          "id_grupo_variedade" => $this->getRequest()->getParam('id_grupo_variedade')));

        $this->view->back = "/produto/validacoesdensidade/index/id_validacao/{$this->getRequest()->getParam('id_validacao')}/#tabs-variedades";
        $this->view->title .=" » Relacionar Variedades";
    }

    public function buscavariedadesAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        $id_culturas = implode(',', $this->getRequest()->getParam('id_culturas'));
        $id = $this->getRequest()->getParam('id_grupo_variedade');
        $id_validacao = $this->getRequest()->getParam('id_validacao');
        $Model = $this->getModel();
        $Variedades = $Model->getCheckBoxVariedadesCulturas($id_culturas, $id, $id_validacao);
        $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 listaportaenxertosAction() {
        $Model = $this->getPortaEnxertoModel();
        $Model->_order = array('ds_nome_grupo_portaenxerto');
        $this->isAjax(true);

        $id = $this->getRequest()->getParam('id_validacao');
        $this->view->paginator = $Model->fetchAllPaginator("id_validacao = $id", $this->getPageCache());
	}

    public function savegrupoportaenxertoAction(){
        $this->isAjax();
        try {
            $Model = $this->getPortaEnxertoModel();
            $Model->_order = array('ds_nome_grupo_portaenxerto');

            $Model->save(array(
                'id_validacao' => $this->getRequest()->getParam('id_validacao'),
                'ds_nome_grupo_portaenxerto' => $this->getRequest()->getParam('ds_nome_grupo_portaenxerto'),
                'id' => $this->getRequest()->getParam('id')
            ));
            $this->_forward('listaportaenxertos');

        } catch (Exception $e) {
            $this->getResponse()->setBody("Erro ao cadastrar grupo de Porta Enxerto!");
            return false;
        }

    }

    public function loadportaenxertosAction() {
        $Model = $this->getPortaEnxertoModel();
        $this->isAjax();

        $Row = $Model->find($this->getRequest()->getParam('id'))->current();
        $this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));
    }

    public function deleteportaenxertosAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
            
        $Model = $this->getPortaEnxertoModel();
        
        if ($Model->delete($this->getRequest()->getParam('id'))) {
            $this->getResponse()->setBody(MSG_SUCCESS);
        } else {
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function ativaportaenxertosAction() {
        $this->isAjax();
        $Model = $this->getPortaEnxertoModel();

        try{
            if ($this->getRequest()->getParam('id')) {
                if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
                    $this->getResponse()->setBody(MSG_SUCCESS);
                }
            }
        }catch (Exception $e){
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function relacionarportaenxertoAction() {
        $this->view->form = new Produto_Form_ValidacoesRelacionarPortaEnxerto($this->getRequest()->getParam('id_grupo_portaenxerto'));
        $this->view->form->populate(array('id_validacao' => $this->getRequest()->getParam('id_validacao')));
        $this->view->id_grupo = $this->getRequest()->getParam('id_grupo_portaenxerto');
        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']);
                if(is_array($id_portaenxertos)) {
                    foreach($id_portaenxertos as $key => $id_portaenxerto) {
                        $Model->removePortaEnxerto($id_portaenxerto);
                        $insert['id_portaenxerto'] = $id_portaenxerto;
                        $Model->insert($insert);
                    }
                }

                $this->view->showMessage(MSG_SUCCESS, 'success');
                $this->view->form->reset();
                $this->view->form->populate(array("id_validacao" => $this->getRequest()->getParam('id_validacao')));
            } catch (Exception $e) {
                $this->view->showMessage(MSG_ERROR, 'error');
            }
        }

        $this->view->back = "/produto/validacoesdensidade/index/id_validacao/{$this->getRequest()->getParam('id_validacao')}#tabs-portaenxertos";
        $this->view->title .=" » Relacionar Porta Enxertos";
    }

    public function listadensidadesAction(){
        $Model = $this->getDensidadeModel();
        $Model->_order = array('ds_nome_grupo_densidade');
        $this->isAjax(true);
        $id = $this->getRequest()->getParam('id_validacao');
        $this->view->paginator = $Model->fetchAllPaginator( 'gd.id_validacao = '.$id, $this->getPageCache());
    }

    public function loaddensidadesAction() {
        $Model = $this->getDensidadeModel();
        $this->isAjax();

        $Row = $Model->find($this->getRequest()->getParam('id'))->current();
        $this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));
    }

    public function savegrupodensidadeAction(){
        $this->isAjax();
        try {
            $Model = $this->getDensidadeModel();
            $Model->_order = array('ds_nome_grupo_densidade');

            $Model->save(array(
                'id_validacao' => $this->getRequest()->getParam('id_validacao'),
                'ds_nome_grupo_densidade' => $this->getRequest()->getParam('ds_nome_grupo_densidade'),
                'vl_densidade_minima' => $this->getRequest()->getParam('vl_densidade_minima'),
                'vl_densidade_maxima' => $this->getRequest()->getParam('vl_densidade_maxima'),
                'id_grupo_portaenxerto' => $this->getRequest()->getParam('id_grupo_portaenxerto'),
                'id' => $this->getRequest()->getParam('id')
            ));
            $this->_forward('listadensidades');

        } catch (Exception $e) {
            $this->getResponse()->setBody("Erro ao cadastrar grupo de Densidade!");
            return false;
        }
	}

    public function deletedensidadesAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
            
        $Model = $this->getDensidadeModel();
        
        if ($Model->delete($this->getRequest()->getParam('id'))) {
            $this->getResponse()->setBody(MSG_SUCCESS);
        } else {
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function ativadensidadesAction() {
        $this->isAjax();
        $Model = $this->getDensidadeModel();

        try{
            if ($this->getRequest()->getParam('id')) {
                if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
                    $this->getResponse()->setBody(MSG_SUCCESS);
                }
            }
        }catch (Exception $e){
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function getgruposdensidadeAction(){
        $this->isAjax();
        $Model = new Produto_Model_Validacoesgrupodensidade();

        $this->getResponse()->setBody(Zend_Json::encode($Model->getGrupos($this->getRequest()->getParam('id_validacao'))));
    }

    public function getgruposportaenxertoAction(){
        $this->isAjax();
        $Model = new Produto_Model_Validacoesportaenxerto();

        $this->getResponse()->setBody(Zend_Json::encode($Model->getGrupos($this->getRequest()->getParam('id_validacao'))));
    }

    public function listavaloresAction(){
		$Model = $this->getValoresModel();
		$this->isAjax(true);

		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 = '';
		$where = ' v.id_validacao = '.$this->id_validacao;

		if ($this->getRequest()->isPost()) {
		
			if ($this->getRequest()->getParam('fl_ativo')) {
				$where .= ' AND v.fl_ativo = \''.$this->getRequest()->getParam('fl_ativo').'\'';
			}

			if ($this->getRequest()->getParam('id_grupo_variedade')) {
				$where .= ' AND v.id_grupo_variedade = '.$this->getRequest()->getParam('id_grupo_variedade');
			}

			if ($this->getRequest()->getParam('id_grupo_portaenxerto_valores')) {
				$where .= ' AND v.id_grupo_portaenxerto = '.$this->getRequest()->getParam('id_grupo_portaenxerto_valores');
			}

			if ($this->getRequest()->getParam('id_grupo_densidade')) {
				$where .= ' AND v.id_grupo_densidade = '.$this->getRequest()->getParam('id_grupo_densidade');
			}

		}

		$this->view->paginator = $Model->fetchAllPaginator($where, $this->getPageCache());
    }

    public function ativavaloresAction() {
        $this->isAjax();
        $Model = $this->getValoresModel();

        try{
            if ($this->getRequest()->getParam('id')) {
                if ($Model->setAtivo($this->getRequest()->getParam('id'))) {
                    $this->getResponse()->setBody(MSG_SUCCESS);
                }
            }
        }catch (Exception $e){
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }

    public function loadvaloresAction() {
        $Model = $this->getValoresModel();
        $this->isAjax();
        $Row = $Model->find($this->getRequest()->getParam('id'))->current();
        $this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));
    }

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

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

        try {
            $Model = $this->getValoresModel();
            $Model->_order = array('ds_nome_grupo_variedade');

            $Model->save(array(
                'id_validacao' => $this->getRequest()->getParam('id_validacao'),
				'id_grupo_variedade' => $this->getRequest()->getParam('id_grupo_variedade'),
				'id_grupo_portaenxerto' => $this->getRequest()->getParam('id_grupo_portaenxerto'),
                'id_grupo_densidade' => $this->getRequest()->getParam('id_grupo_densidade'),
				'nu_idade' => $this->getRequest()->getParam('nu_idade'),
                'vl_minimo' => $this->getRequest()->getParam('vl_minimo'),
                'vl_maximo' => $this->getRequest()->getParam('vl_maximo'),
                'id' => $this->getRequest()->getParam('id')
            ));
            $this->_forward('listavalores');

        } catch (Exception $e) {
            $this->getResponse()->setBody("Erro ao cadastrar Valores!");
            return false;
        }
    }

    public function deletevaloresAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
            
        $Model = $this->getValoresModel();
        
        if ($Model->delete($this->getRequest()->getParam('id'))) {
            $this->getResponse()->setBody(MSG_SUCCESS);
        } else {
            $this->getResponse()->setBody(MSG_ERROR);
        }
    }
}
