public async Task HandleCallbackQSendNewMessage(Query query, SendCallbackData callbackData, Service service) { var nmModel = await _dbWorker.FindNmStoreAsync(query.From); if (nmModel == null) { return; } var userInfoQuery = service.Oauth2Service.Userinfo.Get(); var userinfoResponse = await userInfoQuery.ExecuteAsync(); var userInfo = new UserInfo { Email = userinfoResponse.Email, Name = userinfoResponse.Name }; var draft = await SaveDraftMailServer(service, nmModel, new List <IUserInfo> { userInfo }); nmModel.DraftId = draft.Id; await _dbWorker.UpdateNmStoreRecordAsync(nmModel); //save draftId in database in case of exception var request = service.GmailService.Users.Drafts.Send(draft, "me"); var response = await request.ExecuteAsync(); await _botActions.UpdateNewMailMessage(query.From, SendKeyboardState.SentSuccessful, nmModel, draft.Id); await _dbWorker.RemoveNmStoreAsync(nmModel); }
public async Task HandleCallbackQContinueFromDraft(Query query, SendCallbackData callbackData) { var nmStore = await _dbWorker.FindNmStoreAsync(query.From); if (nmStore == null) { var draft = await Methods.GetDraft(query.From, callbackData.DraftId, UsersResource.DraftsResource.GetRequest.FormatEnum.Full); nmStore = await _dbWorker.AddNewNmStoreAsync(query.From); var formattedMessage = new FormattedMessage(draft.Message); Methods.ComposeNmStateModel(nmStore, formattedMessage); var textMessage = await _botActions.SpecifyNewMailMessage(query.From, SendKeyboardState.Continue, nmStore); nmStore.MessageId = textMessage.MessageId; nmStore.DraftId = draft.Id; await _dbWorker.UpdateNmStoreRecordAsync(nmStore); await _botActions.DeleteMessage(query.From, query.Message.MessageId); } else { await _botActions.SaveAsDraftQuestionMessage(query.From, SendKeyboardState.Store); await _botActions.DeleteMessage(query.From, nmStore.MessageId); } }
public override void CreateInlineKeyboard() { GeneralCallbackData = new SendCallbackData { MessageKeyboardState = State }; ButtonsInitializer(); base.InlineKeyboard = DefineInlineKeyboard(); }
public async Task HandleCallbackQNotSaveAsDraft(Query query, SendCallbackData callbackData) { var nmModel = await _dbWorker.FindNmStoreAsync(query.From); await _botActions.DeleteMessage(query.From, nmModel.MessageId); await _dbWorker.RemoveNmStoreAsync(nmModel); await _botActions.DraftSavedMessage(query.From, true); await _botActions.DeleteMessage(query.From, query.Message.MessageId); }
public async Task HandleCallbackQAddSubject(Query query, SendCallbackData callbackData) { var model = await _dbWorker.FindNmStoreAsync(query.From); if (model == null) { await _botActions.SendLostInfoMessage(query.From); return; } await _botActions.ChangeSubjectForceReply(query.From); }
public async Task HandleCallbackQContinueWithOld(Query query, SendCallbackData callbackData) { var nmModel = await _dbWorker.FindNmStoreAsync(query.From); await _botActions.DeleteMessage(query.From, nmModel.MessageId); await _botActions.DeleteMessage(query.From, query.Message.MessageId); var textMessage = await _botActions.SpecifyNewMailMessage(query.From, SendKeyboardState.Continue, nmModel); nmModel.MessageId = textMessage.MessageId; await _dbWorker.UpdateNmStoreRecordAsync(nmModel); }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="text"></param> /// <param name="command"></param> /// <param name="draftId"></param> /// <param name="row"></param> /// <param name="column"></param> /// <param name="forceCallbackData"></param> protected virtual InlineKeyboardButton InitButton(InlineKeyboardType type, string text, string command, string draftId = "", NmStoreUnit row = default(NmStoreUnit), int column = -1, bool forceCallbackData = true) { if (!forceCallbackData) { return(base.InitButton(type, text, command)); } var callbackData = new SendCallbackData(GeneralCallbackData) { Command = command, MessageId = Model?.MessageId.ToString(), DraftId = draftId, Row = row, Column = column }; return(base.InitButton(type, text, callbackData)); }
public async Task HandleCallbackQSaveAsDraft(Service service, SendCallbackData callbackData) { var nmModel = await _dbWorker.FindNmStoreAsync(service.From); if (nmModel == null) { return; } var draft = await SaveDraftMailServer(service, nmModel); //save draftId in database in case of exception nmModel.DraftId = draft.Id; await _dbWorker.UpdateNmStoreRecordAsync(nmModel); await _botActions.UpdateNewMailMessage(service.From, SendKeyboardState.Drafted, nmModel, draft.Id); await _botActions.DraftSavedMessage(service.From); await _dbWorker.RemoveNmStoreAsync(nmModel); }
public async Task HandleCallbackQRemoveItemNewMessage(Query query, SendCallbackData callbackData) { var nmModel = await _dbWorker.FindNmStoreAsync(query.From); if (nmModel == null) { return; } INmStoreModelRelation element; switch (callbackData.Row) { case NmStoreUnit.To: element = nmModel.To.ElementAt(callbackData.Column); var t = nmModel.To.Remove((ToModel)element); break; case NmStoreUnit.Cc: element = nmModel.Cc.ElementAt(callbackData.Column); nmModel.Cc.Remove((CcModel)element); break; case NmStoreUnit.Bcc: element = nmModel.Bcc.ElementAt(callbackData.Column); nmModel.Bcc.Remove((BccModel)element); break; case NmStoreUnit.File: element = nmModel.File.ElementAt(callbackData.Column); nmModel.File.Remove((FileModel)element); break; default: return; } await _dbWorker.UpdateNmStoreRecordAsync(nmModel); await _botActions.UpdateNewMailMessage(query.From, SendKeyboardState.Continue, nmModel); }