<?php

class Safra17_Lvp001Controller extends Agro_Controller_Action {
	private $__params;
	public $_backAfterSave = false;

	public function init() {
		$Model = new Sistema_Model_Empresas();
		$this->id_empresa = $Model->getIdEmpresaUsuarioCorrente();
		$this->__params = $this->getRequest()->getParams();
	}

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

	public function getModelPrevia() {
		return new Seguro_Model_VistoriaPreviaEmpresa();
	}

	public function getForm($dados = array()) {
		return new Safra17_Form_Lvp001(array('dados'=>$dados));
	}

	/**
	 * Monta a tela de digitação de laudo.
	*/
	public function formAction() {
		$this->view->jQuery()->addJavascriptFile('/resources/jquery/jquery.MultiFile.js');
        $this->view->jQuery()->addStylesheet('/resources/css/seguro/laudoview.css');
        //$this->view->jQuery()->addStylesheet('/resources/css/seguro/laudoprint.css');

		$Model = $this->getModel();
		$dados = $this->getRequest()->getParams();

		$totalItens = $this->getModelPrevia()->getTotalItens($dados['id_proposta']);

		$this->view->totalItens = $totalItens + 10;
		//$this->view->totalItens =  $totalItens && $totalItens >= 4  ? ($totalItens && $totalItens < 4 ? 4 : $totalItens) : 40;
		
		$this->view->dados = $this->getModelPrevia()->getDadosProposta($dados['id_proposta']);
		$this->view->autorizados = $this->getModelPrevia()->getAutorizados($dados['id_proposta']);
		$this->view->id_proposta_vistoria = $dados['id_proposta_vistoria'];
        
        // busca a proposta vigente        
        $ModelProposta = new Seguro_Model_Propostas();
        $Proposta = $ModelProposta->find($dados['id_proposta'])->current();
        $this->view->id_proposta_vigente = $Proposta->recupera_id_proposta_vigente($dados['id_proposta']);
        
        // busca os dados da proposta caso exista endosso
        if ($this->view->id_proposta_vigente <> $dados['id_proposta']) {
            $this->view->dados_proposta_vigente = $this->getModelPrevia()->getDadosProposta($this->view->id_proposta_vigente);
            $this->view->autorizados_vigente = $this->getModelPrevia()->getAutorizados($this->view->id_proposta_vigente);
            $this->view->proposta_vigente = $ModelProposta->find($this->view->id_proposta_vigente)->current();
            $this->view->tem_endosso = true;
        }

		if($this->getRequest()->isPost()){
	    	$Form = $this->getForm(array('dados'=>$dados));
	        $Form->populate($this->__params);

			if($Form->isValid($Form->getValues())) {

				$id_laudo = $Model->save($this->__params);

				if($id_laudo){
					$url = $this->__params['module'].'/'.$this->__params['controller'].'/'.$this->__params['action'].'/id_laudo/'.$id_laudo.'/id_proposta_vistoria/'.$this->__params['id_proposta_vistoria'].'/id_proposta/'.$this->__params['id_proposta'].'/popup/1';
					$this->_redirect($url);
					$this->view->showMessage($Model->getMessages(), "success");
				}else{
					$this->view->showMessage($Model->getMessages(), "error");
				}
        	} else {
        		$this->view->showMessage($this->getAllFormErros(array($Form),$_POST), 'error');
        	}

		}
		$this->view->readonly = $dados['readonly'];

		$this->populate();
	}




    public function populate(){

    	$ProcessosEmpresas = new Sinistro2_Model_ProcessosEmpresas();

    	$Model = $this->getModel();
    	$ModelLvp001IS = new Safra17_Model_Lvp001ItensSegurados();
		$ModelProposta = new Seguro_Model_Propostas();

    	if ($this->__params["id_proposta_vistoria"]){
    		$this->__params = $Model->getDadosLaudo($this->__params["id_proposta_vistoria"])  ? array_merge($this->__params, $Model->getDadosLaudo($this->__params["id_proposta_vistoria"])) : $this->__params;
    		$this->__params = $this->__params['id_laudo'] ? array_merge($this->__params, $ModelLvp001IS->get($this->__params)) : $this->__params;
			$this->view->proposta = $ModelProposta->find($this->__params['id_proposta'])->current();
    	}

    	$Form = $this->getForm(array('dados'=>$this->__params));
        $Form->populate($this->__params);

		$this->view->form = $Form;

		if(!array_key_exists("amostras", $this->__params)){
			$this->__params = $Model->__prepararDados($this->__params);
		}

		$dadosProposta = $this->getModelPrevia()->getDadosProposta($this->__params['id_proposta']);


		$User = Zend_Auth::getInstance()->getIdentity();

		if($User->tp_usuario == 'F'){
	    	if(array_key_exists("amostras", $this->__params)){
		    	//zoneamento
				$idValidacao = null;
				$idProduto = $dadosProposta['id_produto'];
				$idMunicipio = $dadosProposta['id_municipio'];

		    	foreach ($this->__params['amostras'] as $key => $amostra){

		    		//variedade não existe
		    		if($amostra['id_variedade'] == 6971){
		    			$this->__params['amostras'][$key]['foraZoneamento'] = true;
		    		}

		    		$idTipoSolo = $amostra['tipo_solo'];
		    		$idCiclo = $amostra['id_ciclo'];
					$dtInicioSemeadura = $amostra['dt_inicio_semeadura'];
					$dtFimSemeadura = $amostra['dt_final_semeadura'];

					$Validacoes = new Produto_Model_Validacoes();
					if(!$Validacoes->verificaDataSemeadura($idValidacao, $idTipoSolo, $idProduto, $idCiclo, $idMunicipio, $dtInicioSemeadura) || !$Validacoes->verificaDataSemeadura($idValidacao, $idTipoSolo, $idProduto, $idCiclo, $idMunicipio, $dtFimSemeadura)){
						$this->__params['amostras'][$key]['foraZoneamento'] = true;
					}
		    	}
	    	}
		}

		$this->view->dados = array_merge($this->__params, $dadosProposta);

    }

/*     public function transmitirAction() {
    	$result = array();
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

    	$this->getResponse()->setBody(Zend_Json::encode($this->getRequest()->getParams()));
    } */

    public function transmitirAction() {
        $result = "nok";
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $Model = $this->getModel();
        if ($Model->saveMobile($this->getRequest()->getParams())) {
            $result = "ok";
        } else {
            $result = "nok-model";
        }

        if ($result == 'ok') {
            $itens = $this->getRequest()->getParam('nr_quadra');
            foreach ($itens as $item) {
                foreach ($item['arrayImagens'] as $imagem) {
                    if ($this->saveImage($imagem['imagem'], $imagem['nome'], $this->getRequest()->getParam('id_proposta_vistoria'))) {
                        $result = "ok";
                    } else {
                        $result = "nok-imagem";
                    }
                }
            }
        }

        $this->getResponse()->setBody($result);
    }
    
    /*
     * Salva imagem no diretório de laudos previa
     */
    private function saveImage($base64img, $filename, $idPropostaVistoria) {
    	
    	$dados['id_proposta_vistoria'] = $idPropostaVistoria;
    	$dados['ds_nome_arquivo'] = $filename;
    	$dados['id_tipo_arquivo_laudo_previa'] = 3;
    	
    	
    	$ModelPreviaArquivos = new Seguro_Model_Vistoriapreviaempresaarquivos();
    	$ModelPreviaArquivos->save($dados);
    	
    	return file_put_contents(APPLICATION_PATH.'/upload_files/laudoprevia/'.$filename, base64_decode($base64img));
    }

}
