<?php

class Agronet_IndexController extends Zend_Controller_Action {

// COMENTADO PARA ATIVAR HTTS EM TODO O AGRONET NÃO APENAS NO LOGIN
/*	public function init() {
		$this->getHelper('RequireSSL')->setHttp();
	}
*/
	private function setContadoresChamadosPrevia(int $idSafra, string $tipoUsuario): void
	{
		$indexModel = new Agronet_Model_Index();

		if(!in_array($tipoUsuario, ['P', 'C', 'V', 'F'])) {
			return;		
		}

		$tiposChamado = [
			Atendimento_Model_TipoChamado::VISTORIA_PREVIA_CONFIRMAR_CONTATO,
			Atendimento_Model_TipoChamado::VISTORIA_PREVIA_PENDENCIA,
			Atendimento_Model_TipoChamado::VISTORIA_PREVIA_COMUNICADO_ALTERACAO
		];

		if ($tipoUsuario === 'V') {
			$tiposChamado = [
				Atendimento_Model_TipoChamado::VISTORIA_PREVIA_CONFIRMAR_CONTATO,
				Atendimento_Model_TipoChamado::VISTORIA_PREVIA_PENDENCIA			
			];
		}
		
		$this->view->chamadosPrevia = $indexModel->countChamadosPreviaPorTiposChamado(
			$idSafra,
			$tiposChamado,
			[
				Sistema_Model_Status::CH_NOVO,
				Sistema_Model_Status::CH_ABERTO
			]
		);
		
		$this->view->chamadosPreviaComunicadoAlteracao = $indexModel->countChamadosPreviaPorTiposChamado(
			$idSafra,
			[Atendimento_Model_TipoChamado::VISTORIA_PREVIA_COMUNICADO_ALTERACAO],
			[
				Sistema_Model_Status::CH_NOVO,
				Sistema_Model_Status::CH_ABERTO
			]
		);

		$this->view->chamadosPreviaConfirmarContato = $indexModel->countChamadosPreviaPorTiposChamado(
			$idSafra,
			[Atendimento_Model_TipoChamado::VISTORIA_PREVIA_CONFIRMAR_CONTATO],
			[
				Sistema_Model_Status::CH_NOVO,
				Sistema_Model_Status::CH_ABERTO
			]
		);

		$this->view->chamadosPreviaPendencias = $indexModel->countChamadosPreviaPorTiposChamado(
			$idSafra,
			[Atendimento_Model_TipoChamado::VISTORIA_PREVIA_PENDENCIA],
			[
				Sistema_Model_Status::CH_NOVO,
				Sistema_Model_Status::CH_ABERTO,
			]
		);
	}

