public IActionResult BuyZubehör([FromForm] ICollection <int> zubehörIds) { // Struktur erstellen welche von EF verstanden wird var ausgewählteZubehöre = new List <KundeZubehör>(); foreach (var zubehörId in zubehörIds) { var selectedZubehör = new Zubehör { ZubehörId = zubehörId, ZubehörName = context.Zubehöre.FirstOrDefault(z => z.ZubehörId == zubehörId).ZubehörName, ZubehörKosten = context.Zubehöre.FirstOrDefault(z => z.ZubehörId == zubehörId).ZubehörKosten }; // ein Verbindungsobjekt mit der KundenId und der selektierten ProduktId erstellen var ausgewählterZubehör = new KundeZubehör { Zubehör = selectedZubehör }; ausgewählteZubehöre.Add(ausgewählterZubehör); } // Save Equipments to Session using Session Extension class HttpContext.Session.SetObjectAsJson("Zubehör", ausgewählteZubehöre); return(RedirectToAction("Index")); }
public async Task <IActionResult> Checkout() { var user = await userManager.FindByEmailAsync(User.Identity.Name); var produkt = HttpContext.Session.GetObjectFromJson <Produkt>("Artikel"); var zubehörListe = HttpContext.Session.GetObjectFromJson <List <KundeZubehör> >("Zubehör"); // Struktur erstellen welche von EF verstanden wird var selectedProducts = new List <KundeProdukt>(); var selectedZubehöre = new List <KundeZubehör>(); // ein Verbindungsobjekt mit der KundenId und der selektierten ProduktId erstellen var selectedProduct = new KundeProdukt { UserId = user.Id, ProduktId = produkt.ProduktId }; selectedProducts.Add(selectedProduct); if (zubehörListe != null) { foreach (var zubehör in zubehörListe) { var selectedZubehör = new KundeZubehör { UserId = user.Id, ZubehörId = zubehör.Zubehör.ZubehörId }; selectedZubehöre.Add(selectedZubehör); } } // die vorbereitete Struktur dem Datenbankkontext übergeben (ab jetzt ist es im Speicher) await context.AddRangeAsync(selectedProducts); await context.AddRangeAsync(selectedZubehöre); // die Veränderungen, welche dem Datenbankkontext bekannt sind, in die DB abspeichern await context.SaveChangesAsync(); // Session beenden und Daten löschen HttpContext.Session.Remove("Artikel"); HttpContext.Session.Remove("Zubehör"); // auf Checkout-Seite weiterleiten return(RedirectToAction("Dankeschön", "Home")); }