<?php

class Produto_LaudofinalController extends Agro_Controller_Action{
	
	public function init() {
		$this->view->jQuery()->addJavascriptFile("/resources/javascript/produtos.js");
		$this->view->title = 'Produto » Configurações » Laudos Finais';
	}
	
	public function getModel() {
		return new Produto_Model_LaudosFinais();
	}
	
	public function getForm() {
		return new Produto_Form_LaudoFinal();
	}

	public function formAction() {	
		$this->view->title .= ' » Formulário';
		$this->view->back = "/produto/laudofinal";
		
		$this->view->form = new Produto_Form_LaudoFinal;

		if ($this->getRequest()->isPost()) {

			$form = $this->view->form;
			$forms = array($form);
			
			if ($this->getRequest()->getParam('id')) {
				$form->id_produto->setRequired(false);
				$form->id_cobertura->setRequired(false);
				$form->id_produto->setAttrib('disabled','disabled');
				$form->id_cobertura->setAttrib('disabled','disabled');

				$row = $this->getRow($this->getRequest()->getParam('id'));
				$this->getRequest()->setParam('id_produto', $row['id_produto']);
				$this->getRequest()->setParam('id_cobertura', $row['id_cobertura']);
			}

			$errorMsg = $this->getAllFormErros($forms, $this->getRequest()->getPost());

			if ($errorMsg) {
				$this->view->form->populate($this->getRequest()->getParams());
				$this->view->showMessage($errorMsg, 'error');
			} else {
				$id = '';
				$row = '';
				if (!$this->getRequest()->getParam('id')) {
					$id = $this->getRequest()->getParam('id_produto').','.$this->getRequest()->getParam('id_cobertura');
					$row = $this->getRow($id);
				}
				if (!$row) {
					$this->save($this->getRequest()->getParams());
				} else {
					$this->view->showMessage(MSG_ERRO_PRODUTO_LF, 'error');
				}
			}
		} else if ($this->getRequest()->getParam('id')) {
			
			$this->view->form->id_produto->setAttrib('disabled','disabled');
			$this->view->form->id_cobertura->setAttrib('disabled','disabled');
			
			$row = $this->getRow($this->getRequest()->getParam('id'));
			$row['id'] = $this->getRequest()->getParam('id');
			$this->view->form->populate($row);
		}
	}

	public function getRow($id) {
		$params = explode(',', $id);
	    $Model = $this->getModel();
	    if ($Model->find($params[0], $params[1])->current()) {
	    	$row = $Model->find($params[0], $params[1])->current()->toArray(); 
	    }
					
		return $row;
	}

    public function removeAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();
        
        $Model = $this->getModel();
        
        list($id_produto, $id_cobertura) = explode(',',$this->getRequest()->getParam('id'));
        
        if ($Model->delete($id_produto, $id_cobertura)) {
            $this->view->message(MSG_SUCCESS, 'success');
        } else {
            $this->view->message(MSG_ERROR, 'error');
        }
        $this->_redirect('/produto/laudofinal');
    }
	
	public function save(array $post) {
		try {
			$Model = $this->getModel();
			
			$data = array();
			$data['ds_controller']    = $post['ds_controller'];
			
			$data['id_produto'] = $post['id_produto'];
			$data['id_cobertura']     = $post['id_cobertura'];
			
			$Model->delete($post['id_produto'],$post['id_cobertura']);
			$Model->insert($data);
			
			$this->_redirect('/produto/laudofinal');
		} catch (Exception $e) {
			$this->view->showMessage(MSG_ERROR, 'error', $e);
		}
	}

	public function getFilter() {
		$where = array();
		
		if ($this->getRequest()->getParam('id_safra')) {
			$where[] = array(
				'field' => 'id_safra',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_safra')
			);
		}
		
		
		if ($this->getRequest()->getParam('id_produto')) {
			$where[] = array(
				'field' => 'id_produto',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_produto')
			);
		}
		
		if ($this->getRequest()->getParam('id_cobertura')) {
			$where[] = array(
				'field' => 'id_cobertura',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_cobertura')
			);
		}
		
		if ($this->getRequest()->getParam('ds_controller')) {
			$where[] = array(
				'field' => 'ds_controller',
				'operator' => 'ilike',
				'value' => '%'.$this->getRequest()->getParam('ds_controller').'%'
			);
		}

		return $where;
	}
}
