PageRenderTime 45ms CodeModel.GetById 16ms app.highlight 22ms RepoModel.GetById 1ms app.codeStats 0ms

/app/Controller/PerguntaRespostasController.php

https://github.com/decapattack/fishbox
PHP | 186 lines | 140 code | 27 blank | 19 comment | 22 complexity | bb61c2ec0367c4f1d43cea2189d81b99 MD5 | raw file
  1<?php
  2
  3class PerguntaRespostasController extends AppController {
  4
  5    public $components = array('Session','Paginator');
  6    
  7    var $uses = array('CategoriaPergunta', 'Resposta', 'PerguntaResposta');
  8    public $paginate = array(
  9        'limit' => 10,
 10        'order' => array(
 11            'PerguntaResposta.nome' => 'asc'
 12        )
 13    );
 14
 15    /*
 16     * Index
 17     */
 18
 19    public function index() {
 20        $this->loadModel('CategoriaPergunta');
 21        $options = $this->CategoriaPergunta->find('list', array(
 22            'fields' => array(
 23                'id',
 24                'nome'
 25            )
 26        ));
 27        // similar to findAll(), but fetches paged results
 28        $this->Paginator->settings = $this->paginate;
 29        $data = $this->Paginator->paginate('PerguntaResposta');
 30        
 31        
 32        
 33        
 34        
 35        
 36        
 37        
 38        $this->set('categoriaPerguntas',$options);
 39        $this->set('perguntas', $data);
 40    }
 41
 42    /*
 43     * Tela de edição
 44     * @param id
 45     */
 46
 47    public function view($id) {
 48        $perguntaResposta = $this->PerguntaResposta->findById($id);
 49        $this->loadModel('CategoriaPergunta');
 50        $options = $this->CategoriaPergunta->find('list', array(
 51            'fields' => array(
 52                'id',
 53                'nome'
 54            )
 55        ));
 56        $this->loadModel('Resposta');
 57        $respostas = $this->Resposta->find('all',array(
 58            'conditions' => array('Resposta.pergunta_respostas_id' => $id)
 59        ));
 60        
 61        if (!$id) {
 62            throw new NotFoundException(__('Pergunta Inválida'));
 63        }
 64        if (!$perguntaResposta) {
 65            throw new NotFoundException(__('Pergunta Inválida'));
 66        }
 67        $this->set('categoriaPerguntas',$options);
 68        $this->set('respostas', $respostas);
 69        $this->set('perguntaResposta', $perguntaResposta);
 70    }
 71    
 72    /*
 73     * Adiciona Perguntas e Respostas
 74     * 
 75     */
 76    public function add() {
 77        $this->loadModel('CategoriaPergunta');
 78        $options = $this->CategoriaPergunta->find('list', array(
 79            'fields' => array(
 80                'id',
 81                'nome'
 82            )
 83        ));
 84        $this->set('categoriaPerguntas', $options);
 85        if ($this->request->is('post')) {
 86            $this->PerguntaResposta->create();
 87            if($this->PerguntaResposta->saveAll($this->request->data,array("deep"=>true))){
 88                $this->Session->setFlash(__('Gravado com sucesso.'));
 89            }else{
 90                $this->Session->setFlash(__('Erro ao gravar o premio.'));
 91            }
 92            return $this->redirect(array('action' => 'add'));
 93        }
 94    }
 95
 96    /*
 97     * Edicao de premio
 98     * @param id
 99     */
100
101    public function edit($id = null) {
102        if($this->Auth->user('role')!='admin'){
103            $this->Session->setFlash("Sem permissão!");
104             return $this->redirect(array('action'=>'index'));
105        }
106
107        if ($this->request->is(array('post', 'put'))) {
108            $this->loadModel('Resposta');
109            $this->Resposta->query("DELETE FROM respostas WHERE pergunta_respostas_id = ".$id);
110            $this->PerguntaResposta->id = $id;
111            if ($this->PerguntaResposta->saveAll($this->request->data)) {
112                $this->Session->setFlash("Editado com sucesso!");
113                return $this->redirect(array('action' => 'index'));
114            }
115        }
116        
117        $perguntaResposta = $this->PerguntaResposta->findById($id);
118        $this->loadModel('CategoriaPergunta');
119        $options = $this->CategoriaPergunta->find('list', array(
120            'fields' => array(
121                'id',
122                'nome'
123            )
124        ));
125        $this->loadModel('Resposta');
126        $respostas = $this->Resposta->find('all',array(
127            'conditions' => array('Resposta.pergunta_respostas_id' => $id)
128        ));
129        $this->set('categoriaPerguntas',$options);
130        $this->set('respostas', $respostas);
131        $this->set('perguntaResposta', $perguntaResposta);
132
133        /*if ($this->request->data) {
134            $this->request->data = $perguntaResposta;
135        }*/
136    }
137    
138    public function delete($id = null) {
139        if($this->Auth->user('role')!='admin'){
140            $this->Session->setFlash("Sem permissão!");
141             return $this->redirect(array('action'=>'index'));
142        }
143        $this->request->onlyAllow('post');
144
145        $this->PerguntaResposta->id = $id;
146        if (!$this->PerguntaResposta->exists()) {
147            throw new NotFoundException(__('Pergunta não encontrada.'));
148        }
149        if ($this->PerguntaResposta->delete()) {
150            $this->Session->setFlash(__('Pergunta deletada.'));
151            return $this->redirect(array('action' => 'index'));
152        }
153        $this->Session->setFlash(__('Erro ao deletar pergunta.'));
154        return $this->redirect(array('action' => 'index'));
155    }
156    
157    public function search() {
158        $this->Paginator->settings = $this->paginate;
159        $this->loadModel('CategoriaPergunta');
160        $options = $this->CategoriaPergunta->find('list', array(
161            'fields' => array(
162                'id',
163                'nome'
164            )
165        ));
166        $nome = $this->request->query['nome'];
167        $categoria = $this->request->query['categoria_perguntas_id'];
168        
169        $conditions = array();
170        if($nome != "" && $categoria == ""){
171            $conditions = array(array('PerguntaResposta.nome LIKE' => "%$nome%"));
172        }else if($nome == "" && $categoria != ""){
173            $conditions = array('PerguntaResposta.categoria_perguntas_id =' => $categoria);
174        }else if($nome != "" && $categoria != ""){
175            $conditions = array('AND' => array(
176                array('PerguntaResposta.nome LIKE' => "%$nome%"),
177                array('PerguntaResposta.categoria_perguntas_id =' => $categoria)
178            ));
179        }
180        $data = $this->Paginator->paginate('PerguntaResposta', $conditions);
181        $this->set('categoriaPerguntas',$options);
182        $this->set('perguntas', $data);
183    }
184
185}
186?>