예제 #1
0
 public async Task <bool> SendReminders()
 {
     try
     {
         var remindersToSend = _unitOfWork.Reminders.GetAllRemindersActive();
         foreach (var reminder in remindersToSend)
         {
             if ((DateTime.Now.Date + reminder.RemindTimeToSend) <= DateTime.Now && reminder.RemindedAt.Date < DateTime.Now.Date) //considerar enviar
             {
                 if (reminder.RemindedAt == new DateTime())
                 {
                     await _telegramBotApp.sendMessageAsync(reminder.TelegramUser.TelegramChatId, reminder.TextMessage);
                 }
                 else if (reminder.RemindedAt.AddMinutes(-5) < DateTime.Now)
                 {
                     await _telegramBotApp.sendMessageAsync(reminder.TelegramUser.TelegramChatId, reminder.TextMessage);
                 }
                 reminder.SetReminded();
                 _unitOfWork.Reminders.Update(reminder);
             }
         }
         _unitOfWork.Complete();
         return(true);
     }
     catch (Exception e)
     {
         e.LogExceptionToConsole();
         return(false);
     }
 }
        public async Task <bool> SendRiverLevel()
        {
            try
            {
                string riverLevelHour = "", riverLevel = "";
                RiverLevelAlertaBlu(out riverLevel, out riverLevelHour);

                if (string.IsNullOrEmpty(riverLevel) || string.IsNullOrEmpty(riverLevelHour))
                {
                    //As vezes acontece de o site da prefeitura estar com algum dado vazio e não pode ser enviado nesses casos
                    return(true);
                }
                if (lastRiverLevel == riverLevel + riverLevelHour)
                {
                    //Se o nível e o horário da medição continuam o mesmo, não deve enviar o lembrete
                    return(true);
                }

                lastRiverLevel = riverLevel + riverLevelHour;

                foreach (var user in _unitOfWork.TelegramUsers.GetAllUsersWithSendRiverActivate())
                {
                    await _telegramBotApp.sendMessageAsync(user.TelegramChatId, $"O nível do rio está {riverLevel} às {riverLevelHour}");
                }
                return(true);
            }
            catch (Exception e)
            {
                e.LogExceptionToConsole();
                return(false);
            }
        }