<?php

class Seguro_TipolaudopreviaController extends Agro_Controller_Action {
	public function init() {
		$this->view->title = "Sinistro » Cadastro » Laudos prévias";
		$this->view->back = "/seguro/tipolaudoprevia";
	}
	
	public function formAction(){
		try {
			$this->view->form = $this->getForm();
			$this->view->title .= ' » Formulário';
			$Model = $this->getModel();
			$id=false;
			
			if ($this->getRequest()->isPost()) {
				if ($this->view->form->isValid($this->getRequest()->getPost())) {
					$params = $this->getRequest()->getParams();
					
					$Adapter = new Zend_File_Transfer_Adapter_Http();
					$Adapter->setDestination(APPLICATION_PATH.'/upload_files/planilhas_laudos_previa/');
					$file = $Adapter->getFileInfo();
					
					if ($file["ds_nome_arquivo"]){	
						if($Adapter->receive($file['ds_nome_arquivo']['name'])){
							$params["ds_nome_arquivo"] = $file['ds_nome_arquivo']['name'];
						} 
					}
					
					$Row = $Model->save($params);						
					
					if ($Row) {
						$this->view->ds_nome_arquivo = $Row->ds_nome_arquivo;
						$this->view->showMessage(MSG_SUCCESS, 'success');
						$this->view->form->populate($Row->toArray());
						
					} else {
						if ($Model->getMessages()) {
							$this->view->showMessage($Model->getMessages(), 'error');
						} else {
							$this->view->showMessage(MSG_ERROR, 'error');
						}
						
						$this->view->form->populate($this->getRequest()->getParams());
					}
					
					
				} else {
					$Errors = $this->view->form->getMessages();
					$this->view->showMessage($this->getHtmlFormError($Errors), 'error');
					$this->view->form->populate($this->getRequest()->getParams());
				}
				
			} else if ($this->getRequest()->getParam('id')) {
				$id = $this->getRequest()->getParam('id');
			}
			
			if ($id){
				$row = $this->getRow();
				$this->view->form->populate($row);
				$this->view->ds_nome_arquivo = $row["ds_nome_arquivo"];
			}
			
		} catch (Exception $e) {
			$this->view->showMessage($e->getMessage(), 'error');
		}
	}
	
	public function setBack() {
		$this->view->back = '/seguro/tipolaudoprevia';
	}
	
	public function getModel() {
		return new Seguro_Model_TipoLaudoPrevia();
	}
	
	public function getForm() {
		return new Seguro_Form_TipoLaudoPrevia();
	}
	
	public function getFilter() {
		$where = array();
		
		if ($this->getRequest()->getParam('ds_nome_tipo_laudo_previa')) {
			$where[] = array (
				'field' => 'ds_nome_tipo_laudo_previa',
				'operator' => 'ilike',
				'value' => '%'.$this->getRequest()->getParam('ds_nome_tipo_laudo_previa').'%'
			);
		}
		
		if ($this->getRequest()->getParam('ds_chave')) {
			$where[] = array (
				'field' => 'ds_chave',
				'operator' => 'ilike',
				'value' => '%'.$this->getRequest()->getParam('ds_chave').'%'
			);
		}
		
		if ($this->getRequest()->getParam('fl_ativo')) {
			$where[] = array (
				'field' => 'fl_ativo',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('fl_ativo')
			);
		}
		
		/**
			Permitindo apenas listar grupamento cultura de acordo com o configurado pela empresa do usuário logado. 
			Com excessão do usuário da empresa AgroBrasil. 	
    	*/
		$User = Zend_Auth::getInstance()->getIdentity();
		if ($User->cpf_cnpj != "03.486.745/0001-09"){
			$ModelEmpresas = new Sistema_Model_Empresas();
			$Empresa = $ModelEmpresas->fetchRow("cpf_cnpj='{$User->cpf_cnpj}'");
			$id_grupamento_cultura = $Empresa->id_grupamento_cultura();
			
			if ($id_grupamento_cultura){
				$where[] = array(
						'field' 	=> 'id_grupamento_cultura',
						'operator'	=> 'in',
						'value'		=> "(".implode(", ", $id_grupamento_cultura).")"
				);
			}
		}
		
		return $where;
	}
	
	public function showAction(){
		$this->getHelper('layout')->disableLayout();
		
		$Model = $this->getModel();
		
		try {
			$Row = $Model->find($this->getRequest()->getParam("id"))->current();
			if ($Row){
				$this->view->params = $Row->toArray();	
			} else {
				$this->view->params = false;
			}
			
		} catch (Exception $e) {
			$this->view->params = false;
		}
	}
}