コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        public override UtilRetorno gerarNotificacao(object Origem)
        {
            List <EventoInscricao> listaInscricoes = (List <EventoInscricao>)Origem;

            var ORetorno = UtilRetorno.newInstance(false);

            var idEvento     = listaInscricoes.FirstOrDefault()?.idEvento;
            var tituloEvento = listaInscricoes.FirstOrDefault()?.Evento.titulo;

            var OMensagem = this.MensagemEmailConsultaBL.listar(IdentificacaoMensagemEmailConst.EVENTO_ENVIO_CERTIFICADO).FirstOrDefault(x => x.idReferencia == idEvento) ?? new MensagemEmail();

            if (OMensagem.corpoEmail.isEmpty())
            {
                ConfiguracaoNotificacao OConfiguracao = ConfiguracaoNotificacaoBL.getInstance.carregar();

                OMensagem.corpoEmail = OConfiguracao.corpoEmailEnvioCerficadoEvento;
            }

            if (OMensagem.titulo.isEmpty())
            {
                OMensagem.titulo = EventoEmailsConst.tituloEmailEnvioCertificado;
            }

            if (OMensagem.corpoEmail.isEmpty())
            {
                OMensagem.corpoEmail = EventoEmailsConst.corpoEmailEnvioCertificado;
            }

            var ONotificacao = new NotificacaoSistema();

            ONotificacao.flagEmail = true;

            ONotificacao.flagTodosAssociados = false;

            ONotificacao.flagAssociadosEspecificos = true;

            ONotificacao.flagSistema = false;

            ONotificacao.flagMobile = false;

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.CERTIFICADO_EVENTO;

            ONotificacao.titulo = OMensagem.titulo;

            ONotificacao.notificacao = OMensagem.corpoEmail;

            ONotificacao.dtProgramacaoEnvio = DateTime.Now;

            ONotificacao.titulo = ONotificacao.titulo.Replace("#TITULO_EVENTO#", tituloEvento);

            var flagSucesso = this.NotificacaoSistemaCadastroBL.salvar(ONotificacao);

            if (!flagSucesso)
            {
                ORetorno.flagError = true;

                ORetorno.listaErros.Add("Houve algum problema ao gerar o e-mail de envio de certificado. Tente novamente mais tarde.");

                return(ORetorno);
            }

            TarefaSistema OTarefaSistema = this.gerarTarefa(ONotificacao);

            this.vincularDestinos(listaInscricoes, ONotificacao, OTarefaSistema);

            return(ORetorno);
        }
コード例 #2
0
        public ActionResult gerarBoletos()
        {
            int idContribuicao = UtilRequest.getInt32("idContribuicao");

            int[] idsAssociados = UtilRequest.getListInt("idsAssociados").ToArray();

            var ViewModel = new PainelCobrancaVM();

            ViewModel.carregarDadosContribuicao(idContribuicao, idsAssociados);

            StringBuilder msgRetorno = new StringBuilder();

            if (ViewModel.listaIsentos.Count > 0)
            {
                foreach (var itemIsento in ViewModel.listaIsentos)
                {
                    msgRetorno.AppendLine($"O associado {itemIsento.AssociadoContribuicao.nomeAssociado} não terá o boleto gerado pois é um associado isento.");
                }
            }

            if (ViewModel.listaQuitados.Count > 0)
            {
                foreach (var itemQuitado in ViewModel.listaQuitados)
                {
                    msgRetorno.AppendLine($"O associado {itemQuitado.AssociadoContribuicao.nomeAssociado} não terá o boleto gerado pois é o pagamento já foi realizado.");
                }
            }

            var idsBoletosGerados = ViewModel.carregarBoletos().Select(x => x.idAssociadoContribuicao).ToList();

            var listaPendentes = ViewModel.listaCobrancas.Where(x => !x.AssociadoContribuicao.flagQuitado() && !idsBoletosGerados.Contains(x.AssociadoContribuicao.id)).ToList();


            if (!listaPendentes.Any())
            {
                return(Json(new { error = true, message = "Não foi encontrada nenhuma cobrança em aberto para geração de boletos." }, JsonRequestBehavior.AllowGet));
            }

            var OTarefa = new TarefaSistema();

            OTarefa.idReferencia = idContribuicao;

            OTarefa.idUsuarioInicializacao = User.id();

            OTarefa.titulo = idsAssociados.Length == 0 ? $"Geração de boletos de cobrança para todos os associados: {ViewModel.Contribuicao.descricao}" : $"Geração de boletos de cobrança para associados específicos: {ViewModel.Contribuicao.descricao}";

            //Criar a nova tarefa no sistema
            var OTarefaGeracaoBL = TarefaGerarBoletosContribuicao.getInstance;

            var RetornoTarefa = OTarefaGeracaoBL.criar(OTarefa, false);

            if (RetornoTarefa.flagError)
            {
                return(Json(new { error = true, message = RetornoTarefa.listaErros.FirstOrDefault() }, JsonRequestBehavior.AllowGet));
            }

            var listaNovosItens = listaPendentes.Select(x =>
                                                        new AssociadoContribuicaoBoletoGeracao {
                idOrganizacao           = User.id(),
                idAssociadoContribuicao = x.AssociadoContribuicao.id,
                dtVencimento            = x.AssociadoContribuicao.dtVencimentoOriginal,
                idUsuarioGeracao        = User.id(),
                idTarefa = OTarefa.id
            }).ToList();

            //Salvar a lista de contribuicoes que precisam ser geradas
            OAssociadoContribuicaoBoletoGeracaoBL.salvar(listaNovosItens);

            //Registro início do processamento
            OTarefaGeracaoBL.iniciarProcessamento();

            //Realizar primeira execucao
            OTarefaGeracaoBL.executar();

            return(Json(new { error = false, message = $"O sistema irá gerar boletos para {listaNovosItens.Count} cobranças. Isso poderá durar alguns minutos. Ao término da execução, você será notificado." }, JsonRequestBehavior.AllowGet));
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        private void vincularDestinos(List <EventoInscricao> listaInscricoes, NotificacaoSistema ONotificacao, TarefaSistema OTarefaSistema)
        {
            var listaNotificacoesVinculadas = new List <NotificacaoSistemaEnvio>();

            foreach (var OInscricao in listaInscricoes)
            {
                var listaEmail = new List <string>();

                listaEmail.Add(OInscricao.emailPrincipal);
                listaEmail.Add(OInscricao.emailSecundario);

                foreach (var email in listaEmail)
                {
                    var OEnvio = new NotificacaoSistemaEnvio();

                    OEnvio.idNotificacao = ONotificacao.id;

                    OEnvio.idReferencia = OInscricao.id;

                    OEnvio.nome = OInscricao.nomeInscrito;

                    OEnvio.email = email;

                    OEnvio.idTarefa = OTarefaSistema?.id;

                    string parametrosPersonalizados = this.montarParametrosPersonalizados(OInscricao).abreviar(8000);

                    OEnvio.personalizacao = parametrosPersonalizados;

                    if (!UtilValidation.isEmail(OEnvio.email))
                    {
                        OEnvio.flagExcluido = true;

                        OEnvio.motivoExclusao = "O e-mail configurado não é válido.";
                    }

                    listaNotificacoesVinculadas.Add(OEnvio);
                }
            }

            this.NotificacaoSistemaCadastroBL.salvarDetalhesNotificacao(listaNotificacoesVinculadas);
        }