예제 #1
0
        private async Task <IActionResult> AddNewCategory()
        {
            string Name = ReplyToMessageText;

            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                var ReapetCategory = db.Category.Where(c => c.Name == Name).FirstOrDefault();

                if (ReapetCategory != null)
                {
                    return(await ErrorMessage(AdminBot.EnterNameNewCategoryCmd, "Такая категория уже существует"));
                }

                else
                {
                    Category category = new Category
                    {
                        Name   = Name,
                        Enable = true
                    };
                    db.Category.Add(category);
                    db.SaveChanges();

                    AdminCategoryFuncMsg = new AdminCategoryFuncMessage(category.Id);

                    if (await SendMessage(AdminCategoryFuncMsg.BuildMessage()) != null)
                    {
                        return(OkResult);
                    }

                    else
                    {
                        return(NotFoundResult);
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Обновить стоимость
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> UpdateProductPrice()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                double NewPrice = 0.0;
                try
                {
                    var product = db.Product.Where(p => p.Id == ProductGet(ProductEditPriceRelpy)).Include(p => p.ProductPrice).FirstOrDefault();
                    NewPrice = Convert.ToDouble(base.ReplyToMessageText);

                    ProductPrice productPrice = new ProductPrice
                    {
                        ProductId = product.Id,
                        DateAdd   = DateTime.Now,
                        Enabled   = true,
                        Value     = NewPrice
                    };

                    var OldPrice = product.ProductPrice.Where(p => p.Enabled).FirstOrDefault();

                    if (OldPrice != null)
                    {
                        OldPrice.Enabled = false;
                    }

                    db.ProductPrice.Add(productPrice);
                    db.SaveChanges();

                    return(await SendProductFunc(product));
                }

                catch
                {
                    return(await ErrorMessage(ProductEditPriceRelpy));
                }
            }
        }
예제 #3
0
        public IActionResult GetHistoryList(int Id)
        {
            if (db == null)
            {
                db = new MarketBotDbContext();
            }



            var HistoryList = db.OrderHistory.Where(h => h.OrderId == Id).Include(h => h.Follower).Include(h => h.Action).OrderByDescending(h => h.Id).ToList();


            List <Dictionary <string, string> > list = new List <Dictionary <string, string> >();

            foreach (OrderHistory history in HistoryList)
            {
                Dictionary <string, string> value = new Dictionary <string, string>();
                value.Add("ActionName", history.Action.Name);

                if (history.Text != null)
                {
                    value.Add("Text", history.Text);
                }

                else
                {
                    value.Add("Text", String.Empty);
                }

                value.Add("UserName", history.Follower.FirstName + history.Follower.LastName);
                value.Add("Timestamp", history.Timestamp.ToString());
                list.Add(value);
            }

            return(Json(list));
        }
예제 #4
0
        public IActionResult ContactUpdate([FromBody] Company _company)
        {
            company = new Company();

            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                if (_company != null && _company.Id > 0)
                {
                    company = db.Company.Where(c => c.Id == _company.Id).FirstOrDefault();
                }

                if (company != null)
                {
                    company.Instagram = _company.Instagram;
                    company.Vk        = _company.Vk;
                    company.Chanel    = _company.Chanel;
                    company.Chat      = _company.Chat;
                    company.Text      = _company.Text;

                    if (db.SaveChanges() >= 0)
                    {
                        return(Json("Сохранено"));
                    }

                    else
                    {
                        return(Json("Ошибка"));
                    }
                }

                else
                {
                    return(Json("Ошибка"));
                }
            }
        }
        public override BotMessage BuildMsg()
        {
            db           = new MarketBotDbContext();
            CurrencyList = db.Currency.ToList();
            db.Dispose();

            BackBtn = BuildInlineBtn("Назад", BuildCallData(MoreSettingsBot.BackToMoreSettingsCmd, MoreSettingsBot.ModuleName), base.Previuos2Emodji, false);
            Btns    = new InlineKeyboardCallbackButton[CurrencyList.Count + 1][];
            Btns[Btns.Length - 1]    = new InlineKeyboardCallbackButton[1];
            Btns[Btns.Length - 1][0] = BackBtn;

            int counter = 0;

            foreach (var c in CurrencyList)
            {
                Btns[counter] = new InlineKeyboardCallbackButton[1];

                if (BotInfo.Configuration.CurrencyId == c.Id)
                {
                    Btns[counter][0] = BuildInlineBtn(c.Name, BuildCallData(MoreSettingsBot.CurrencyEditorUpdCmd, MoreSettingsBot.ModuleName, c.Id), base.CheckEmodji);
                }

                else
                {
                    Btns[counter][0] = BuildInlineBtn(c.Name, BuildCallData(MoreSettingsBot.CurrencyEditorUpdCmd, MoreSettingsBot.ModuleName, c.Id), base.UnCheckEmodji);
                }

                counter++;
            }

            base.TextMessage = "Валюта";

            base.MessageReplyMarkup = new InlineKeyboardMarkup(Btns);

            return(this);
        }
