Ejemplo n.º 1
0
        // 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);
                    }
                }
            }
        }