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); } }
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; } }
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); } } }
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); } }
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); } }
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); } } } } }