コード例 #1
0
        public IActionResult LoadProducts(LoadProductsViewModel model)
        {
            if (ModelState.IsValid)
            {
                TextReader reader    = new StreamReader(model.Products.OpenReadStream());
                var        csvReader = new CsvReader(reader, CultureInfo.InvariantCulture);
                var        records   = csvReader.GetRecords <Product>();

                var products = HttpContext.Session.GetObjectFromJson <HashSet <ProductViewModel> >(sessionKey);

                if (products == null)
                {
                    products = new HashSet <ProductViewModel>();
                }

                var productsProcessed = true;

                var productsFromCsv = records.Select(r => new ProductViewModel()
                {
                    CustomerId     = r.CustomerId,
                    Domain         = r.Domain,
                    DurationMonths = r.DurationMonths,
                    ProductName    = r.ProductName,
                    StartDate      = r.StartDate
                });

                foreach (var product in productsFromCsv)
                {
                    productsProcessed = this._processProduct(product) && productsProcessed;

                    products.Add(product);
                }

                if (productsProcessed)
                {
                    HttpContext.Session.SetObjectAsJson(sessionKey, products);
                }
                else
                {
                    ModelState.AddModelError("Products", "Products not processed. Please try again.");

                    return(View(model));
                }

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
コード例 #2
0
        public IActionResult LoadProducts()
        {
            var model = new LoadProductsViewModel();

            return(View(model));
        }