Ejemplo n.º 1
0
        public async Task UpdateNewMailMessage(string chatId, SendKeyboardState state, NmStoreModel model, string draftId = "", string errorMessage = "Unidentified error")
        {
            var    keyboard = _sendKeyboardFactory.CreateKeyboard(state, model, draftId);
            string message  = null;

            switch (state)
            {
            case SendKeyboardState.Drafted:
                message = _restoreFromDraftMessageText;
                break;

            case SendKeyboardState.SentSuccessful:
                message = BuildNewMailMessage(model, state);
                break;

            case SendKeyboardState.SentWithError:
                message = $"<b>Error while sending a message:</b>{Environment.NewLine}{errorMessage}";
                break;

            default:
                message = BuildNewMailMessage(model, state);
                break;
            }

            await _telegramMethods.EditMessageText(message, chatId, model.MessageId.ToString(), null, ParseMode.Html, true, keyboard);
        }
Ejemplo n.º 2
0
        public async Task <TextMessage> SpecifyNewMailMessage(string chatId, SendKeyboardState state, NmStoreModel model = null)
        {
            var keyboard = _sendKeyboardFactory.CreateKeyboard(state, model);
            var message  = BuildNewMailMessage(model, state);

            return(await _telegramMethods.SendMessage(chatId, message, ParseMode.Html, true, false, null, keyboard));
        }
Ejemplo n.º 3
0
        public SendKeyboard CreateKeyboard(SendKeyboardState state, NmStoreModel model = null, string draftId = "")
        {
            SendKeyboard keyboard;

            switch (state)
            {
            case SendKeyboardState.Init:
                keyboard = new InitKeyboard(null);
                break;

            case SendKeyboardState.Store:
                keyboard = new StoreKeyboard(model);
                break;

            case SendKeyboardState.Continue:
                keyboard = new InitKeyboard(model);
                break;

            case SendKeyboardState.Drafted:
            case SendKeyboardState.SentWithError:
                keyboard = new DraftedKeyboard(model, draftId);
                break;

            case SendKeyboardState.SentSuccessful:
                keyboard = null;
                break;

            default:
                return(null);
            }
            if (keyboard == null)
            {
                return(null);
            }
            keyboard.CreateInlineKeyboard();
            return(keyboard);
        }
Ejemplo n.º 4
0
        private string BuildNewMailMessage(NmStoreModel model, SendKeyboardState state)
        {
            string headerText;

            switch (state)
            {
            case SendKeyboardState.Init:
            case SendKeyboardState.Continue:
                headerText = _newMessageMainText;
                break;

            case SendKeyboardState.SentSuccessful:
                headerText = _newMessageSuccessfulSentText;
                break;

            default:
                headerText = "";
                break;
            }
            var message = new StringBuilder(headerText);

            if (model == null)
            {
                message.AppendLine(_newMessageTipText);
                return(message.ToString());
            }
            var iterFunc = new Action <StringBuilder, List <string>, string>((builder, collection, label) =>
            {
                if (collection == null || !collection.Any())
                {
                    return;
                }
                builder.Append($"<b>{label}:</b> ");
                collection.IndexEach((item, i) =>
                {
                    builder.Append($"<code>{Path.GetFileName(item)}</code>"); //! GetFileName
                    if (i < collection.Count - 1)
                    {
                        builder.Append(", ");
                    }
                });
            });

            message.AppendLine();
            iterFunc(message, model.To.Select(a => a.Email).ToList(), "To");
            message.AppendLine();
            iterFunc(message, model.Cc.Select(a => a.Email).ToList(), "Cc");
            message.AppendLine();
            iterFunc(message, model.Bcc.Select(a => a.Email).ToList(), "Bcc");
            message.AppendLine();
            if (model.Subject != null)
            {
                message.AppendLine($"<b>Subject:</b> {model.Subject}");
            }
            if (model.Message != null)
            {
                message.AppendLine("<b>Message:</b>");
                message.AppendLine(model.Message);
            }
            message.AppendLine();
            iterFunc(message, model.File.Select(f => f.OriginalName).ToList(), $"{Emoji.PAPER_CLIP}Attachments"); //Emoji probable cause of error, because it will be send inside <b> tag
            return(message.ToString());
        }
Ejemplo n.º 5
0
 public async Task SaveAsDraftQuestionMessage(string chatId, SendKeyboardState state)
 {
     var keyboard = _sendKeyboardFactory.CreateKeyboard(state);
     await _telegramMethods.SendMessage(chatId, _storeDraftMessageText, ParseMode.Html, false, false, null, keyboard);
 }