	public function indexAction()
    {
        unset($_SESSION['filtro']); //mata o filtro, pra direcionar os resumos sem filtro

        try {
            $this->view->form = new Agronet_Form_Index();

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

            $this->validarCadastroAnualCorretor($user);
            $this->validarAuxiliarVistoriador($user);
            $this->cancelarSolicitacoesEndosso($user);

            $model = new Agronet_Model_Index();
            $modelUsers = new Sistema_Model_Usuarios();
            $safras = new Produto_Model_Safras();
            $manuais = new Manual_Model_Manual();

            $safraAnterior = $safras->safraCurrent - 1;
            $status = "58,73";
            
            $this->view->propostas = $model->getPropostas($safras->safraCurrent);
            $this->view->solicitacaoendosso = $model->getSolicitacaoEndosso($safras->safraCurrent);
            $this->view->safras = ($safraAnterior);
            $this->view->safra = ($safras->safraCurrent);
            //alterdado de $safraAnterior para $safras->safraCurrent,
            //pois foi adicionado o combo de selecao de safra no dashboard
            $this->view->vistoriaPendencias = $model->getVistoriaPendencias($safras->safraCurrent);
            $this->view->isFuncionarioAgro = $modelUsers->isFuncionarioAgro($user->id);
            $this->view->chamadosPrevia = 0;

            $this->setContadoresChamadosPrevia($safraAnterior, $user->tp_usuario);
            $this->view->isVistoriador = Sistema_Model_Usuarios::isTipoUsuarioVistoriador($user->tp_usuario);
            
            if ($user->ds_nome_usuario != 'ti.agronet' && $user->ds_nome_usuario != 'marcelo.paulino') {
                if (
                    in_array(
                        $user->tp_usuario,
                        [Sistema_Model_Usuarios::TIPO_USUARIO_CORRETOR, Sistema_Model_Usuarios::TIPO_USUARIO_PREPOSTO]
                    )
                ) {
                    $chamadosSinistroPendentes = $model->countChamadosSinistro($safraAnterior, $status, 'false');
                    $chamadosSinistroPendentesAgro = $model->countChamadosSinistro($safraAnterior, $status, 'true');

                    $this->setContadoresChamadosPrevia($Safras->safraCurrent - 1, $user->tp_usuario);	
            
                    if($user->ds_nome_usuario != 'ti.agronet' && $user->ds_nome_usuario != 'marcelo.paulino' /*&& APPLICATION_ENV == 'production'*/){
                        //CONTADOR DE CHAMADOS DO SINISTRO DESTINADOS A CORRETOR E PREPOSTOS
                        $this->view->chamadossinistropendentes = $chamadosSinistroPendentes ?? '0';
                        $this->view->chamadossinistropendentesagro = $chamadosSinistroPendentesAgro ?? '0';

                        $chamadosTecnicaPendentes = $model->countChamadosTecnica($safraAnterior, $status, 'false');
                        $chamadosTecnicaPendentesAgro = $model->countChamadosTecnica($safraAnterior, $status, 'true');

                        //CONTADOR DE CHAMADOS DO ATENDIMENTO/TECNICA DESTINADOS A CORRETOR E PREPOSTOS
                        $this->view->chamadostecnicapendentes = $chamadosTecnicaPendentes ?? '0';
                        $this->view->chamadostecnicapendentesagro = $chamadosTecnicaPendentesAgro ?? '0';

                        $chamadosPreviaPendentes = $model->countChamadosPrevia($safraAnterior, $status, 'false');
                        $chamadosPreviaPendentesAgro = $model->countChamadosPrevia($safraAnterior, $status, 'true');

                        //CONTADOR DE CHAMADOS DE VISTORIA PREVIAC
                        $this->view->chamadospreviapendentes = $chamadosPreviaPendentes ?? '0';
                        $this->view->chamadospreviapendentesagro = $chamadosPreviaPendentesAgro ?? '0';

                        //INFORMATIVOS
                        $this->view->informativos = $manuais->getInformativos();

                        //PENDENCIAS
                        $this->view->countBeneficiariosDocumentacaoNaoEnviada = count(
                            $model->getBeneficiariosByStatusArquivos(
                                Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_NAO_ENVIADO
                            )
                        );
                        $this->view->countBeneficiariosDocumentacaoPendente = count(
                            $model->getBeneficiariosByStatusArquivos(
                                Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_PENDENTE
                            )
                        );
                    }
                }
                
                if (
                    $user->tp_usuario == Sistema_Model_Usuarios::TIPO_USUARIO_FUNCIONARIO
                    && $modelUsers->isFuncionarioAgro($user->id)
                ) {
                    $chamadosSinistroPendentes = $model->countChamadosSinistro($safraAnterior, $status, 'false');
                    $chamadosSinistroPendentesAgro = $model->countChamadosSinistro($safraAnterior, $status, 'true');
                    $chamadosSinistroMinhasPendencias = $model->countChamadosSinistro(
                        $safraAnterior,
                        $status,
                        'true',
                        (int)Zend_Auth::getInstance()->getIdentity()->id
                    );

                    $this->view->chamadossinistropendentes = $chamadosSinistroPendentes ?? '0';
                    $this->view->chamadossinistropendentesagro = $chamadosSinistroPendentesAgro ?? '0';
                    $this->view->chamadossinistrominhaspendencias = $chamadosSinistroMinhasPendencias;

                    $chamadosTecnicaPendentes = $model->countChamadosTecnica($safraAnterior, $status, 'false');
                    $chamadosTecnicaPendentesAgro = $model->countChamadosTecnica($safraAnterior, $status, 'true');
                    $chamadosTecnicaMinhasPendencias = $model->countChamadosTecnica(
                        $safraAnterior,
                        $status,
                        'true',
                        (int)Zend_Auth::getInstance()->getIdentity()->id
                    );

                    $this->view->chamadostecnicapendentes = $chamadosTecnicaPendentes ?? '0';
                    $this->view->chamadostecnicapendentesagro = $chamadosTecnicaPendentesAgro ?? '0';
                    $this->view->chamadostecnicaminhaspendencias = $chamadosTecnicaMinhasPendencias;

                    $chamadosPreviaPendentes = $model->countChamadosPrevia($safraAnterior, $status, 'false');
                    $chamadosPreviaPendentesAgro = $model->countChamadosPrevia($safraAnterior, $status, 'true');
                    $chamadosPreviaMinhasPendencias = $model->countChamadosPrevia(
                        $safraAnterior,
                        $status,
                        'true',
                        (int)Zend_Auth::getInstance()->getIdentity()->id
                    );

                    $this->view->chamadospreviapendentes = $chamadosPreviaPendentes ?? '0';
                    $this->view->chamadospreviapendentesagro = $chamadosPreviaPendentesAgro ?? '0';
                    $this->view->chamadospreviaminhaspendencias = $chamadosPreviaMinhasPendencias;

                    //RESUMO DE VISTORIAS
                    //alterdado de $safraAnterior para $safras->safraCurrent,
                    //pois foi adicionado o combo de selecao de safra no dashboard
                    $this->view->previa = $model->getPrevias($safras->safraCurrent, true);
                    $this->view->preliminares_pendentes = $model->getPreliminarPendente($safras->safraCurrent, true);
                    $this->view->preliminares_salvas = $model->getPreliminares($safras->safraCurrent, 75, true);
                    $this->view->preliminares_enviadas = $model->getPreliminares($safras->safraCurrent, 76, true);
                    $this->view->preliminares_devolvidas = $model->getPreliminares($safras->safraCurrent, 164, true);

                    $this->view->finais_pendentes = $model->getFinalPendente($safras->safraCurrent, true);
                    $this->view->finais_salvas = $model->getFinais($safras->safraCurrent, 109);
                    $this->view->finais_enviadas = $model->getFinais($safras->safraCurrent, 110);
                    $this->view->finais_devolvidas = $model->getFinais($safras->safraCurrent, 114);
                    $this->view->preliminares = true;
                    $this->view->finais = true;

                    //INFORMATIVOS
                    $this->view->informativos = $manuais->getInformativos();

                    //PENDENCIAS
                    $this->view->pendencias = $model->getPendencias($safraAnterior);
                    $this->view->countBeneficiariosDocumentacaoNaoEnviada = count(
                        $model->getBeneficiariosByStatusArquivos(
                            Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_NAO_ENVIADO
                        )
                    );
                    $this->view->countBeneficiariosDocumentacaoPendente = count(
                        $model->getBeneficiariosByStatusArquivos(
                            Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_PENDENTE
                        )
                    );
                    $this->view->countBeneficiariosDocumentacaoNaoAnalisado = count(
                        $model->getBeneficiariosByStatusArquivos(
                            Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_NAO_ANALISADO
                        )
                    );
                    $this->view->countBeneficiariosDocumentacaoAnaliseConcluida = count(
                        $model->getBeneficiariosByStatusArquivos(
                            Seguro_Model_Beneficiarios::ID_STATUS_ARQUIVOS_ANALISE_CONCLUIDA
                        )
                    );

                    if (Agro_Util::checkPermission('agronet:index:totalizadorprocessos')) {
                        $this->view->totalizadorprocessos = $model->getTotaisProcessos($safras->safraCurrent - 2);
                    }
                }

                if (
                    in_array(
                        $user->tp_usuario,
                        [Sistema_Model_Usuarios::TIPO_USUARIO_VISTORIADOR, Sistema_Model_Usuarios::TIPO_USUARIO_MANAGER]
                    )
                ) {
                    $chamadosSinistroPendentes = $model->countChamadosSinistro($safraAnterior, $status, 'false');
                    $chamadosSinistroPendentesAgro = $model->countChamadosSinistro($safraAnterior, $status, 'true');
               
                    $respostasChamadosSinistroConfirmarContato = $model->countRespostasChamadosSinistro($safraAnterior, $status);
                    $chamadosSinistroPendentes += $respostasChamadosSinistroConfirmarContato;
 
                    //CONTADOR DE CHAMADOS DO SINISTRO DESTINADOS A CORRETOR E PREPOSTOS
                    $this->view->chamadossinistropendentes = $chamadosSinistroPendentes ?? '0';
                    $this->view->chamadossinistropendentesagro = $chamadosSinistroPendentesAgro ?? '0';

                    $chamadosPreviaPendentes = $model->countChamadosPrevia($safraAnterior, $status, 'false');
                    $chamadosPreviaPendentesAgro = $model->countChamadosPrevia($safraAnterior, $status, 'true');

                    //CONTADOR DE CHAMADOS DO ATENDIMENTO/TECNICA DESTINADOS A CORRETOR E PREPOSTOS
                    $this->view->chamadospreviapendentes = $chamadosPreviaPendentes ?? '0';
                    $this->view->chamadospreviapendentesagro = $chamadosPreviaPendentesAgro ?? '0';

                    //INFORMATIVOS
                    $this->view->informativos = $manuais->getInformativos();

                    //RESUMO DE VISTORIAS
                    //alterdado de $safraAnterior para $safras->safraCurrent,
                    //pois foi adicionado o combo de selecao de safra no dashboard
                    $this->view->previa = $model->getPrevias($safras->safraCurrent);
                    $this->view->preliminares_pendentes = $model->getPreliminarPendente($safras->safraCurrent);
                    $this->view->preliminares_salvas = $model->getPreliminares($safras->safraCurrent, 75);
                    $this->view->preliminares_enviadas = $model->getPreliminares($safras->safraCurrent, 76);
                    $this->view->preliminares_devolvidas = $model->getPreliminares($safras->safraCurrent, 164);
                    $this->view->finais_pendentes = $model->getFinalPendente($safras->safraCurrent);
                    $this->view->finais_salvas = $model->getFinais($safras->safraCurrent, 109);
                    $this->view->finais_enviadas = $model->getFinais($safras->safraCurrent, 110);
                    $this->view->finais_devolvidas = $model->getFinais($safras->safraCurrent, 114);
                    $this->view->preliminares = true;
                    $this->view->finais = true;

                    //REUSMO DE AVISOS DE SINISTRO E INICIO DE COLHEITA
                    if (Agro_Util::checkPermission('agronet:index:totalizadoravisoscolheita')) {
                        $this->view->totalizadoravisoscolheita = $model->getAvisoInicioColheita($safraAnterior);
                    }

                    if (Agro_Util::checkPermission('agronet:index:totalizadoravisos')) {
                        $this->view->totalizadoravisos = $model->getTotaisAvisos($safraAnterior);
                    }
                }
            }

        } catch (Exception $e) {
            Agro_Util::informaErroAgronet($e->getMessage());
            print_r($e->getMessage());
        }
    }
	
