コード例 #1
0
        private bool EnviarEmailConversa(PTVComunicador comunicador, BancoDeDados bancoDeDados)
        {
            try
            {
                Email          email               = null;
                PTVConversa    conversa            = comunicador.Conversas[0];
                PTVComunicador comunicadorCompleto = _da.ObterComunicadorSemConversas(comunicador.PTVId, bancoDeDados);
                if (!String.IsNullOrEmpty(conversa.Texto))
                {
                    string textoEmail = _configSys.Obter <String>(ConfiguracaoSistema.KeyModeloTextoEmailComunicadorSolicitacaoPTV);

                    if (!String.IsNullOrWhiteSpace(textoEmail))
                    {
                        Dictionary <String, String> emailKeys = new Dictionary <string, string>();

                        emailKeys.Add("[data da conclusão]", conversa.DataConversa.DataHoraTexto);
                        emailKeys.Add("[número do PTV]", comunicadorCompleto.PTVNumero.ToString());
                        emailKeys.Add("[Situação]", _da.BuscarSituacaoPTV(comunicadorCompleto.PTVId, bancoDeDados));

                        foreach (string key in emailKeys.Keys)
                        {
                            textoEmail = textoEmail.Replace(key, emailKeys[key]);
                        }

                        email         = new Email();
                        email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla);
                        email.Texto   = textoEmail;
                        email.Tipo    = eEmailTipo.ComunicadorPTV;
                        email.Codigo  = conversa.Id;
                    }
                }

                if (email != null)
                {
                    List <String> lstEmail = _da.ObterEmailsCredenciado(comunicador.PTVId, bancoDeDados);

                    if (lstEmail != null && lstEmail.Count > 0)
                    {
                        email.Destinatario = String.Join(", ", lstEmail.ToArray());

                        EmailBus emailBus = new EmailBus();
                        emailBus.Enviar(email);
                    }
                }
            }
            catch (Exception ex)
            {
                Validacao.AddErro(ex);
            }

            return(Validacao.EhValido);
        }
