Esempio n. 1
0
        private void SendMessage(ReminderItem item)
        {
            SendingResultTypes sendingResult      = SendingResultTypes.Failed;
            AggregateException aggregateException = null;
            Exception          exception          = null;

            try
            {
                (sendingResult, aggregateException) = Sender.Send(item.GetChatId(), item.Message);
            }
            catch (Exception e)
            {
                exception = e;
            }

            if (exception == null && aggregateException == null &&
                (sendingResult == SendingResultTypes.Success || sendingResult == SendingResultTypes.WrongText))
            {
                // WrongText пока не отрабатывается никак
                item.NextReminderDate = ReminderItem.CalculateNextReminderDate(
                    item.IsActive,
                    item.FrequencyType,
                    item.DateBegin,
                    item.DateGoal,
                    item.NextReminderDate ?? DateTimeOffset.Now);

                if (item.NextReminderDate == null)
                {
                    item.IsActive = false;
                }
                item.ThreadGuid   = null;
                item.IsProcessing = false;
            }
            else
            {
                item.ThreadGuid       = null;
                item.IsProcessing     = false;
                item.LastSendingError =
                    $"{nameof(sendingResult)}: {sendingResult}\t" +
                    $"{nameof(aggregateException)}: {aggregateException?.Message??"None"}\t" +
                    $"{nameof(exception)}: {exception?.Message??"None"}";
            }

            ((ICruStorage <ReminderItem>)Storage).Update(item);

            //ReminderItem r = item;
            //Console.WriteLine($"Send remainder {r.Id}\t{r.NextReminderDate:HH:mm:ss}\t{r.ThreadGuid}\t{r.Message}"+
            //    $"\tNow {DateTimeOffset.Now:HH:mm:ss}");
        }