// To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD public async Task <IActionResult> OnPostAsync(string[] selectedModule) { var newNiveau = new Niveau(); if (selectedModule != null) { newNiveau.Module_Niveaus = new List <Module_Niveau>(); foreach (var module in selectedModule) { var moduleToAdd = new Module_Niveau { ModuleID = module }; newNiveau.Module_Niveaus.Add(moduleToAdd); } } if (await TryUpdateModelAsync <Niveau>( newNiveau, "Niveau", i => i.NiveauID, i => i.TITRE, i => i.ProfesseurID, i => i.FILIERE )) { _context.Niveaux.Add(newNiveau); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); } PopulateNiveauHasModules(_context, newNiveau); return(Page()); }
public void UpdateNiveauHasModules(EnsaContext context, string[] selectedModule, Niveau niveauToUpdate) { if (selectedModule == null) { niveauToUpdate.Module_Niveaus = new List <Module_Niveau>(); return; } var selectedModuleHS = new HashSet <string>(selectedModule); var NiveauModules = new HashSet <string> (niveauToUpdate.Module_Niveaus.Select(c => c.Module.ModuleID)); foreach (var module in context.Modules) { if (selectedModuleHS.Contains(module.ModuleID.ToString())) { if (!NiveauModules.Contains(module.ModuleID)) { niveauToUpdate.Module_Niveaus.Add( new Module_Niveau { NiveauID = niveauToUpdate.NiveauID, ModuleID = module.ModuleID }); } } else { if (NiveauModules.Contains(module.ModuleID)) { Module_Niveau moduleToRemove = niveauToUpdate .Module_Niveaus .SingleOrDefault(i => i.ModuleID == module.ModuleID); context.Remove(moduleToRemove); } } } }