private async Task <IActionResult> UpdText() { ProductFunction = new ProductFunction(); string product_name = OriginalMessage.Substring(EnterTextForceReply.Length); Product = ProductFunction.GetProduct(product_name); string units = UnitsList(); if (Product != null && ReplyToMessageText.Length <= 100) { Product = ProductFunction.UpdateText(Product.Id, ReplyToMessageText); ProductFunction.Dispose(); await SendTextMessageAndForceReply("Еденица измерения:" + units, EnterUnitForceReply + Product.Name); return(OkResult); } if (Product != null && ReplyToMessageText.Length > 100) { ProductFunction.Dispose(); return(await SendTextMessageAndForceReply("Ошибка! Максимум 100 символов", EnterTextForceReply + Product.Name)); } else { ProductFunction.Dispose(); return(await SendTextMessageAndForceReply("Введите краткое описание вашего товара. Максмимум 100 символов", EnterTextForceReply + Product.Name)); } }
private async Task <IActionResult> UpdPrice() { ProductFunction = new ProductFunction(); string product_name = OriginalMessage.Substring(EnterPriceForceReply.Length); var product = ProductFunction.GetProduct(product_name); try { double price = Convert.ToDouble(ReplyToMessageText); if (price > 0 && product != null) { product = ProductFunction.UpdatePrice(product.Id, price, Convert.ToInt32(BotInfo.Configuration.CurrencyId)); ProductFunction.Dispose(); return(await SendForceReplyMessage(StockValueForceReply + product.Name)); } else { return(await SendTextMessageAndForceReply(product.Name + "Ошибка! Значение должно быть больше 0", EnterPriceForceReply + product.Name)); } } catch { return(await SendTextMessageAndForceReply(product_name + "Ошибка! Неверный формат данных", EnterPriceForceReply + product_name)); } }
private async Task <IActionResult> InsertAnswer() { try { int QuestionId = Convert.ToInt32(OriginalMessage.Substring(EnterAnswerCmd.Length, OriginalMessage.Length - EnterAnswerCmd.Length)); var Question = ProductFunction.InsertAnswer(QuestionId, FollowerId, ReplyToMessageText); BotMessage = new ProductQuestionAdminViewMessage(Question); await SendMessage(BotMessage.BuildMsg()); await SendMessageAllBotEmployeess(BotMessage); // отправляем ответ пользователю который задал вопрос BotMessage = new ProductQuestionViewMessage(Question); await SendMessage(Question.Follower.ChatId, BotMessage.BuildMsg()); return(OkResult); } catch (Exception e) { await SendMessage(new BotMessage { TextMessage = e.Message }); return(OkResult); } }
private async Task <IActionResult> UpdateCategoryName() { string NewName = ReplyToMessageText; string OldName = OriginalMessage.Substring(NewNameForceReplyCmd.Length); using (MarketBotDbContext db = new MarketBotDbContext()) { var category = db.Category.Where(c => c.Name == OldName).FirstOrDefault(); if (category != null) { if (db.Category.Where(c => c.Name == NewName).Count() > 0) { return(await ErrorMessage(NewNameForceReplyCmd, "Категория с таким именем уже существует")); } else { category.Name = ReplyToMessageText; db.SaveChanges(); return(await SendCategoryEditorMsg(category.Id)); } } else { return(OkResult); } } }
private async Task <IActionResult> UpdStock() { ProductFunction = new ProductFunction(); string product_name = OriginalMessage.Substring(StockValueForceReply.Length); var product = ProductFunction.GetProduct(product_name); try { int balance = Convert.ToInt32(ReplyToMessageText); if (balance >= 0 && product != null) { product = ProductFunction.UpdateStock(product.Id, balance, "Добавление нового товара через диалог с ботом"); ProductFunction.Dispose(); return(await SendForceReplyMessage(UploadImageForceReply + product.Name)); } else { return(await SendTextMessageAndForceReply(product.Name + " /adminproduct" + product.Id + " Ошибка! Значение должно быть больше 0", StockValueForceReply + product.Name)); } } catch { return(await SendTextMessageAndForceReply(product_name + "Ошибка! Неверный формат данных", StockValueForceReply + product_name)); } }
public long SendMessage(long toIdentifier, string subject, string message, bool force) { if (null == message) { throw new ArgumentNullException(nameof(message)); } var request = new OriginalMessage((WmId)toIdentifier, (Message)message) { Initializer = Session.AuthenticationService.ObtainInitializer() }; if (null != subject) { request.Subject = (Description)subject; } RecentMessage response; try { response = request.Submit(); } catch (WmException exception) { throw new ExternalServiceException(exception.Message, exception); } return(response.Id); }
private async Task <IActionResult> AddHelpDeskAnswer() { try { HelpNumber = Convert.ToInt32(OriginalMessage.Substring(AddCommentForceReply.Length)); HelpDesk = HelpDeskFunction.HelpDeskFindByNumber(HelpNumber); if (HelpDesk != null) { HelpDesk = HelpDeskFunction.AddAnswerComment(HelpDesk.Id, FollowerId, ReplyToMessageText); BotMessage = new AdminHelpDeskMessage(HelpDesk, FollowerId); await SendMessage(BotMessage.BuildMsg()); //Уведомляем всех сотрудников BotMessage = new HelpDeskActionNotifiMessage(HelpDesk, HelpDesk.HelpDeskAnswer.LastOrDefault()); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); } return(OkResult); } catch { return(OkResult); } }
public void verifyOriginalMessage(OriginalMessage originalMessage) { originalMessage.Header.ShouldContain("*****@*****.**"); var originalMessageItems = originalMessage.Items.ToArray(); originalMessageItems.Length.ShouldEqual(4); }
protected override void OnPreRender(IDotvvmRequestContext context) { //SetValue(SanitizedMessageProperty, OriginalMessage.Replace("<","") ); //FIXME: this causes null it should not since default of OriginalMessage is set to "" //let's say there is something more sophisticated IRL SetValue(SanitizedMessageProperty, OriginalMessage?.Replace("<", "") ?? ""); base.OnPreRender(context); }
public ConcreteMessage Serialize(OriginalMessage originalMessage) { Func <OriginalMessage, ConcreteMessage> baz = message => { ConcreteMessage foo = ToFoo(message); return(foo); }; return(base.Serialize(originalMessage, baz)); }
public ConcreteMessage Serialize(OriginalMessage originalMessage) { Func <OriginalMessage, ConcreteMessage> baz = message => { ConcreteMessage bar = ToBar(message); return(bar); }; return(base.Serialize(originalMessage, baz)); }
public async override Task <IActionResult> Response() { switch (base.CommandName) { //Пользователь нажал на кнопку вперед или назад при листнинге товаров case GetProductCmd: return(await GetProduct()); //Пользователь нажал на +, добавил товар в корзину в кол-во 1 шт. case AddToBasketCmd: return(await AddToBasket()); //Пользователь нажалн на-, удалил товар из корзины в кол-во 1 шт. case RemoveFromBasketCmd: return(await RemoveFromBasket()); //Пользователь нажал "Подробнее" case MoreInfoProductCmd: return(await SendProductUrl()); case ViewAllPhotoProductCmd: return(await SendAllProductPhoto()); case CmdProductPage: return(await SendProductPage(Argumetns[0], Argumetns[1])); case CmdViewFeedBack: return(await SendFeedBack()); case CmdPage2Buttons: return(await SendSecondPageButtons(ProductId)); case CmdBackToMainPageButtons: return(await SendMainPageButtons(ProductId)); case ProductQuestionCmd: return(await SendProductQuestion(Argumetns[0])); } if (base.OriginalMessage.Contains(EnterProductQuestion)) { return(await InsertQuestion(OriginalMessage.Substring(EnterProductQuestion.Length, OriginalMessage.Length - EnterProductQuestion.Length), ReplyToMessageText)); } //команда /item if (base.CommandName.Contains(ProductCmd)) { return(await GetProductCommand()); } else { return(null); } }
public DelayedMessage( EventAggregator bus, OriginalMessage sourceMessage, OriginalArgs args, TimeSpan delay ) { _bus = bus; _args = args; _msg = sourceMessage; _timer = new DispatcherTimer(); _timer.Interval = delay; _timer.Tick += OnTimerTick; }
/// <summary> /// Информация о товаре /// </summary> /// <param name="ReplyName"></param> /// <returns></returns> private int ProductGet(string ReplyName) { using (MarketBotDbContext db = new MarketBotDbContext()) { ProductName = OriginalMessage.Substring(ReplyName.Length); var product = db.Product.Where(p => p.Name == ProductName).FirstOrDefault(); if (product != null) { BotMessage = new ProductFuncMessage(product.Id); return(product.Id); } else { return(0); } } }
private async Task <IActionResult> UpdUnit() { string product_name = OriginalMessage.Substring(EnterUnitForceReply.Length); string unit_name = ReplyToMessageText.Trim(); var UnitList = UnitsList(); ProductFunction = new ProductFunction(); var product = ProductFunction.GetProduct(product_name); var Unit = UnitsFunction.GetUnits(unit_name); ProductFunction = new ProductFunction(); if (Unit != null && product != null) { product = ProductFunction.UpdateUnit(product.Id, Unit.Id); ProductFunction.Dispose(); } if (Unit == null && product != null) // пользваотель указа ед. измерения но ее не удалось найти. Выбираем первую из существующих { var list = UnitsFunction.UnitsList(); await SendMessage(new BotMessage { TextMessage = "Не удалось найти еденицу измерения. Выбрано:" + list.FirstOrDefault().Name }); product = ProductFunction.UpdateUnit(product.Id, list.FirstOrDefault().Id); ProductFunction.Dispose(); } if (product != null && product.UnitId > 0) { return(await SendTextMessageAndForceReply(product.Name + " /adminproduct" + product.Id, EnterPriceForceReply + product.Name)); } else { return(await SendTextMessageAndForceReply(product.Name + " /adminproduct" + product.Id + " Еденицы измерения:" + UnitList, EnterUnitForceReply + product.Name)); } }
private async Task <IActionResult> AddHelpDeskAnswer() { try { int number = Convert.ToInt32(OriginalMessage.Substring(AddCommentForceReply.Length)); using (MarketBotDbContext db = new MarketBotDbContext()) { var Help = db.HelpDesk.Where(h => h.Number == number).Include(h => h.HelpDeskInWork) .Include(h => h.HelpDeskAnswer).FirstOrDefault(); //Проверяем находится ли заявка в обработке у этого пользователя и не является ли она закрытой if (Help != null && await Processing.CheckInWork(Help) && !await Processing.CheckIsDone(Help)) { HelpDeskAnswer deskAnswer = new HelpDeskAnswer { HelpDeskId = Help.Id, FollowerId = FollowerId, Timestamp = DateTime.Now, Text = ReplyToMessageText }; db.HelpDeskAnswer.Add(deskAnswer); if (db.SaveChanges() > 0) { Help.HelpDeskAnswer.Add(deskAnswer); AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId); await SendMessage(await AdminHelpDeskMsg.BuldMessage()); await Processing.NotifyChanges("К заявке №" + Help.Number.ToString() + " добавлен комментарий.Пользователь: " + GeneralFunction.FollowerFullName(FollowerId), Help.Id); } return(OkResult); } else { return(NotFoundResult); } } } catch { return(NotFoundResult); } }
private async Task <IActionResult> UpdCategory() { string product_name = OriginalMessage.Substring(EnterCategoryForceReply.Length); string category_name = ReplyToMessageText; var category = CategoryFunction.GetCategory(category_name); var category_list = CategoryList(); ProductFunction = new ProductFunction(); Product = ProductFunction.GetProduct(product_name); if (category == null) { category = CategoryFunction.InsertCategory(category_name); } if (category != null && Product != null) { Product = ProductFunction.GetProduct(product_name); ProductFunction.UpdateCategory(Product.Id, category.Id); ProductFunction.Dispose(); return(await SendTextMessageAndForceReply("Введите краткое описание вашего товара. Максмимум 100 символов", EnterTextForceReply + Product.Name)); } else { ProductFunction.Dispose(); return(await SendTextMessageAndForceReply("Введите название новой категории или выберите уже существующую." + "Список категорий:" + category_list, EnterCategoryForceReply + product_name)); } }
private async Task <IActionResult> UpdQiwiToken() { MarketBotDbContext db = new MarketBotDbContext(); string token = ReplyToMessageText; int id = Convert.ToInt32(OriginalMessage.Substring(QiwiTokenForceReply.Length)); var qiwi = db.PaymentTypeConfig.Find(id); if (qiwi != null) { qiwi.Pass = token; db.Update <PaymentTypeConfig>(qiwi); db.SaveChanges(); db.Dispose(); BotMessage = new AdminQiwiSettingsMessage(qiwi); await SendMessage(BotMessage.BuildMsg()); } return(OkResult); }
private async Task <IActionResult> UpdPhoto() { ProductFunction = new ProductFunction(); string product_name = OriginalMessage.Substring(UploadImageForceReply.Length); Product = ProductFunction.GetProduct(product_name); int ProductId = -1; if (base.PhotoId != null && Product != null) { int FsId = await InsertToAttachmentFs(base.PhotoId); Product = ProductFunction.UpdateMainPhoto(Product.Id, FsId); AttachmentTelegramFunction.AddAttachmentTelegram(FsId, base.BotInfo.Id, base.PhotoId); ProductFunction.Dispose(); ProductId = Product.Id; } if (Product != null) // удалось загрузить файл { ProductFuncMsg = new ProductFuncMessage(Product); await SendMessage(ProductFuncMsg.BuildMsg()); } else { await SendMessage(new BotMessage { TextMessage = "Не удалось загрузить файл!" }); ProductFuncMsg = new ProductFuncMessage(ProductId); await SendMessage(ProductFuncMsg.BuildMsg()); } return(OkResult); }
/// <summary> /// Сохранить комментарий к отзыву /// </summary> /// <returns></returns> private async Task <IActionResult> SaveFeedBackComment() { int id; MarketBotDbContext db = new MarketBotDbContext(); try { id = Convert.ToInt32(OriginalMessage.Substring(AddCommentFeedBackForce.Length)); var feedback = db.FeedBack.Find(id); this.Order = db.Orders.Where(o => o.Id == feedback.OrderId).Include(o => o.Follower).FirstOrDefault(); if (feedback != null && this.Order.Follower.ChatId == base.ChatId) { feedback.Text = ReplyToMessageText; db.SaveChanges(); BotMessage = new FeedBackToProductEditorMessage(feedback.Id); await SendMessage(BotMessage.BuildMsg()); } return(OkResult); } catch { return(OkResult); } finally { db.Dispose(); } }
public Task Handle(OriginalMessage message, IMessageHandlerContext context) { TestContext.OriginalMessageSagaHandlerCalled = true; return(Task.FromResult(0)); }
public virtual Gesture GetEmotion() { // TODO Cache // Default is Gesture.None (because it has the value 0) return(Emotions.FirstOrDefault(x => OriginalMessage.Contains(x.Key)).Value ?? Gesture.None); }
public async override Task <IActionResult> Response() { if (IsOperator() || IsOwner()) { switch (base.CommandName) { ///Сообщение с деталями заказа для администратора системы case CmdGetOrderAdmin: return(await GetOrderAdmin()); case CmdOpenOrder: return(await GetOrderAdmin()); case CmdBackOverride: return(await GetOrderAdmin(base.MessageId)); ///Администратор нажал на кнопку "показать номер телефона" case CmdGetTelephone: return(await SendContactUser()); ///Адмнистратор нажал на кнопку "Показать на карте" case CmdViewAddressOnMap: return(await SendOrderAddressOnMap()); //админ нажал на кнопку изменить статус закза case CmdStatusEditor: return(await SendStatusEditor()); ///Пользователь нажал на кнопку "Назад" case CmdBackToOrder: return(await BackToOrder()); case CmdEditOrderPosition: return(await SendEditorOrderPositionList()); case "TakeOrder": return(await TakeOrder()); case "FreeOrder": return(await FreeOrder()); case CmdUpdateOrderStatus: return(await InsertOrderStatus(Argumetns[1])); case "StatusAddComment": return(await SendForceReplyMessage(ForceReplyAddCommentToStatus + Argumetns[0].ToString())); case CmdConfirmNewStatus: return(await ConfirmNewStatus()); case CmdBackToStatusEditor: return(await BackToStatusEditor()); case CmdStatusHistory: return(await SendHistoryOrderStatus()); case CmdOverridePerformerOrder: return(await ConfirmOverridePerformer()); case ViewInvoiceCmd: return(await SendViewInvoice()); case ViewPaymentCmd: return(await SendViewPayment(Argumetns[1], MessageId)); case FeedBackOrderCmd: return(await SendFeedBackOrder(Argumetns[0])); case Page2Cmd: return(await SendPage2Keyboard()); case MainPageCmd: return(await SendMainKeyboard()); default: break; } if (base.CommandName.Contains(PaymentCmd)) { return(await SendViewPayment()); } /// /order показать заказ для админа if (base.CommandName.Contains(GetOrderCmd)) { return(await GetOrderByNumber()); } //пользователь на нажал на кнопку добавить комент к статусу if (OriginalMessage.Contains(ForceReplyAddCommentToStatus)) { return(await AddCommentToStatus()); } else { return(null); } } else { return(null); } }
public async override Task <IActionResult> Response() { if (IsOperator() || IsOwner()) { switch (base.CommandName) { ///Сообщение с деталями заказа для администратора системы case CmdGetOrderAdmin: return(await GetOrderAdmin()); case "OpenOrder": return(await GetOrderAdmin()); ///Администратор нажал на кнопку "показать номер телефона" case CmdGetTelephone: return(await GetContact()); ///Адмнистратор нажал на кнопку "Показать на карте" case CmdViewAddressOnMap: return(await SendOrderAddressOnMap()); ///Администратор нажал на кнопку "Восстановить заказ" case CmdRecoveryOrder: return(await OrderRecovery()); ///Администратор нажал на кнопку "Заказ выполнен" case CmdDoneOrder: return(await OrderDone()); ///Пользователь нажал на кнопку "Назад" case CmdBackToOrder: return(await BackToOrder()); case CmdEditOrderPosition: return(await SendEditorOrderPositionList()); case "TakeOrder": return(await TakeOrder()); case "FreeOrder": return(await FreeOrder()); case "ViewInvoice": return(await SendInvoice()); default: break; } //Администратор прислал ответ на сообщение "Удалить заказ:" if (OriginalMessage.Contains(ForceReplyOrderDelete)) { return(await OrderDelete()); } //Администратор прислал ответ на сообщение "Согласовать заказ:" if (OriginalMessage.Contains(ForceReplyOrderConfirm)) { return(await OrderConfirm()); } //Администратор нажал на кнопку "Удалить заказ" if (base.CommandName == CmdOrderDelete && Order != null) { return(await ForceReplyBuilder(ForceReplyOrderDelete + Order.Number.ToString())); } //Администратор нажал на кнопку "Заказ согласован" if (base.CommandName == CmdConfirmOrder && Order != null) { return(await ForceReplyBuilder(ForceReplyOrderConfirm + Order.Number.ToString())); } /// /order показать заказ для админа if (base.CommandName.Contains(GetOrderCmd)) { return(await GetOrder()); } else { return(null); } } else { return(null); } }
public virtual string FilteredMessage() { // TODO Filter return(OriginalMessage.Trim()); }