<?php

class Sinistro2_LaudopreliminarController extends Agro_Controller_Action{

	public function getModel() {
        return new Sinistro2_Model_LaudosPreliminares();
    }
	/**
	 * Redireciona a página para o formulário de cadastro
	 * de laudo da cobertura inforada
	 */
	public function setlaudopreliminarAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$Lp = new Zend_Session_Namespace('laudo_preliminar');
		$Lp->idVistoria  = $this->getRequest()->getParam('id_vistoria');
		$Lp->idCobertura = $this->getRequest()->getParam('id_cobertura');
		$Lp->idProposta  = $this->getRequest()->getParam('id_proposta');
		$Lp->idProcesso  = $this->getRequest()->getParam('id_processo');

		$idProposta  = $this->getRequest()->getParam('id_proposta');
		$idCobertura = $this->getRequest()->getParam('id_cobertura');

		// Busca o schema da safra
		$Safra = new Produto_Model_Safras();
		$schema = $Safra->getSafraModel($idProposta);

		//Busca o controller do form de cadastro do laudo.
		$LaudoPreliminar = new Sinistro2_Model_LaudosPreliminares();
		$controller = $LaudoPreliminar->getController($idProposta,$idCobertura,$schema);

		$url = '/' . $schema .'/' . $controller . '/form';

		if($this->getRequest()->getParam('id_laudo_preliminar')){
			$url .= '/id/' . $this->getRequest()->getParam('id_laudo_preliminar');
		}

		$this->_redirect($url);
	}

    public function envialaudopreliminarAction() {
        $this->getHelper('layout')->disableLayout();
        $params = $this->getRequest()->getParams();

        $Model_Status             = new Sistema_Model_Status();
        $Model_LaudosPreliminares = $this->getModel();

        $Row = $Model_LaudosPreliminares->getRow($params['id_laudo_preliminar']);

        /*
         * Se o evento não for constatado, cancela a vistoria final pendente para esta cobertura
         */
        if($Row->fl_evento_nao_constatado){
        	$ModelAgendamentos = new Sistema_Model_Agendamentos();
        	$idAgendamentoFinal = $ModelAgendamentos->buscaUltimoAgendamentoFinal($Row->id_processo, $Row->id_cobertura, 'AGUARDANDO_DATA');

        	if($idAgendamentoFinal){
        		$RowAgendamento = $ModelAgendamentos->getRow($idAgendamentoFinal);
        		$RowAgendamento->id_status = $ModelAgendamentos->getIdStatus('AGENDAMENTO_CANCELADO');
        		$RowAgendamento->save();
        	}
        }

        /* Se lp004 e incidêcnia geada/excesso chuva não atingi 30%, cancela a vistoria final para a cobertura */
        if ($params['controller_name'] == 'lp004') {
            $regulacao = ucfirst($params['module_name']).'_Model_'.ucfirst($params['controller_name']);
            $ModelRegulacao = new $regulacao();
            $dadosLaudos = $ModelRegulacao->getDataLaudoPreliminar($params['id_laudo_preliminar']);
            if ($dadosLaudos['fl_incidencia_atingida'] === false){
                $ModelAgendamentos = new Sistema_Model_Agendamentos();
                $idAgendamentoFinal = $ModelAgendamentos->buscaUltimoAgendamentoFinal($Row->id_processo, $Row->id_cobertura, 'AGUARDANDO_DATA');
                if ($idAgendamentoFinal) {
                    $RowAgendamento = $ModelAgendamentos->getRow($idAgendamentoFinal);
                    $RowAgendamento->id_status = $ModelAgendamentos->getIdStatus('AGENDAMENTO_CANCELADO');
                    $RowAgendamento->save();
                }
            }
        }

        if($Row->fl_assinatura_segurado == true){
        	$idStatus = $Model_Status->getIdStatus('ENVIADO', 'LAUDOS_PRELIMINARES');
        } else {
        	$idStatus = $Model_Status->getIdStatus('ENVIADO_NAO_ASSINADO', 'LAUDOS_PRELIMINARES');
        }

        $Row->id_status = $idStatus;
        $Row->save();

        (new Sinistro2_Service_LaudosPreliminaresHistorico(new Log_Model_LaudosPreliminaresHistorico()))
            ->salvarHistorico($params['id_laudo_preliminar'], Log_Model_LaudosPreliminaresHistorico::ACAO_ENVIAR);

        $url = '/'.$params['module_name'].'/'.$params['controller_name'].'/form/id/'.$params['id_laudo_preliminar'].'/id_processo/'.$params['id_processo'].'/enviado/1';

        $this->_redirect($url);
    }

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

        $params = $this->getRequest()->getParams();

        $return = array("status"=>true, "message"=>"Laudo enviado com sucesso!");

        try {
			$Model_Status = new Sistema_Model_Status();
	        $idStatus = $Model_Status->getIdStatus('ENVIADO', 'LAUDOS_PRELIMINARES');

	        $Model_LaudosPreliminares = $this->getModel();

	        $Row = $Model_LaudosPreliminares->getRow($params['id_laudo_preliminar']);
	        $Row->id_status = $idStatus;
	        $Row->save();

        } catch (Exception $e) {
        	$return["status"] = false;
        	$return["message"] = $e->getMessage();
        }

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

    public function devolvelaudopreliminarAction()
    {
        $this->getHelper('layout')->disableLayout();
        $params = $this->getRequest()->getParams();

        $this->getService((new Log_Model_LaudosPreliminaresHistorico()))
            ->devolverLaudo((int)$params['id_laudo_preliminar']);

        $url = '/' . $params['module_name'] . '/' . $params['controller_name'] . '/form/id/';
        $url .= $params['id_laudo_preliminar'] . '/id_processo/' . $params['id_processo'];

        $this->redirect($url);
    }

    public function loaditensseguradosparcialAction() {
        $this->getHelper('layout')->disableLayout();

        $params = $this->getRequest()->getParams();

        $ModelLaudosFinais = $this->getModel();
        $this->view->data = array();
        $this->view->data['itens_segurados'] = $ModelLaudosFinais->getItenSeguradosParcial($params['id_proposta'],$params['id_vistoria']);
    }

    public function getService(Log_Model_LaudosPreliminaresHistorico $modelLaudosPreliminaresHistorico = null): Sinistro2_Service_LaudosPreliminares
    {
        return new Sinistro2_Service_LaudosPreliminares($this->getModel(), $modelLaudosPreliminaresHistorico);
    }
}