/// <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); } }
/// <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> }
/// <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); } }