예제 #6
0
        public MyOrdersMessage BuildMessage()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                List <Orders> orders = new List <Orders>();

                orders = db.Orders.Where(o => o.FollowerId == FollowerId && o.BotInfoId == BotId).Include(o => o.OrderProduct).Include(o => o.OrderDone).Include(o => o.OrderConfirm).Include(o => o.OrderDeleted).OrderBy(o => o.Id).ToList();

                if (orders != null && orders.Count > 0)
                {
                    base.TextMessage = Bold("Мои заказы") + NewLine();

                    int Counter = 1;

                    foreach (Orders order in orders)
                    {
                        if (order.OrderDeleted != null && order.OrderDeleted.Count == 0)
                        {
                            base.TextMessage += Counter.ToString() + ") Заказ №" + order.Number.ToString() + " от " + order.DateAdd.ToString() +
                                                NewLine() + "открыть /myorder" + order.Number.ToString() + NewLine();
                            Counter++;
                        }
                    }

                    base.TextMessage += NewLine() + "Главная /start";
                }

                else
                {
                    base.CallBackTitleText = "У вас еще нет заказов";
                }


                return(this);
            }
        }
        public IActionResult Editor(int id)
        {
            db = new MarketBotDbContext();

            if (id > 0)
            {
                var pickupPoint = db.PickupPoint.Find(id);

                if (pickupPoint != null)
                {
                    return(View(pickupPoint));
                }

                else
                {
                    return(NoContent());
                }
            }

            else
            {
                return(NotFound());
            }
        }
        public static AdminKey InsertAdminKey(string Hash, bool Enable = false)
        {
            MarketBotDbContext db = new MarketBotDbContext();

            try
            {
                AdminKey key = new AdminKey {
                    DateAdd = DateTime.Now, Enable = false, KeyValue = Hash
                };
                db.AdminKey.Add(key);
                db.SaveChanges();
                return(key);
            }

            catch
            {
                return(null);
            }

            finally
            {
                db.Dispose();
            }
        }
예제 #9
0
        /// <summary>
        /// Показать адрес доставки на карте
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> SendOrderAddressOnMap()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                var Address = db.OrderAddress.Where(o => o.OrderId == OrderId).Include(o => o.Adress.House).FirstOrDefault();


                Location location = new Location
                {
                    Latitude  = Convert.ToSingle(Address.Adress.House.Latitude),
                    Longitude = Convert.ToSingle(Address.Adress.House.Longitude)
                };

                if (await SendLocation(location) != null)
                {
                    return(OkResult);
                }

                else
                {
                    return(NotFoundResult);
                }
            }
        }
        public IActionResult Editor(int id)
        {
            db = new MarketBotDbContext();

            if (id > 0)
            {
                var category = db.Category.Find(id);

                if (category != null)
                {
                    return(View(category));
                }

                else
                {
                    return(NoContent());
                }
            }

            else
            {
                return(NotFound());
            }
        }
