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)));
        }
Exemplo n.º 3
0
        /// <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);
        }