internal static void WorkWithFile(Byte[] file) { //1-2.IEnumerable<Sales> IEnumerable <Sales> sales = ParseCsv.ParseResource <Sales>(file, sale => { sale.CreatedByUserId = adminGuid; sale.CreatedDateTime = DateTime.UtcNow; }); // Check data whether there is a database (manager) ValidateData(sales); // write to the Sales database //3.AutoMapper BLL SalesService salesService = new SalesService(mapper); var saleBLL = MappingService.MappingForBLLEntities <BLL.Sale, BLL.Sales>(salesService, sales); //4.AutoMapper DAL SaleService saleService = new SaleService(mapper); var saleDAL = MappingService.MappingForDALEntities <DAL.Sale, BLL.Sale>(saleService, saleBLL); // find customers and products by their ID and, if not, create new IDs saleDAL = clientService.CheckNameId(saleDAL).Result; saleDAL = productService.CheckNameId(saleDAL).Result; // write to the sales database from the file saleService.Add(saleDAL); //SaveChangesWithException(saleService, "заказа"); }
public async Task <PriceDto> GetAsync([FromRoute] string productDesc, [FromQuery] string targetCurrency) { CurrencyConverter cc = new CurrencyConverter(); ParseCsv parser = new ParseCsv(); var(exchangeRateFileContent, productPricesFileContent) = await fileReader.ReadCsvAsync(); List <ExchangeRate> exchangeRates = parser.CsvExchangeRateParser(exchangeRateFileContent); List <Product> products = parser.CsvProductParser(productPricesFileContent); return(new PriceDto(cc.Convert(products.Find(p => p.Description == productDesc), exchangeRates, targetCurrency))); }
/// <summary> /// Convert the current CSV to a csv object /// allows to set false the second parameter to indicate that there is no headers /// </summary> /// <param name="path"></param> /// <returns></returns> private CsvContent ParseCsvData(string path) { var csv = new CsvContent(); var parser = new ParseCsv(Configuration); var parsedFile = parser.FromFile(path); var enumerable = parsedFile as IList <string>[] ?? parsedFile.ToArray(); if (Configuration.GetContainsHeaders()) { var headrs = enumerable.Take(1); var counter = 0; foreach (var headlist in headrs) { foreach (var element in headlist) { var head = new CsvField(); head.Field = element == null ? "" : element.ToString(); head.Position = counter; csv.Headers.Add(head); counter++; } } } //skip the first row if contains headers var rows = enumerable.Skip((Configuration.GetContainsHeaders() ? 1 : 0)); foreach (var row in rows) { var counter = 0; var rowline = new CsvRow(); foreach (string element in row) { rowline.FieldValue.Add(new CsvField { Value = element == null ? "" : element.ToString(), Position = counter, Field = (csv.Headers.Any() ? csv.Headers.ElementAt(counter).Field:"") }); counter++; } csv.Rows.Add(rowline); } return(csv); }