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)); }
public IActionResult LoadProducts() { var model = new LoadProductsViewModel(); return(View(model)); }