예제 #11
0
        /// <summary>
        /// Добавить новый город к списку доступных
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> AddAvailableCity()
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    AvailableСities availableСities = new AvailableСities
                    {
                        CityName  = ReplyToMessageText,
                        Timestamp = DateTime.Now
                    };

                    db.AvailableСities.Add(availableСities);
                    db.SaveChanges();

                    return(await SendAvailableCities());
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }
예제 #12
0
        /// <summary>
        /// удалить оператора
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> RemoveOperator()
        {
            try
            {
                int id = Convert.ToInt32(base.CommandName.Substring(RemoveOperatorCmd.Length));
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    var admin = db.Admin.Where(a => a.Id == id).FirstOrDefault();

                    if (admin != null)
                    {
                        db.Admin.Remove(admin);
                        db.SaveChanges();
                    }

                    return(await SendOperatorList());
                }
            }

            catch
            {
                return(await SendOperatorList());
            }
        }
예제 #13
0
        private OrdersInWork CheckInWork(int?OrderId)
        {
            if (db == null)
            {
                db = new MarketBotDbContext();
            }

            var inwork = db.OrdersInWork.Where(o => o.OrderId == OrderId).OrderByDescending(o => o.Id).FirstOrDefault();

            if (inwork != null)
            {
                inwork.Follower = db.Follower.Find(inwork.FollowerId);
            }

            if (inwork != null && inwork.InWork == true)
            {
                return(inwork);
            }

            else
            {
                return(null);
            }
        }
예제 #14
0
        private async Task <IActionResult> ClearBasket()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                var basket = db.Basket.Where(b => b.FollowerId == FollowerId);

                foreach (var product in basket)
                {
                    db.Remove(product);
                }

                if (db.SaveChanges() > 0 && await EditMessage(new BotMessage {
                    TextMessage = "Корзина пуста"
                }) != null)
                {
                    return(base.OkResult);
                }

                else
                {
                    return(base.NotFoundResult);
                }
            }
        }
        public static Product GetProductById(int ProductId)
        {
            MarketBotDbContext db = new MarketBotDbContext();

            try
            {
                return(db.Product.Where(p => p.Id == ProductId)
                       .Include(p => p.Category)
                       .Include(p => p.CurrentPrice)
                       .Include(p => p.Unit)
                       .Include(p => p.Stock)
                       .Include(p => p.Category).FirstOrDefault());
            }

            catch (Exception e)
            {
                return(null);
            }

            finally
            {
                db.Dispose();
            }
        }
