// To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD public async Task <IActionResult> OnPostAsync(string[] selectedMatiere) { var newModule = new Module(); if (selectedMatiere != null) { newModule.Module_Matieres = new List <Module_Matiere>(); foreach (var matiere in selectedMatiere) { var matiereToAdd = new Module_Matiere { MatiereID = matiere }; newModule.Module_Matieres.Add(matiereToAdd); } } if (await TryUpdateModelAsync <Module>( newModule, "Module", i => i.ModuleID, i => i.TITRE, i => i.ProfesseurID )) { _context.Modules.Add(newModule); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); } PopulateModuleHasMatiers(_context, newModule); return(Page()); }
public void UpdateModuleMatiere(EnsaContext context, string[] selectedMatiere, Module moduleToUpdate) { if (selectedMatiere == null) { moduleToUpdate.Module_Matieres = new List <Module_Matiere>(); return; } var selectedMatiereHS = new HashSet <string>(selectedMatiere); var ModuleMatieres = new HashSet <string> (moduleToUpdate.Module_Matieres.Select(c => c.Matiere.MatiereID)); foreach (var matiere in context.Matieres) { if (selectedMatiereHS.Contains(matiere.MatiereID.ToString())) { if (!ModuleMatieres.Contains(matiere.MatiereID)) { moduleToUpdate.Module_Matieres.Add( new Module_Matiere { ModuleID = moduleToUpdate.ModuleID, MatiereID = matiere.MatiereID }); } } else { if (ModuleMatieres.Contains(matiere.MatiereID)) { Module_Matiere matiereToRemove = moduleToUpdate .Module_Matieres .SingleOrDefault(i => i.MatiereID == matiere.MatiereID); context.Remove(matiereToRemove); } } } }