public async Task TestEmailSending()
        {
            var message = new SNSEvent
            {
                Records = new List <SNSRecord> {
                    new SNSRecord()
                }
            };

            var request = new SendEmailSNSRequest
            {
                From = "*****@*****.**",
                To   = new List <string> {
                    "*****@*****.**"
                },
                Body     = "test",
                Subject  = "Test",
                HtmlBody = "",
                FromName = "Rahul"
            };

            var context = new TestLambdaContext();

            message.Records[0].Sns.Message = Newtonsoft.Json.JsonConvert.SerializeObject(request);
            var lambda = new NotificationFunction();

            var response = await lambda.TriggerEmailAsync(message, context);

            Assert.NotNull(response);
        }
        public override BotMessage BuildMsg()
        {
            NotificationList = NotificationFunction.NotificationList();

            base.PageSize = 5;

            Pages = base.BuildDataPage <MyTelegramBot.Notification>(NotificationList, base.PageSize);

            CreateNotificationBtn = BuildInlineBtn("Создать рассылку", BuildCallData(NotificationBot.NotificationCreateCmd, NotificationBot.ModuleName));

            MessageReplyMarkup = PageNavigatorKeyboard <MyTelegramBot.Notification>(Pages,
                                                                                    NotificationBot.NotificationViewCmd, NotificationBot.ModuleName, BackToAdminPanelBtn(),
                                                                                    new InlineKeyboardButton[] { CreateNotificationBtn });

            base.TextMessage = "Список рассылок:" + NewLine() + NewLine();

            if (Pages != null && Pages.Count > 0 && Pages.Count >= SelectPageNumber && Pages[SelectPageNumber] != null)
            {
                var page = Pages[SelectPageNumber];

                foreach (var notifi in page)
                {
                    base.TextMessage += "Рассылка №" + notifi.Id.ToString() + " /notifi" + notifi.Id.ToString() + NewLine() +
                                        "Дата:" + notifi.DateAdd.ToString() + NewLine() + NewLine();
                }
            }

            return(this);
        }
        private async Task <IActionResult> SendNewNotifi()
        {
            var Followers = FollowerFunction.GetFollowerList();

            var Notifi = NotificationFunction.GetNotification(NotifiId);

            if (Notifi != null && !Notifi.Sended)
            {
                Notifi = NotificationFunction.NotificationIsSended(NotifiId);

                await SendNotifiEditor(Notifi);

                foreach (var follower in Followers)
                {
                    await SendMessage(follower.ChatId, new BotMessage { TextMessage = Notifi.Text });

                    //пауза три секунды. Если начать отправлять все сразу телегам будет выдавать ошибку.

                    System.Threading.Thread.Sleep(300);
                }
            }

            if (Notifi != null && Notifi.Sended)
            {
                await AnswerCallback("Рассылка уже отправлена", true);
            }

            if (Notifi == null)
            {
                await AnswerCallback("Данные отсутствуют", true);
            }

            return(OkResult);
        }
        private async Task <IActionResult> SendNotifiEditor(int Id, int MessageId = 0)
        {
            var notifi = NotificationFunction.GetNotification(Id);

            if (notifi != null)
            {
                BotMessage = new EditorNotificationMessage(notifi);
                await SendMessage(BotMessage.BuildMsg(), MessageId);

                return(OkResult);
            }

            else
            {
                await AnswerCallback("Данные отсутсвуют", true);

                return(OkResult);
            }
        }
        private async Task <IActionResult> SendNotifiDetails()
        {
            try
            {
                NotifiId = Convert.ToInt32(CommandName.Substring(GetNotificationCmd.Length));

                var Notifi = NotificationFunction.GetNotification(NotifiId);

                if (Notifi != null)
                {
                    BotMessage = new NotificationDetailsMessage(Notifi);
                    await SendMessage(BotMessage.BuildMsg());
                }

                return(OkResult);
            }

            catch
            {
                return(OkResult);
            }
        }
        private async Task <IActionResult> RemoveNotifi()
        {
            var Notifi = NotificationFunction.GetNotification(NotifiId);

            if (Notifi != null && !Notifi.Sended && NotificationFunction.RemoveNotification(NotifiId) > 0)
            {
                await AnswerCallback("Удалено", true);
                await SendNotifiList();
            }

            if (Notifi == null)
            {
                await AnswerCallback("Данные отсутствуют", true);
            }

            if (Notifi != null && Notifi.Sended)
            {
                await AnswerCallback("Рассылка уже отправлена пользователям", true);
            }

            return(OkResult);
        }
        private async Task <IActionResult> AddNotifi()
        {
            var list = NotificationFunction.NotificationList();

            if (list.LastOrDefault() != null && list.LastOrDefault().DateAdd.Value.Year == DateTime.Now.Year &&
                list.LastOrDefault().DateAdd.Value.DayOfYear == DateTime.Now.DayOfYear)
            {
                await SendMessage(new BotMessage { TextMessage = "Сегодня уже была сделана рассылка. Попробуйте завтра" });
            }

            else
            {
                string text = base.ReplyToMessageText;

                var notifi = NotificationFunction.InsertNotification(text, FollowerId);

                BotMessage = new EditorNotificationMessage(notifi);

                await SendMessage(BotMessage.BuildMsg());
            }

            return(OkResult);
        }