public async Task <IActionResult> Edit(int id, EditOpleidingViewModel viewModel) { if (id != viewModel.Opleiding.OpleidingID) { return(NotFound()); } if (ModelState.IsValid) { // Load opleiding from database since we lose values of KlantOpleidingen after form submit in View Opleiding opleiding = await _context.Opleiding.Include(o => o.KlantOpleidingen) .SingleOrDefaultAsync(x => x.OpleidingID == id); // Save values from viewmodel to tracked opleiding instance opleiding.Naam = viewModel.Opleiding.Naam; opleiding.Prijs = viewModel.Opleiding.Prijs; opleiding.AantalLesuren = viewModel.Opleiding.AantalLesuren; // viewModel.GeselecteerdeKlanten is null when no Klant was selected in the view. if (viewModel.GeselecteerdeKlanten == null) { viewModel.GeselecteerdeKlanten = new List <int>(); } List <KlantOpleiding> nieuweKlanten = new List <KlantOpleiding>(); foreach (int klantID in viewModel.GeselecteerdeKlanten) { nieuweKlanten.Add(new KlantOpleiding { KlantID = klantID, OpleidingID = viewModel.Opleiding.OpleidingID }); } opleiding.KlantOpleidingen .RemoveAll(ko => !nieuweKlanten.Contains(ko)); opleiding.KlantOpleidingen.AddRange( nieuweKlanten.Where(nk => !opleiding.KlantOpleidingen.Contains(nk))); _context.Update(opleiding); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(viewModel)); }
// GET: Opleiding/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } Opleiding opleiding = await _context.Opleiding.Include(o => o.KlantOpleidingen) .SingleOrDefaultAsync(x => x.OpleidingID == id); if (opleiding == null) { return(NotFound()); } EditOpleidingViewModel viewModel = new EditOpleidingViewModel { Opleiding = opleiding, KlantenLijst = new SelectList(_context.Klanten, "KlantID", "VolledigeNaam"), GeselecteerdeKlanten = opleiding.KlantOpleidingen.Select(ko => ko.KlantID) }; return(View(viewModel)); }