예제 #16
0
        /// <summary>
        /// Пользователь подтвердил, что проживает по этому адресу. Значит в таблице Address заполняем поле FollowerId. И отправляем сообщение с вводом комера квартиры
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> UpdateNewAddress()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                Address address = new Address();

                address = db.Address.Where(a => a.Id == Argumetns[0]).FirstOrDefault();

                if (address != null) // сохраняем и отправляем сообщение со списокм адерсов пользователя
                {
                    address.FollowerId = base.FollowerId;
                    db.SaveChanges();
                    ApartmentMsg = new ApartmentMessage(address.Id);
                    await EditMessage(ApartmentMsg.BuildMsg());

                    return(OkResult);
                }

                else
                {
                    return(OkResult);
                }
            }
        }
        public static ProductQuestion GetProductQuestion(int Id)
        {
            MarketBotDbContext db = new MarketBotDbContext();

            try
            {
                var Question = db.ProductQuestion.Where(q => q.Id == Id)
                               .Include(q => q.Product)
                               .Include(q => q.Follower)
                               .Include(q => q.Answer.Follower).FirstOrDefault();

                return(Question);
            }

            catch
            {
                return(null);
            }

            finally
            {
                db.Dispose();
            }
        }
        public override BotMessage BuildMsg()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
                PickupPoitList = db.PickupPoint.Where(p => p.Enable == true).ToList();


            if (PickupPoitList != null && PickupPoitList.Count > 0)
            {
                PickupPointListBtn = new InlineKeyboardCallbackButton[PickupPoitList.Count() + 1][];
                int counter = 0;
                foreach (PickupPoint point in PickupPoitList)
                {
                    PickupPointListBtn[counter]    = new InlineKeyboardCallbackButton[1];
                    PickupPointListBtn[counter][0] = new InlineKeyboardCallbackButton(point.Name,
                                                                                      BuildCallData(Bot.OrderBot.SelectPickupPointCmd, Bot.OrderBot.ModuleName, point.Id));
                    counter++;
                }

                PickupPointListBtn[counter]    = new InlineKeyboardCallbackButton[1];
                PickupPointListBtn[counter][0] = BackBtn;

                base.TextMessage        = "Выберите пункт самовывоза";
                base.MessageReplyMarkup = new InlineKeyboardMarkup(PickupPointListBtn);
            }

            else
            {
                PickupPointListBtn       = new InlineKeyboardCallbackButton[1][];
                PickupPointListBtn[0]    = new InlineKeyboardCallbackButton[1];
                PickupPointListBtn[0][0] = BackBtn;
                base.TextMessage         = "Нет доступных пунктов самовывоза. Вернитесь назад и выберите другой способ получения заказа";
                base.MessageReplyMarkup  = new InlineKeyboardMarkup(PickupPointListBtn);
            }

            return(this);
        }
예제 #19
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 ContactMessage()
 {
     using (MarketBotDbContext db = new MarketBotDbContext())
         Company = db.Company.FirstOrDefault();
 }
 private void OpenConnection()
 {
     db = new MarketBotDbContext();
 }
예제 #22
0
        /// <summary>
        /// Вытаскивам с сервера телеграм этот файл и записываем его в БД бота. Нам нужно хранить эти файлы, т.к если бота заблокируют или
        /// мы подключим допольнительных ботов, то мы не сможем отправить FileId другого бота. Поэтому мы храним в бд эти файлы
        /// </summary>
        /// <param name="id">FileId файл на сервере телеграм</param>
        /// <returns>Возращает id записи из таблицы AttachmentFS</returns>
        protected async Task <int> InsertToAttachmentFs(string id = null, string Caption = "")
        {
            if (id == null)
            {
                id = FileId;
            }
            MarketBotDbContext db = new MarketBotDbContext();

            try
            {
                var file = await TelegramClient.GetFileAsync(id);

                System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

                await file.FileStream.CopyToAsync(memoryStream);

                // Довавбляем в БД
                AttachmentFs attachmentFs = new AttachmentFs
                {
                    Fs               = memoryStream.ToArray(),
                    GuId             = Guid.NewGuid(),
                    Caption          = Caption,
                    AttachmentTypeId = MediaFileTypeId
                };

                db.AttachmentFs.Add(attachmentFs);

                int type = HowMediaType(Update.Message); // узнаем какой типа файла. Фото, Аудио и тд

                //Когда оператора будет смотреть заявку через того же бота, через коготого пользователь
                //оформлял заявку, мы отправим ему ID файла на сервере телеграм вместо целой картинки. Это будет быстрее.
                //А если оператор будет смотреть заявку из другого бота (например старого удалят), то мы сможем отрпавить файл картинки

                //максимальный размер файла 15 мб
                if (file != null && file.FileSize <= 15 * 1024 * 1024 && memoryStream != null && await db.SaveChangesAsync() > 0 && type > 0)
                {
                    AttachmentTelegram attachment = new AttachmentTelegram();
                    attachment.FileId         = id;
                    attachment.AttachmentFsId = attachmentFs.Id;
                    attachment.BotInfoId      = BotInfo.Id;

                    db.AttachmentTelegram.Add(attachment);

                    if (await db.SaveChangesAsync() > 0)
                    {
                        return(Convert.ToInt32(attachment.AttachmentFsId));
                    }

                    else
                    {
                        return(-1);
                    }
                }

                if (file.FileSize > 15 * 1024 * 1024)
                {
                    await SendMessage(new BotMessage { TextMessage = "Ошибка. Файл не может быть больше 15 мб!" });

                    return(-1);
                }

                else
                {
                    return(-1);
                }
            }


            catch (Exception exp)
            {
                return(-1);
            }

            finally
            {
                db.Dispose();
            }
        }
