Пример #1
0
        private void CarregarConfiguracaoNotificacao()
        {
            try
            {
                ConfiguracaoNotificacaoAgenda configuracaoNotificacaoAgenda = new ConfiguracaoNotificacaoAgenda();

                if (this.txtTempo.Text.Length > 0)
                {
                    configuracaoNotificacaoAgenda.Tempo = Convert.ToInt32(this.txtTempo.Text);
                }

                if (this.ddlUnidadeTempo.SelectedIndex > 0)
                {
                    configuracaoNotificacaoAgenda.UnidadeTempoAgenda.UnidadeTempoAgendaID = Convert.ToInt32(this.ddlUnidadeTempo.SelectedValue);
                }

                List <ConfiguracaoNotificacaoAgenda> configuracaoNotificacaoAgendas
                    = new ConfiguracaoNotificacaoAgendaRepository()
                      .Retreave(configuracaoNotificacaoAgenda);

                VsConfiguracaoNotificacaoAgenda           = configuracaoNotificacaoAgendas;
                this.gvConfiguracaoNotificacao.DataSource = configuracaoNotificacaoAgendas;
                this.gvConfiguracaoNotificacao.DataBind();
                this.lblTotalRegistros.Text     = configuracaoNotificacaoAgendas.Count.ToString();
                this.infoTotalRegistros.Visible = true;
            }
            catch (Exception e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                this.msgDialog.Show("Erro", "Ocorreu uma falha ao carregar os registros de configurações de notificações.", UserControl.Message.Type.Error);
            }
        }
Пример #2
0
        protected void gvConfiguracaoNotificacao_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ConfiguracaoNotificacaoAgenda configuracaoNotificacao = (ConfiguracaoNotificacaoAgenda)e.Row.DataItem;

                Literal litTempo        = (Literal)e.Row.FindControl("litTempo");
                Literal litUnidadeTempo = (Literal)e.Row.FindControl("litUnidadeTempo");

                litTempo.Text        = configuracaoNotificacao.Tempo.ToString();
                litUnidadeTempo.Text = configuracaoNotificacao.UnidadeTempoAgenda.Unidade;
            }
        }
Пример #3
0
        private void EnviarSMS(Agenda agenda, ConfiguracaoNotificacaoAgenda configuracao, String mensagemSMS)
        {
            if (ConfigurationManager.AppSettings["ENVIAR_SMS"] != null)
            {
                String numeroTelefone = String.Format("{0}{1}", CodigoE164, agenda.MedicoExecucaoAgenda.Celular);

                if (Convert.ToBoolean(ConfigurationManager.AppSettings["ENVIAR_SMS"]))
                {
                    String MessageId = TwilioServices.SendSMS(numeroTelefone, mensagemSMS);
                    ConsoleLogMessage("SMS enviado", ConsoleMessageType.SUCCESS);

                    LogSmsAgenda logSmsAgenda = new LogSmsAgenda();
                    logSmsAgenda.Agenda               = agenda;
                    logSmsAgenda.SMSEnviado           = true;
                    logSmsAgenda.SMSDataProcessamento = DateTime.Now;
                    logSmsAgenda.SMSMessageID         = MessageId;
                    logSmsAgenda.Observacao           =
                        String.Format
                        (
                            "Origem SERVIÇO: mensagem destinado ao nº {0} como lembrete ({1} {2} antes), enviada com sucesso ao servidor de serviço SMS."
                            , numeroTelefone
                            , configuracao.Tempo
                            , configuracao.UnidadeTempoAgenda.Unidade
                        );
                    new LogSmsAgendaRepository().Create(logSmsAgenda);
                    ConsoleLogMessage("Log gravado", ConsoleMessageType.SUCCESS);
                }
                else
                {
                    ConsoleLogMessage("SMS não foi enviado.", ConsoleMessageType.WARNING);
                    LogSmsAgenda logSmsAgenda = new LogSmsAgenda();
                    logSmsAgenda.Agenda               = agenda;
                    logSmsAgenda.SMSEnviado           = false;
                    logSmsAgenda.SMSDataProcessamento = DateTime.Now;
                    logSmsAgenda.SMSMessageID         = null;
                    logSmsAgenda.Observacao           =
                        String.Format
                        (
                            "Origem SERVIÇO: mensagem destinado ao nº {0} como lembrete ({1} {2} antes) não foi enviada, o serviço de envio de SMS está desabilitado. Utilize a chave ENVIAR_SMS do app.config da aplicação."
                            , numeroTelefone
                            , configuracao.Tempo
                            , configuracao.UnidadeTempoAgenda.Unidade
                        );
                    new LogSmsAgendaRepository().Create(logSmsAgenda);
                    ConsoleLogMessage("Log gravado", ConsoleMessageType.SUCCESS);
                }
            }
        }
