예제 #1
0
        protected override void Constructor()
        {
            Processing = new OrderProcess(Update);
            if (Update.Message != null && Update.Message.ReplyToMessage != null)
            {
                CommandName = Update.Message.ReplyToMessage.Text;
            }

            try
            {
                if (base.Argumetns.Count > 0)
                {
                    OrderId              = Argumetns[0];
                    OrderAdminMsg        = new AdminOrderMessage(this.OrderId, FollowerId);
                    OrderPositionListMsg = new OrderPositionListMessage(this.OrderId);
                    FeedBackOfferMsg     = new FeedBackOfferMessage(this.OrderId);
                    using (MarketBotDbContext db = new MarketBotDbContext())
                        Order = db.Orders.Where(o => o.Id == this.OrderId).Include(o => o.OrderConfirm).
                                Include(o => o.OrderDone).Include(o => o.OrderDeleted).Include(o => o.OrderProduct).
                                Include(o => o.Follower).Include(o => o.FeedBack).Include(o => o.OrderAddress).Include(o => o.Invoice).Include(o => o.OrdersInWork).FirstOrDefault();

                    InvoiceViewMsg = new InvoiceViewMessage(Order.Invoice, Order.Id);
                }
            }

            catch
            {
            }
        }
예제 #2
0
        private async Task <IActionResult> SendInvoice()
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    if (Order != null && Order.Invoice != null)
                    {
                        InvoiceViewMsg = new InvoiceViewMessage(Order.Invoice, Order.Id, "BackToMyOrder");
                        await EditMessage(InvoiceViewMsg.BuildMessage());

                        return(OkResult);
                    }

                    else
                    {
                        return(NotFoundResult);
                    }
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }
예제 #3
0
        private async Task <IActionResult> SendInvoice()
        {
            if (Order != null && Order.Invoice != null)
            {
                var Invoice = InvoiceFunction.GetInvoiceByOrderId(OrderId);
                BotMessage = new InvoiceViewMessage(Invoice, OrderId);
                await EditMessage(BotMessage.BuildMsg());

                return(OkResult);
            }

            return(OkResult);
        }
예제 #4
0
        private async Task <IActionResult> CheckPay()
        {
            var mess = await CheckPayMsg.BuildMessage();

            await AnswerCallback(mess.TextMessage, true);

            if (mess.Order.Paid == true)
            {
                InvoiceViewMsg = new InvoiceViewMessage(mess.Order.Invoice, mess.Order.Id, "BackToMyOrder");
                await EditMessage(InvoiceViewMsg.BuildMessage());
                await OrderRedirectToAdmins(mess.Order.Id);
            }

            return(OkResult);
        }
예제 #5
0
        private async Task <IActionResult> SaveDurationDay(int BotId, int serviceTypeId, int DayDuration)
        {
            try
            {
                BotConnectFunction = new BotConnectFunction();

                var Invoice = BotConnectFunction.SelectPaidVersion(BotId, serviceTypeId, DayDuration);

                BotMessage = new InvoiceViewMessage(Invoice, BotId, serviceTypeId);

                await EditMessage(BotMessage.BuildMsg());

                return(OkResult);
            }

            catch (Exception e)
            {
                await SendMessage(new BotMessage { TextMessage = e.Message });

                return(OkResult);
            }
        }
예제 #6
0
        /// <summary>
        /// Сохрнанить
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> OrderSave()
        {
            Bot.Order.InsertNewOrder insertNewOrder = new Bot.Order.InsertNewOrder(FollowerId, BotInfo);

            var new_order = insertNewOrder.AddOrder();

            if (new_order != null && new_order.Invoice != null)
            {
                InvoiceViewMsg = new InvoiceViewMessage(new_order.Invoice, new_order.Id, "BackToMyOrder");
                await EditMessage(InvoiceViewMsg.BuildMessage());
            }

            // Если тип платежа "при получении", то отправляем уведомление о новом заказке Админам
            if (new_order != null && new_order.Invoice == null)
            {
                OrderViewMsg = new OrderViewMessage(new_order);
                await EditMessage(OrderViewMsg.BuildMessage());
                await OrderRedirectToAdmins(new_order.Id);
            }


            return(OkResult);
        }
예제 #7
0
        /// <summary>
        /// Кнопка  я оплатил. ПРоверка платежа
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> CheckPay()
        {
            PaymentsFunction paymentsFunction = new PaymentsFunction();
            var invoice = await paymentsFunction.CheckPaidInvoice(OrderId);

            paymentsFunction.Dispose();

            if (invoice != null && invoice.Payment.Count > 0 && invoice.Paid) // платеж найден и счет имеет статут Оплачен
            {
                BotMessage = new InvoiceViewMessage(invoice, OrderId);
                await EditMessage(BotMessage.BuildMsg());

                //уведомляем сотрудников о поступлении платежа
                PaymentViewMessage paymentViewMessage = new PaymentViewMessage(invoice.Payment.LastOrDefault().Id);
                await SendMessageAllBotEmployeess(paymentViewMessage.BuildMsg());
            }

            else
            {
                await AnswerCallback("Платеж не найден", true);
            }

            return(OkResult);
        }
예제 #8
0
        /// <summary>
        /// Сохрнанить заказ. Перенести все данные из корзины.
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> OrderSave()
        {
            Orders new_order = null;
            bool   blocked   = false;

            OrderFunction = new OrderFunction();

            ConfigurationBot = base.GetConfigurationBot(BotInfo.Id);

            blocked = FollowerFunction.IsBlocked(FollowerId);

            if (blocked)
            {
                await AnswerCallback("Вы заблокированы администратором системы!", true);
            }

            // если в настройках бота указано время работы магазина, то проверяем подходит ли текщее время
            //под это правило. Если подходит то офрмляем заказ
            if (!blocked && ConfigurationBot.StartTime != null &&
                ConfigurationBot.EndTime != null && ConfigurationBot.StartTime.Value.Hours <=
                DateTime.Now.Hour && ConfigurationBot.StartTime.Value <= DateTime.Now.TimeOfDay &&
                ConfigurationBot.EndTime.Value > DateTime.Now.TimeOfDay)
            {
                new_order = OrderFunction.CreateOrder(FollowerId, BotInfo);
            }


            //Время работы магазина не указано.
            else if (!blocked && ConfigurationBot.EndTime == null && ConfigurationBot.StartTime == null)
            {
                new_order = OrderFunction.CreateOrder(FollowerId, BotInfo);
            }

            else
            {
                await AnswerCallback("Мы обрабатываем заказы только в период с " + ConfigurationBot.StartTime.ToString() +
                                     " и по " + ConfigurationBot.EndTime.ToString(), true);
            }

            if (new_order != null && new_order.Invoice != null)
            {
                BotMessage = new InvoiceViewMessage(new_order.Invoice, new_order.Id);
                await EditMessage(BotMessage.BuildMsg());
            }

            if (new_order != null && new_order.Invoice == null)
            {
                BotMessage = new OrderViewMessage(new_order);
                await EditMessage(BotMessage.BuildMsg());
            }

            //то отправляем уведомление о новом заказке Админам
            if (new_order != null)
            {
                BotMessage = new AdminOrderMessage(new_order);

                var message = BotMessage.BuildMsg();

                await SendMessageAllBotEmployeess(message);
            }


            OrderFunction.Dispose();

            return(OkResult);
        }