예제 #23
0
        /// <summary>
        /// Добавить новый товар в БД.
        /// </summary>
        /// <param name="Newprod">объект описывающий новый товар</param>
        /// <returns>Возращает Id</returns>
        private int InsertNewProduct(ParseStruct Newprod)
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                try
                {
                    Product InsertNewProduct = new Product
                    {
                        Name         = Newprod.Name,
                        CategoryId   = Newprod.CategoryId,
                        TelegraphUrl = Newprod.NoteUrl,
                        Text         = Newprod.Desc,
                        DateAdd      = DateTime.Now,
                        PhotoId      = Newprod.PhotoId,
                        Enable       = true,
                        UnitId       = Newprod.UnitId
                    };

                    db.Product.Add(InsertNewProduct);

                    if (db.SaveChanges() > 0)
                    {
                        ProductPrice productPrice = new ProductPrice
                        {
                            ProductId  = InsertNewProduct.Id,
                            DateAdd    = DateTime.Now,
                            Enabled    = true,
                            Value      = Newprod.Price,
                            CurrencyId = Newprod.CurrencyId,
                            Volume     = 1
                        };

                        Stock stock = new Stock
                        {
                            ProductId = InsertNewProduct.Id,
                            Balance   = Newprod.StockBalance,
                            DateAdd   = DateTime.Now,
                            Quantity  = Newprod.StockBalance
                        };

                        db.Stock.Add(stock);
                        db.ProductPrice.Add(productPrice);
                        db.SaveChanges();

                        return(InsertNewProduct.Id);
                    }

                    else
                    {
                        return(-1);
                    }
                }

                catch
                {
                    return(-1);
                }
            }

            /// <summary>
            /// импортируем данные из csv файла в бд
            /// </summary>
            /// <param name="id">id файлан на серевере Телегарм</param>
            /// <returns></returns>
        }
        public Product InsertProduct(string Name, bool Enable)
        {
            MarketBotDbContext db      = new MarketBotDbContext();
            Product            product = null;

            var category = db.Category.FirstOrDefault(); // сразу присваеваем какое нибудь значение цены, категори, ед. изм
            var price    = db.ProductPrice.Where(p => p.Enabled).FirstOrDefault();
            var unit     = db.Units.FirstOrDefault();

            try
            {
                if (category != null && price != null)
                {
                    product = new Product
                    {
                        Name           = Name,
                        DateAdd        = DateTime.Now,
                        Enable         = Enable,
                        UnitId         = unit.Id,
                        CategoryId     = category.Id,
                        CurrentPriceId = price.Id
                    };
                    db.Product.Add(product);
                    db.SaveChanges();
                    return(product);
                }
                if (category != null && price == null)
                {
                    product = new Product
                    {
                        Name       = Name,
                        DateAdd    = DateTime.Now,
                        Enable     = Enable,
                        UnitId     = unit.Id,
                        CategoryId = category.Id
                    };
                    db.Product.Add(product);
                    db.SaveChanges();
                    return(product);
                }
                if (category != null && price == null)
                {
                    product = new Product
                    {
                        Name           = Name,
                        DateAdd        = DateTime.Now,
                        Enable         = Enable,
                        UnitId         = unit.Id,
                        CurrentPriceId = price.Id
                    };
                    db.Product.Add(product);
                    db.SaveChanges();
                    return(product);
                }
                else
                {
                    product = new Product
                    {
                        Name    = Name,
                        DateAdd = DateTime.Now,
                        Enable  = Enable,
                        UnitId  = unit.Id,
                    };
                    db.Product.Add(product);
                    db.SaveChanges();
                    return(product);
                }
            }

            catch
            {
                return(null);
            }
        }
 public ProductFunction()
 {
     db = new MarketBotDbContext();
 }
 public InsertNewOrder(int FollowerId, BotInfo BotInfo)
 {
     this.FollowerId = FollowerId;
     this.BotInfo    = BotInfo;
     db = new MarketBotDbContext();
 }
