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));
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
    public ConcreteMessage Serialize(OriginalMessage originalMessage)
    {
        Func <OriginalMessage, ConcreteMessage> baz = message =>
        {
            ConcreteMessage foo = ToFoo(message);
            return(foo);
        };

        return(base.Serialize(originalMessage, baz));
    }
Exemplo n.º 11
0
    public ConcreteMessage Serialize(OriginalMessage originalMessage)
    {
        Func <OriginalMessage, ConcreteMessage> baz = message =>
        {
            ConcreteMessage bar = ToBar(message);
            return(bar);
        };

        return(base.Serialize(originalMessage, baz));
    }
Exemplo n.º 12
0
        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;
 }
Exemplo n.º 14
0
        /// <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);
                }
            }
        }
Exemplo n.º 15
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));
            }
        }
Exemplo n.º 16
0
        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);
            }
        }
Exemplo n.º 17
0
        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));
            }
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        /// <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));
 }
Exemplo n.º 22
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);
            }
        }
Exemplo n.º 24
0
        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);
            }
        }
Exemplo n.º 25
0
 public virtual string FilteredMessage()
 {
     // TODO Filter
     return(OriginalMessage.Trim());
 }