	public function buscasolicitacaoendossoAction() {
		$this->getHelper('layout')->disableLayout();
		
		try {
			$Safras = new Produto_Model_Safras();
			$Model = new Agronet_Model_Index();
			$this->view->id_safra_solicitacao_endosso = $this->getRequest()->getParam('id_safra_solicitacao_endosso') > 0 ? $this->getRequest()->getParam('id_safra_solicitacao_endosso') : $Safras->safraCurrent;
			$this->view->solicitacaoendosso = $Model->getSolicitacaoEndosso($this->view->id_safra_solicitacao_endosso);
			
		} catch (Exception $e) {
			Agro_Util::informaErroAgronet($e->getMessage());
		}
	}

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

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

			$this->view->id_safra = $params["id_safra"];

			$Model = new Agronet_Model_Index();
			$ModelUsers = new Sistema_Model_Usuarios();
			$User  = Zend_Auth::getInstance()->getIdentity();

			if($User){
	    		if (Agro_Util::checkPermission('agronet:index:pendencias')){
	    		    $this->view->pendencias = $Model->getPendencias($params["id_safra"]);
	    		}

	    		if (Agro_Util::checkPermission('agronet:index:propostas')){
	    		    $this->view->propostas = $Model->getPropostas($params["id_safra"]);
	    		}

	    		if (Agro_Util::checkPermission('agronet:index:chamados')){
	    		    $this->view->chamadossinistro = $Model->getChamadosSinistro($params["id_safra"]);
	    		    $this->view->chamadosprevia = $Model->getChamadosPrevia($params["id_safra"]);
	    		    $this->view->chamadosgerais = $Model->getChamadosGerais($params["id_safra"]);
	    		}

				if (Agro_Util::checkPermission('agronet:index:vistorias')){
	    		    $this->view->previa = $Model->getPrevias($params["id_safra"]);
	        		$this->view->preliminares_pendentes = $Model->getPreliminarPendente($params["id_safra"]);
	        		$this->view->preliminares_salvas = $Model->getPreliminares($params["id_safra"], 75);
	        		$this->view->preliminares_enviadas = $Model->getPreliminares($params["id_safra"], 76);
	        		$this->view->preliminares_devolvidas = $Model->getPreliminares($params["id_safra"], 164);
	        		$this->view->preliminares = true;
	        		$this->view->finais_pendentes = $Model->getFinalPendente($params["id_safra"]);
	        		$this->view->finais_salvas = $Model->getFinais($params["id_safra"], 109);
	        		$this->view->finais_enviadas = $Model->getFinais($params["id_safra"], 110);
	        		$this->view->finais_devolvidas = $Model->getFinais($params["id_safra"], 114);
	        		$this->view->finais = true;
				}

				if (Agro_Util::checkPermission('agronet:index:totalizadoravisoscolheita')) {
					$this->view->totalizadoravisoscolheita = $Model->getAvisoInicioColheita($params["id_safra"]);
				}

				if (Agro_Util::checkPermission('agronet:index:totalizadoravisos')){
					$this->view->totalizadoravisos = $Model->getTotaisAvisos($params["id_safra"]);
	    		}

	    		if (Agro_Util::checkPermission('agronet:index:solicitacaoendosso')){
	    			
	    			$this->view->solicitacaoendosso = $Model->getSolicitacaoEndosso();
	    		}

			}

		} catch (Exception $e) {
			Agro_Util::informaErroAgronet($e->getMessage());
		}
	}
	
	public function buscaresumopropostasAction(){
		$this->getHelper('layout')->disableLayout();

		try {
			$Model  = new Agronet_Model_Index();
			$Safras = new Produto_Model_Safras();
	
			$this->view->id_safra  = ($this->getRequest()->getParam('id_safra') > 0) ? $this->getRequest()->getParam('id_safra') : $Safras->safraCurrent;
			$this->view->propostas = $Model->getPropostas($this->view->id_safra);
		} catch (Exception $e) {
			Agro_Util::informaErroAgronet($e->getMessage());
		}
	}	
	
	public function buscaresumosinistroAction(){
		$this->getHelper('layout')->disableLayout();
        
		try {
			$usuario = Zend_Auth::getInstance()->getIdentity();
			
			$Model  = new Agronet_Model_Index();
			$Safras = new Produto_Model_Safras();
		
			$idAcao = (new Sistema_Model_Acoes())->getIdAcao('sinistro2', 'vistoriadordespesa', 'index');
	
			$this->view->id_safra_sinistro  = ($this->getRequest()->getParam('id_safra_sinistro') > 0) ? $this->getRequest()->getParam('id_safra_sinistro') : $Safras->safraCurrent;
			$this->view->avisossinistro     = $Model->getAvisos($this->view->id_safra_sinistro);
			$this->view->isVistoriador      = Sistema_Model_Usuarios::isTipoUsuarioVistoriador($usuario->tp_usuario);
			$this->view->hasPermissaoLancarDespesa = (new Sistema_Model_UsuarioAcao())->checkPermission($usuario->id, $idAcao);
		} catch (Exception $e) {
			Agro_Util::informaErroAgronet($e->getMessage());
		}
	}

	public function buscaresumovistoriaAction(){
		$this->getHelper('layout')->disableLayout();
		
		try {
			$Model   = new Agronet_Model_Index();
			$Safras  = new Produto_Model_Safras();
			$ModelUsers = new Sistema_Model_Usuarios();
			$User    = Zend_Auth::getInstance()->getIdentity();
			$idSafra = ($this->getRequest()->getParam('id_safra') > 0) ? $this->getRequest()->getParam('id_safra') : $Safras->safraCurrent;

			$this->view->safras = $idSafra;

			$this->view->isFuncionarioAgro = ($ModelUsers->isFuncionarioAgro($User->id) ? true : false);
			
			$this->view->vistoriaPendencias      = $Model->getVistoriaPendencias($idSafra, $User->tp_usuario, true);
			$this->view->previa                  = $Model->getPrevias($idSafra, true);
			$this->view->preliminares_pendentes  = $Model->getPreliminarPendente($idSafra, true);
			$this->view->preliminares_salvas     = $Model->getPreliminares($idSafra, 75, true);
			$this->view->preliminares_enviadas   = $Model->getPreliminares($idSafra, 76, true);
			$this->view->preliminares_devolvidas = $Model->getPreliminares($idSafra, 164, true);
			$this->view->finais_pendentes        = $Model->getFinalPendente($idSafra, true);
			$this->view->finais_salvas           = $Model->getFinais($idSafra, 109, true);
			$this->view->finais_enviadas         = $Model->getFinais($idSafra, 110, true);
			$this->view->finais_devolvidas       = $Model->getFinais($idSafra, 114, true);
			$this->view->preliminares            = true;
			$this->view->finais                  = true;
		} catch (Exception $e) {
			Agro_Util::informaErroAgronet($e->getMessage());
		}
	}

	public function verificasessaoAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		if (Zend_Auth::getInstance()->hasIdentity()){
			$this->getResponse()->setBody(Zend_Json::encode(true));

		} else {
			$this->getResponse()->setBody(Zend_Json::encode(false));
		}
	}

	private function validarCadastroAnualCorretor($user) : void
    {
        if (
            in_array(
                $user->tp_usuario,
                [Sistema_Model_Usuarios::TIPO_USUARIO_CORRETOR, Sistema_Model_Usuarios::TIPO_USUARIO_PREPOSTO]
            )
        ) {
            $modelCadastroAnual =  new Sistema_Model_CorretoresPeriodoCadastroAnual();
            $modelCorretor = new Sistema_Model_Corretores();

            if ($user->tp_usuario === Sistema_Model_Usuarios::TIPO_USUARIO_PREPOSTO) {
                $rowCorretor = (new Sistema_Model_Prepostos())->getCorretorByUsuario($user->id);
            } else {
                $rowCorretor = $modelCorretor->findByUser($user->id);
            }

            if ((int) $rowCorretor['id_status'] === Sistema_Model_Corretores::ID_STATUS_CONCLUIDO_FINALIZADO) {
                return;
            }

            $idStatusAtualizacaoCadastro = Sistema_Model_Corretores::ID_STATUS_ATUALIZACAO_CADASTRO;
            $registroCorretorCadastroAnual = $modelCadastroAnual->getByCorretor($rowCorretor['id'], date('Y-m-d'), false);

            if (!empty($registroCorretorCadastroAnual) && !$registroCorretorCadastroAnual['fl_atualizacao_iniciada']) {
                $registroCorretorCadastroAnual = $registroCorretorCadastroAnual->toArray();

                $rowCorretor = $modelCorretor->salvarCorretor([
                    'id' => $registroCorretorCadastroAnual['id_corretor'],
                    'id_status' => $idStatusAtualizacaoCadastro
                ]);

                (new Sistema_Model_PrepostosPeriodoCadastroAnual())->salvarSublogins(
                    $registroCorretorCadastroAnual,
                    $modelCorretor
                );
            }

            if ($user->tp_usuario === Sistema_Model_Usuarios::TIPO_USUARIO_CORRETOR) {
                $idStatusEmAndamento = Sistema_Model_Corretores::ID_STATUS_EM_ANDAMENTO;

                if (
                    in_array($rowCorretor['id_status'], [$idStatusEmAndamento, $idStatusAtualizacaoCadastro])
                    && !empty($registroCorretorCadastroAnual)
                ) {
                    $this->redirect("/sistema/corretor/form/id/{$rowCorretor['id']}");
                }
            }
        }
    }

    private function validarAuxiliarVistoriador($user)
    {
        $tiposUsuario = [
            Sistema_Model_Usuarios::TIPO_USUARIO_HELPER,
            Sistema_Model_Usuarios::TIPO_USUARIO_MANAGER,
            Sistema_Model_Usuarios::TIPO_USUARIO_VISTORIADOR
        ];

        if (!in_array($user->tp_usuario, $tiposUsuario)) {
            return true;
        }

        $row = (new Sistema_Model_VistoriadoresStatus())->getStatusVistoriadorByUsuario($user->id)->toArray();

        if (!empty($row)) {
            $url = "/sistema/vistoriadoresauxiliares/form/id/{$row[0]['id_funcionario']}/ocultarMenu/1";

            if (count($row) === 1 && $row[0]['fl_cadastro_inicial'] === true) {
                $url .= "/fl_cadastro_inicial/1";
                $this->_redirect($url);
            }

            $statusAtual = current($row);

            if ($statusAtual['ds_chave'] !== Sistema_Model_VistoriadoresStatus::DS_CHAVE_CONFERIDO) {
                $this->_redirect($url);
            }
        }

        return true;
    }

    private function cancelarSolicitacoesEndosso($usuario)
    {
        $modelEndossoSolicitacao = new Endosso_Model_Solicitacao();
        $rowsSolicitacoes = $modelEndossoSolicitacao->fetchAll([
          "id_usuario_criacao = {$usuario->id}",
          "id_status = " . Endosso_Model_Solicitacao::ID_STATUS_SOLICITACAO_NAO_FINALIZADA
        ])->toArray();

        foreach ($rowsSolicitacoes as $solicitacao) {
            $registroSolicitacaoStatus = (new Endosso_Model_SolicitacaoStatus())->fetchRow("id_solicitacao = {$solicitacao['id']}", 'id DESC');

            if (!empty($registroSolicitacaoStatus)) {
                $diferencaDias = abs(Agro_Util::contarDiasEntreDatas($registroSolicitacaoStatus->dt_criacao, date('Y-m-d')));

                if ($diferencaDias > 7) {
                    $solicitacao['id_status'] = Endosso_Model_Solicitacao::ID_STATUS_CANCELADO;
                    $solicitacao['fl_ocorreu_sinistro'] = (bool)$solicitacao['fl_ocorreu_sinistro'] === true ? 't' : 'f';
                    $solicitacao['salvaHistoricoStatus'] = true;
                    $solicitacao['cancelamentoAutomatico'] = true;
                    $solicitacao['ds_observacao'] = 'Solicitação cancelada por não ter sido finalizada.';

                    $modelEndossoSolicitacao->save($solicitacao);
                }
            }
        }
    }
}