Пример #4
0
 private void Excluir(Int32 id)
 {
     try
     {
         ConfiguracaoNotificacaoAgenda configuracaoNotificacaoAgenda = new ConfiguracaoNotificacaoAgenda();
         configuracaoNotificacaoAgenda.ConfiguracaoNotificacaoAgendaID = id;
         new ConfiguracaoNotificacaoAgendaRepository()
         .Delete(configuracaoNotificacaoAgenda);
     }
     catch (Exception e)
     {
         Log.Create(e);
         Email.Send("Agendamento de congelação - falha na aplicação", e);
         this.msgDialog.Show("Erro", "Ocorreu uma falha ao excluir o registro.", UserControl.Message.Type.Error);
     }
 }
Пример #5
0
        private void CarregarParaEdicao(Int32 id)
        {
            try
            {
                ConfiguracaoNotificacaoAgenda configuracao = new ConfiguracaoNotificacaoAgenda();
                configuracao =
                    new ConfiguracaoNotificacaoAgendaRepository()
                    .Details(new ConfiguracaoNotificacaoAgenda()
                {
                    ConfiguracaoNotificacaoAgendaID = id
                });

                this.txtTempo.Text = configuracao.Tempo.ToString();
                this.ddlUnidadeTempo.SelectedValue = configuracao.UnidadeTempoAgenda.UnidadeTempoAgendaID.Value.ToString();
            }
            catch (Exception e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                this.msgDialog.Show("Erro", "Ocorreu uma falha ao carregar o registro para edição.", UserControl.Message.Type.Error);
            }
        }
Пример #6
0
        private void IniciarProcesso()
        {
            // Consultar as agendas disponíveis (agendas ativas com data de evento futura e com estado = "Confirmado").
            List <Agenda> agendas = new AgendaRepository()
                                    .Retreave(new Agenda(), null, null)
                                    .Where(a => a.DataHoraEvento.Value > DateTime.Now &&
                                           a.Ativo.Value == true &&
                                           a.EstadoAgenda.Estado.Equals("Confirmado"))
                                    .ToList();

            foreach (Agenda agenda in agendas)
            {
                // Verifica se existem notificações ativas e não utilizadas para a agenda.
                List <NotificacaoAgenda> notificacoes = new NotificacaoAgendaRepository()
                                                        .Retreave
                                                        (
                    new NotificacaoAgenda()
                {
                    Agenda = agenda
                    ,
                    Utilizado = false
                    ,
                    Ativo = true
                }
                                                        );

                // Existem notificações para a agenda?
                if (notificacoes.Count > 0)
                {
                    /*
                     * Verificar para cada notificação se chegou o momento de
                     * enviar(18, 4 ou 2 horas antes da data/hora evento da agenda).
                     */
                    foreach (NotificacaoAgenda notificacao in notificacoes)
                    {
                        // Consulta a configuração
                        ConfiguracaoNotificacaoAgenda configuracao = new ConfiguracaoNotificacaoAgenda();
                        configuracao = new ConfiguracaoNotificacaoAgendaRepository()
                                       .Details
                                       (
                            new ConfiguracaoNotificacaoAgenda()
                        {
                            ConfiguracaoNotificacaoAgendaID =
                                notificacao.ConfiguracaoNotificacaoAgenda.ConfiguracaoNotificacaoAgendaID
                        }
                                       );

                        DateTime inicioNotificacao = agenda.DataHoraEvento.Value;

                        // Verifica a unidade de tempo da configuração para determinar a data/hora inicial da notificação.
                        switch (configuracao.UnidadeTempoAgenda.Unidade)
                        {
                        case "Minutos":
                            inicioNotificacao = inicioNotificacao.AddMinutes(-Convert.ToDouble(configuracao.Tempo));
                            break;

                        case "Horas":
                            inicioNotificacao = inicioNotificacao.AddHours(-Convert.ToDouble(configuracao.Tempo));
                            break;

                        case "Dias":
                            inicioNotificacao = inicioNotificacao.AddDays(-Convert.ToDouble(configuracao.Tempo));
                            break;

                        case "Semanas":
                            inicioNotificacao = inicioNotificacao.AddDays(-Convert.ToDouble(configuracao.Tempo) * 7);
                            break;

                        default:
                            break;
                        }

                        /*
                         * Verifica se a data/hora do momento está dentro do intervalo:
                         * data/hora de início da notificação e a data/hora evento (fim) da agenda.
                         */
                        if (DateTime.Now >= inicioNotificacao && DateTime.Now <= agenda.DataHoraEvento.Value)
                        {
                            String mensagemSMS =
                                Model.SMS.FormataMensagemSMS
                                (
                                    agenda
                                    , String.Format
                                    (
                                        "Lembrete ({0} {1} antes) para o agendamento de congelação."
                                        , configuracao.Tempo
                                        , configuracao.UnidadeTempoAgenda.Unidade
                                    )
                                );

                            this.EnviarSMS(agenda, configuracao, mensagemSMS);

                            notificacao.Utilizado = true;
                            notificacao.ConfiguracaoNotificacaoAgenda = configuracao;
                            new NotificacaoAgendaRepository().UtilizarNotificacao(notificacao);
                        }
                    }
                }
            }
        }