コード例 #2
0
        public bool Analisar(PTV eptv)
        {
            try
            {
                Tecnomapas.EtramiteX.Credenciado.Model.ModuloPTV.Business.PTVBus ptvCredenciadoBus = new Tecnomapas.EtramiteX.Credenciado.Model.ModuloPTV.Business.PTVBus();
                PTV eptvBanco = ptvCredenciadoBus.Obter(eptv.Id);

                if (!_validar.Analisar(eptv, eptvBanco))
                {
                    return(false);
                }

                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDadosInterno = BancoDeDados.ObterInstancia(SchemaUsuarioInterno))
                {
                    bancoDeDadosInterno.IniciarTransacao();

                    using (BancoDeDados bancoDeDadosCredenciado = BancoDeDados.ObterInstancia(SchemaUsuarioCredenciado))
                    {
                        bancoDeDadosCredenciado.IniciarTransacao();

                        _da.AnalizarEPTV(eptv, bancoDeDadosCredenciado);

                        if (eptv.Situacao == (int)eSolicitarPTVSituacao.Aprovado)
                        {
                            eptvBanco.ValidoAte              = eptv.ValidoAte;
                            eptvBanco.ResponsavelTecnicoId   = eptv.ResponsavelTecnicoId;
                            eptvBanco.ResponsavelTecnicoNome = eptv.ResponsavelTecnicoNome;
                            eptvBanco.LocalEmissaoId         = eptv.LocalEmissaoId;
                            eptvBanco.TemAssinatura          = _da.ExisteAssinaturaDigital(eptv.ResponsavelTecnicoId);

                            if (!_validar.Importar(eptvBanco))
                            {
                                return(Validacao.EhValido);
                            }

                            if (eptvBanco.Anexos.Any())
                            {
                                var arquivoBusCred = new ArquivoBus(eExecutorTipo.Credenciado);
                                var arquivoBusInst = new ArquivoBus(eExecutorTipo.Interno);
                                foreach (var anexo in  eptvBanco.Anexos)
                                {
                                    anexo.Arquivo = arquivoBusInst.Salvar(arquivoBusCred.Obter(anexo.Arquivo.Id.Value));
                                }
                            }

                            try
                            {
                                _da.Importar(eptvBanco, bancoDeDadosInterno);
                            }
                            catch (Exception exc)
                            {
                                if (exc.Message.Contains("UK_TAB_PTV_EPTV"))
                                {
                                    Validacao.Add(new Mensagem {
                                        Texto = "O EPTV já foi importado para o institucional.", Tipo = eTipoMensagem.Advertencia
                                    });
                                    return(Validacao.EhValido);
                                }

                                throw exc;
                            }
                        }

                        string textoEmail = string.Empty;
                        switch (eptv.Situacao)
                        {
                        case 3:
                            eptvBanco.SituacaoTexto = "Aprovado";
                            textoEmail = _configSys.Obter <String>(ConfiguracaoSistema.KeyModeloTextoEmailAprovarSolicitacaoPTV);
                            break;

                        case 4:
                            eptvBanco.SituacaoTexto = "Rejeitado";
                            textoEmail = _configSys.Obter <String>(ConfiguracaoSistema.KeyModeloTextoEmailRejeitarSolicitacaoPTV) + eptv.SituacaoMotivo;
                            break;

                        case 5:
                            eptvBanco.SituacaoTexto = "Fiscalização Agendada";
                            textoEmail = _configSys.Obter <String>(ConfiguracaoSistema.KeyModeloTextoEmailAgendarFiscalizacaoSolicitacaoPTV);
                            break;
                        }

                        #region [ Enviar E-mail ]

                        if (eptv.Situacao == (int)eSolicitarPTVSituacao.Bloqueado)
                        {
                            PTVComunicador comunicador = new PTVComunicador();
                            comunicador.Id                  = _da.ObterIDComunicador(eptv.Id);
                            comunicador.PTVId               = eptv.Id;
                            comunicador.PTVNumero           = eptv.Numero;
                            comunicador.liberadoCredenciado = true;

                            var conversa = new PTVConversa();
                            conversa.Texto = eptv.SituacaoMotivo;
                            comunicador.Conversas.Add(conversa);

                            SalvarConversa(comunicador, bancoDeDadosInterno, bancoDeDadosCredenciado);
                        }
                        else
                        {
                            var emailKeys = new Dictionary <string, string>
                            {
                                { "[data situacao]", DateTime.Today.ToShortDateString() },
                                { "[hora situacao]", DateTime.Now.ToShortTimeString() },
                                { "[numero]", eptvBanco.Numero.ToString() },
                                { "[local vistoria]", eptvBanco.LocalVistoriaTexto },
                                { "[hora vistoria]", eptv.DataHoraVistoriaTexto }
                            };

                            foreach (var item in emailKeys)
                            {
                                textoEmail = textoEmail.Replace(item.Key, item.Value);
                            }

                            var email = new Email();
                            email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla);
                            email.Texto   = textoEmail;
                            email.Tipo    = eEmailTipo.AnaliseEPTV;
                            email.Codigo  = eptv.Id;

                            List <String> lstEmail = _da.ObterEmailsCredenciado(eptv.Id, bancoDeDadosCredenciado);

                            if (lstEmail != null && lstEmail.Count > 0)
                            {
                                email.Destinatario = String.Join(", ", lstEmail.ToArray());

                                EmailBus emailBus = new EmailBus();
                                emailBus.Enviar(email, bancoDeDadosInterno);
                            }
                        }

                        #endregion

                        bancoDeDadosInterno.Commit();
                        bancoDeDadosCredenciado.Commit();
                    }
                }
            }
            catch (Exception ex)
            {
                Validacao.AddErro(ex);
            }

            return(Validacao.EhValido);
        }