예제 #27
0
 public AdminAllProductsViewMessage()
 {
     db = new MarketBotDbContext();
 }
예제 #28
0
        public AdminOrderMessage BuildMessage()
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                if (this.Order == null && this.OrderId > 0)
                {
                    Order = db.Orders.Where(o => o.Id == OrderId).
                            Include(o => o.OrderConfirm).
                            Include(o => o.OrderDeleted).
                            Include(o => o.OrderDone).
                            Include(o => o.FeedBack).
                            Include(o => o.OrderProduct).
                            Include(o => o.OrderAddress).
                            Include(o => o.OrdersInWork).
                            Include(o => o.Invoice).
                            FirstOrDefault();
                }

                ///////////Провереряем какой метод оплаты и наличие платежей////////////
                if (Order.Invoice != null)
                {
                    PaymentMethodName = "Метод оплаты";
                }


                if (Order != null && Order.OrderAddress == null)
                {
                    Order.OrderAddress = db.OrderAddress.Where(o => o.OrderId == Order.Id).FirstOrDefault();
                }

                var Address = db.Address.Where(a => a.Id == Order.OrderAddress.AdressId).Include(a => a.House).Include(a => a.House.Street).Include(a => a.House.Street.City).FirstOrDefault();

                double total    = 0.0;
                string Position = "";
                int    counter  = 0;
                string Paid     = "";



                if (Order.BotInfo == null)
                {
                    Order.BotInfo = db.BotInfo.Where(b => b.Id == Order.BotInfoId).FirstOrDefault();
                }

                if (Order.Paid == true)
                {
                    Paid = "Оплачено";
                }

                else
                {
                    Paid = "Не оплачено";
                }


                if (Order.OrderProduct == null || Order.OrderProduct != null && Order.OrderProduct.Count == 0)
                {
                    Order.OrderProduct = db.OrderProduct.Where(o => o.OrderId == Order.Id).ToList();
                }

                foreach (OrderProduct p in Order.OrderProduct) // Вытаскиваем все товары из заказа
                {
                    counter++;
                    p.Product = db.Product.Where(x => x.Id == p.ProductId).Include(x => x.ProductPrice).FirstOrDefault();
                    if (p.Price == null)
                    {
                        p.Price = p.Product.ProductPrice.FirstOrDefault();
                    }

                    Position += counter.ToString() + ") " + p.AdminText() + NewLine();
                    total    += p.Price.Value * p.Count;
                }

                /////////Формируем основную часть сообщения
                base.TextMessage = Bold("Номер заказа: ") + Order.Number.ToString() + NewLine()
                                   + Position + NewLine()
                                   + Bold("Общая стоимость: ") + total.ToString() + NewLine()
                                   + Bold("Комментарий: ") + Order.Text + NewLine()
                                   + Bold("Адрес доставки: ") + Address.House.Street.City.Name + ", " + Address.House.Street.Name + ", " + Address.House.Number + NewLine()
                                   + Bold("Время: ") + Order.DateAdd.ToString() + NewLine()
                                   + Bold("Способ оплаты: ") + PaymentMethodName + NewLine()
                                   + Bold("Оформлено через: ") + "@" + Order.BotInfo.Name + NewLine()
                                   + Bold("Статус платежа: ") + Paid;

                //Детали согласования заказа
                if (Order != null && Order.OrderConfirm != null && Order.OrderConfirm.Count > 0 &&
                    Order.OrderDeleted.Count == 0)
                {
                    base.TextMessage += NewLine() + NewLine() + Bold("Заказ согласован:") + NewLine() + Italic("Комментарий: " + Order.OrderConfirm.OrderByDescending(o => o.Id).FirstOrDefault().Text
                                                                                                               + " |Время: " + Order.OrderConfirm.OrderByDescending(o => o.Id).FirstOrDefault().DateAdd.ToString()
                                                                                                               + " |Пользователь: " + Bot.GeneralFunction.FollowerFullName(Order.OrderConfirm.OrderByDescending(o => o.Id).FirstOrDefault().FollowerId));
                }

                ///Детали удаления заказа
                if (Order != null && Order.OrderDeleted != null && Order.OrderDeleted.Count > 0)
                {
                    base.TextMessage += NewLine() + NewLine() + Bold("Заказ удален:") + NewLine() + Italic("Комментарий: " + Order.OrderDeleted.OrderByDescending(o => o.Id).FirstOrDefault().Text
                                                                                                           + " |Время: " + Order.OrderDeleted.OrderByDescending(o => o.Id).FirstOrDefault().DateAdd.ToString()
                                                                                                           + " |Пользователь: " + Bot.GeneralFunction.FollowerFullName(Order.OrderDeleted.OrderByDescending(o => o.Id).FirstOrDefault().FollowerId));
                }

                ///Детали выполнения заказа
                if (Order != null && Order.OrderDone != null && Order.OrderDone.Count > 0)
                {
                    base.TextMessage += NewLine() + NewLine() + Bold("Заказ выполнен:") + Italic(Order.OrderDone.OrderByDescending(o => o.Id).FirstOrDefault().DateAdd.ToString())
                                        + " |Пользователь: " + Bot.GeneralFunction.FollowerFullName(Order.OrderDone.OrderByDescending(o => o.Id).FirstOrDefault().FollowerId);
                }

                //Детали Отзыва к заказу
                if (Order != null && Order.FeedBack != null && Order.FeedBack.Text != null && Order.FeedBack.Text != "")
                {
                    base.TextMessage += NewLine() + NewLine() + Bold("Отзыв к заказу:") + NewLine() + Italic(Order.FeedBack.Text + " | Время: " + Order.FeedBack.DateAdd.ToString());
                }

                InWorkFollowerId = WhoInWork(Order);

                CreateBtns();

                SetInlineKeyBoard();

                return(this);
            }
        }
        public override BotMessage BuildMsg()
        {
            double total     = 0.0;
            double ShipPrice = 0;
            string Position  = "";
            string Paid      = "";

            MarketBotDbContext db = new MarketBotDbContext();

            if (this.Order == null && this.OrderId > 0)
            {
                Order = db.Orders.Where(o => o.Id == OrderId).
                        Include(o => o.FeedBack).
                        Include(o => o.OrderProduct).
                        Include(o => o.OrderAddress).
                        Include(o => o.OrdersInWork).
                        Include(o => o.Invoice.PaymentType).
                        Include(o => o.PickupPoint).
                        Include(o => o.CurrentStatusNavigation).
                        FirstOrDefault();
            }

            if (Order != null)
            {
                ///////////Провереряем какой способ оплаты ///////////
                if (Order.Invoice != null && Order.Invoice.PaymentType != null)
                {
                    PaymentMethodName = db.PaymentType.Find(Order.Invoice.PaymentTypeId).Name;
                }

                else
                {
                    PaymentMethodName = "При получении";
                }

                //Вытаскиваем полный адрес доставки
                if (Order.OrderAddress == null)
                {
                    Order.OrderAddress = db.OrderAddress.Where(o => o.OrderId == Order.Id).FirstOrDefault();
                }

                if (Order.OrderAddress != null) //Вытаскиваем полный адрес доставки
                {
                    Address = db.Address.Where(a => a.Id == Order.OrderAddress.AdressId)
                              .Include(a => a.House)
                              .Include(a => a.House.Street)
                              .Include(a => a.House.Street.City).FirstOrDefault();
                }


                //Jghtltktzv стоимость доставки
                if (Order.OrderAddress != null)
                {
                    ShipPrice = Order.OrderAddress.ShipPriceValue;
                    total    += ShipPrice;
                }


                if (Order.BotInfo == null)
                {
                    Order.BotInfo = db.BotInfo.Where(b => b.Id == Order.BotInfoId).FirstOrDefault();
                }

                if (Order.CurrentStatusNavigation == null)
                {
                    Order.CurrentStatusNavigation = db.OrderStatus.Find(Order.CurrentStatus);
                }

                if (Order.CurrentStatusNavigation != null && Order.CurrentStatusNavigation.Status == null)
                {
                    Order.CurrentStatusNavigation.Status = db.Status.Find(Order.CurrentStatusNavigation.StatusId);
                }


                if (Order.Paid == true)
                {
                    Paid = "Оплачено";
                }

                else
                {
                    Paid = "Не оплачено";
                }


                if (Order.OrderProduct == null || Order.OrderProduct != null && Order.OrderProduct.Count == 0)
                {
                    Order.OrderProduct = db.OrderProduct.Where(o => o.OrderId == Order.Id).ToList();
                }

                total += Order.TotalPrice();

                /////////Формируем основную часть сообщения - Доставка
                if (Order.OrderAddress != null)
                {
                    base.TextMessage = Bold("Номер заказа: ") + Order.Number.ToString() + " /order" + Order.Number.ToString() + NewLine()
                                       + Order.PositionToString() + NewLine()
                                       + Bold("Стоимость доставки:") + Order.OrderAddress.ShipPriceValue.ToString() + NewLine()
                                       + Bold("Общая стоимость: ") + total.ToString() + NewLine()
                                       + Bold("Комментарий: ") + Order.Text + NewLine()
                                       + Bold("Способ получения заказа: ") + " Доставка" + NewLine()
                                       + Bold("Адрес доставки: ") + Address.House.Street.City.Name + ", " + Address.House.Street.Name + ", д. " + Address.House.Number + ", " + Address.House.Apartment + NewLine()
                                       + Bold("Время: ") + Order.DateAdd.ToString() + NewLine()
                                       + Bold("Способ оплаты: ") + PaymentMethodName + NewLine()
                                       + Bold("Статус заказа:") + Order.CurrentStatusNavigation.Status.Name + NewLine()
                                       + Bold("Оформлено через: ") + "@" + Order.BotInfo.Name + NewLine()
                                       + Bold("Статус платежа: ") + Paid;
                }

                /////////Формируем основную часть сообщения - Самовывоз
                if (Order.PickupPoint != null)
                {
                    base.TextMessage = Bold("Номер заказа: ") + Order.Number.ToString() + " /order" + Order.Number.ToString() + NewLine()
                                       + Order.PositionToString() + NewLine()
                                       + Bold("Общая стоимость: ") + total.ToString() + NewLine()
                                       + Bold("Комментарий: ") + Order.Text + NewLine()
                                       + Bold("Способ получения заказа: ") + " Самовывоз" + NewLine()
                                       + Bold("Адрес доставки: ") + Order.PickupPoint.Name + NewLine()
                                       + Bold("Время: ") + Order.DateAdd.ToString() + NewLine()
                                       + Bold("Способ оплаты: ") + PaymentMethodName + NewLine()
                                       + Bold("Статус заказа:") + Order.CurrentStatusNavigation.Status.Name + NewLine()
                                       + Bold("Оформлено через: ") + "@" + Order.BotInfo.Name + NewLine()
                                       + Bold("Статус платежа: ") + Paid;
                }


                InWorkFollowerId = WhoInWork(Order);

                SetInlineKeyBoard();

                db.Dispose();

                return(this);
            }

            else
            {
                db.Dispose();
                return(null);
            }
        }
예제 #30
0
 public ProductSearchInline(string Query)
 {
     this.Query = Query;
     db         = new MarketBotDbContext();
 }