Beispiel #1
0
        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));
        }
Beispiel #2
0
        // 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));
        }