<?php

class Manual_ManualController extends Agro_Controller_Action {
    public $_columnList = array (
        'ds_nome' => 'Nome',
        'ds_descricao' => 'Descrição',
        'id_tipo' => 'Tipo',
        'ds_nome_arquivo' => 'Arquivo'
    );

    public function init() {
        $this->view->title = 'Manuais » Manuais';
    }

    public function getForm() {
        $Model = $this->getModel();
        if ($this->getRequest()->getParam('id')) {
            $this->view->dados = $Model->getManual($this->getRequest()->getParam('id'));
        }
        return new Manual_Form_Manual();
    }

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

    public function getFilter() {

        $where = array();

        if ($this->getRequest()->getParam('id')) {
            $where[] = array(
                'field' => 'id',
                'operator' => '=',
                'value' => $this->getRequest()->getParam('id')
            );
        }

        if ($this->getRequest()->getParam('ds_nome')) {
            $where[] = array(
                'field' => 'ds_nome',
                'operator' => 'ilike',
                'value' => '%'.$this->getRequest()->getParam('ds_nome').'%'
            );
        }

        if ($this->getRequest()->getParam('ds_descricao')) {
            $where[] = array(
                'field' => 'ds_descricao',
                'operator' => 'ilike',
                'value' => '%'.$this->getRequest()->getParam('ds_descricao').'%'
            );
        }

        if ($this->getRequest()->getParam('id_tipo')) {
            $where[] = array(
                'field' => 'id_tipo',
                'operator' => '=',
                'value' => $this->getRequest()->getParam('id_tipo')
            );
        }

        if ($this->getRequest()->getParam('fl_ativo')) {
            $where[] = array(
                'field' => 'm.fl_ativo',
                'operator' => '=',
                'value' => $this->getRequest()->getParam('fl_ativo')
            );
        }

        return $where;
    }

    public function listAction() {
        $this->getHelper('layout')->disableLayout();
        $where = $this->getFilter();
        $Model = $this->getModel();
        $recordsPerPage = ($this->recordsPerPage ? $this->recordsPerPage : RECORDS_PER_PAGE);
        $Rs = $Model->fetchAllPaginator($where, $this->getRequest()->getParam('page'), $recordsPerPage, $this->_paginator);
        $this->view->paginator = $Rs;
    }

    public function relacionarusuarioAction() {
        $this->getHelper('layout')->disableLayout();
        $Usuarios = new Manual_Model_ManualUsuarios();
        $this->view->id = $this->getRequest()->getParam('id');
        $this->view->relacionados = $Usuarios->getUsuariosRelacionados($this->getRequest()->getParam('id'));
    }

    public function relacionarempresaAction() {
        $this->getHelper('layout')->disableLayout();
        $Empresas = new Manual_Model_ManualUsuarios();
        $this->view->id = $this->getRequest()->getParam('id');
        $this->view->relacionados = $Empresas->getUsuariosByEmpresasRelacionadas($this->getRequest()->getParam('id'));
    }

    public function relacionarfuncionarioAction() {
        $this->getHelper('layout')->disableLayout();
        $Funcionarios = new Manual_Model_ManualUsuarios();
        $this->view->id = $this->getRequest()->getParam('id');
        $this->view->relacionados = $Funcionarios->getUsuariosRelacionados($this->getRequest()->getParam('id'));
    }

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

        try {
            $result = array("status"=>true, "message" => "Manual excluído com sucesso", "type"=>"success");
            Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
            $ManualUsuario = new Manual_Model_ManualUsuarios();
            if ($ManualUsuario->clear($this->getRequest()->getParam('id'))){
                $Model = $this->getModel();
                $Model->delete($this->getRequest()->getParam('id'));
                Agro_Db_Table_Abstract::getDefaultAdapter()->commit();
            }

        } catch (Exception $e) {
            Agro_Db_Table_Abstract::getDefaultAdapter()->rollback();
            $result['message'] = "Não foi possível excluir o manual. \n\nErro:{$e->getMessage()}";
            $result['status'] = false;
            $result['type'] = 'error';
        }

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