예제 #1
0
        /// <summary>
        /// Вставляем данные по товару в бд и уведомляем об это пользователя
        /// </summary>
        /// <param name="Newprod"></param>
        private async void InsertToDb(ParseStruct Newprod)
        {
            Newprod.CategoryId = CategoryCheck(Newprod.CategoryName);
            //скачиваем файл с указанного ресурса
            var photo = await DownloadPhoto(Newprod.PhotoUrl);


            if (Newprod.CategoryId > 0 && ProductCheck(Newprod.Name) == 0 && photo != null)
            {
                var fs_id = InsertToAttachmentFs(photo);

                if (fs_id > 0)
                {
                    Newprod.MainPhotoId = fs_id;
                }

                var product = InsertNewProduct(Newprod);
            }
        }
예제 #2
0
        /// <summary>
        /// Добавить новый товар в БД.
        /// </summary>
        /// <param name="Newprod">объект описывающий новый товар</param>
        /// <returns>Возращает Id</returns>
        private Product 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,
                        PhotoUrl     = Newprod.PhotoUrl,
                        Enable       = true,
                        UnitId       = Newprod.UnitId,
                        MainPhoto    = Newprod.MainPhotoId
                    };

                    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();

                        InsertNewProduct.CurrentPrice = productPrice;

                        db.Update <Product>(InsertNewProduct);
                        db.SaveChanges();

                        return(InsertNewProduct);
                    }

                    else
                    {
                        return(null);
                    }
                }

                catch
                {
                    return(null);
                }
            }

            /// <summary>
            /// импортируем данные из csv файла в бд
            /// </summary>
            /// <param name="id">id файлан на серевере Телегарм</param>
            /// <returns></returns>
        }
예제 #3
0
        /// <summary>
        /// Парсим CSV файл
        /// </summary>
        /// <param name="CSV"></param>
        /// <returns></returns>
        private async Task <List <ParseStruct> > ParseCSV(Stream CSV)
        {
            List <string>      rows      = new List <string>();
            List <ParseStruct> ListParse = new List <ParseStruct>();

            int CurrentCurrencyId = 1;

            using (MarketBotDbContext db = new MarketBotDbContext())
                CurrentCurrencyId = (int)db.BotInfo.Where(b => b.Name == Bot.GeneralFunction.GetBotName()).
                                    Include(b => b.Configuration).FirstOrDefault().Configuration.CurrencyId;


            try
            {
                StreamReader sr = new StreamReader(CSV, Encoding.GetEncoding(1251)); // считываем содержимое файл в массив строк
                while (sr.Peek() >= 0)
                {
                    rows.Add(await sr.ReadLineAsync());
                }
                sr.Close();
                sr.Dispose();

                for (int i = 1; i < rows.Count; i++) //
                {
                    string[] split = rows[i].Split(';');

                    ParseStruct parseStruct = new ParseStruct();

                    parseStruct.CurrencyId = CurrentCurrencyId;

                    if (split != null && split[0] != "") // Название
                    {
                        parseStruct.Name = split[0];
                    }


                    if (split != null && split.Length > 1) // Цена
                    {
                        parseStruct.Price = Convert.ToDouble(split[1]);
                    }


                    if (split != null && split.Length > 2 && split[2] != "") // Категория
                    {
                        parseStruct.CategoryName = split[2];
                    }


                    //Остаток
                    if (split.Length > 2 && split[3] != null)
                    {
                        parseStruct.StockBalance = Convert.ToInt32(split[3]);
                    }

                    else if (parseStruct.StockBalance < 0)
                    {
                        parseStruct.StockBalance = 0;
                    }

                    else
                    {
                        parseStruct.StockBalance = 0;
                    }

                    parseStruct.CurrencyId = 1;
                    //Остаток

                    // Ед. имерения
                    if (split.Length > 3 && split[4] != null)
                    {
                        parseStruct.UnitId = UnitCheck(split[4]);
                    }

                    else
                    {
                        parseStruct.UnitId = 1;
                    }
                    // Ед. имерения


                    if (split != null && split.Length > 4) // проверяем есть ли описание
                    {
                        parseStruct.Desc = split[5];
                    }

                    //проверяем есть ли ссылка на файл фотографии.
                    //Если есть то скаичваем, отправляем боту, получаем FileId
                    if (split.Length > 5 && split[6] != null && split[6].Contains(".jpg") ||
                        split.Length > 5 && split[6] != null && split[6].Contains(".png"))
                    {
                        parseStruct.PhotoUrl = split[6];
                    }

                    if (split != null && split.Length > 6) // проверяем есть ли ссылка на заметку
                    {
                        parseStruct.NoteUrl = split[7];
                    }


                    ListParse.Add(parseStruct);
                }

                return(ListParse);
            }

            catch
            {
                return(null);
            }
        }