public async Task <IActionResult> Create([Bind("Name,ShortName,Description,FacultyID")] Subject subject, bool isUser, ICollection <int> tags, ICollection <int> professorIDs) { subject.Validated = !isUser; var tagSet = new HashSet <SubjectTagSet>(); var dbTags = _context.SubjectTag.AsNoTracking().Select(t => t.ID).ToList(); foreach (var tagID in tags) { if (dbTags.Any(t => t == tagID)) { var tSet = new SubjectTagSet { SubjectID = subject.ID, SubjectTagID = tagID }; tagSet.Add(tSet); _context.SubjectTagSet.Add(tSet); } } subject.SubjectTagSet = tagSet; var professorSet = new HashSet <ProfessorSubjectSet>(); var dbProfessors = _context.Professor.AsNoTracking().Select(p => p.ID).ToList(); foreach (var profID in professorIDs) { if (dbProfessors.Any(p => p == profID)) { var pSet = new ProfessorSubjectSet { ProfessorID = profID, SubjectID = subject.ID }; professorSet.Add(pSet); _context.ProfessorSubjectSet.Add(pSet); } } subject.Professors = professorSet; if (ModelState.IsValid) { _context.Add(subject); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewData["IsUser"] = isUser; ViewData["FacultyID"] = new SelectList(_context.Faculty, "ID", "Name"); ViewData["ProfessorID"] = new SelectList(_context.Professor, "ID", "FullName"); ViewData["SubjectTag"] = new SelectList(_context.SubjectTag, "ID", "Name"); return(View()); }
public async Task <IActionResult> Edit(int id, [Bind("ID,Name,ShortName,Description,FacultyID")] Subject subject, ICollection <int> professorIDs) { if (id != subject.ID) { return(NotFound()); } if (ModelState.IsValid) { try { var professorSet = new HashSet <ProfessorSubjectSet>(); var dbProfessors = _context.Professor.AsNoTracking().Select(p => p.ID).ToList(); foreach (var profID in professorIDs) { if (dbProfessors.Any(p => p == profID)) { var set = new ProfessorSubjectSet { ProfessorID = profID, SubjectID = subject.ID }; professorSet.Add(set); _context.ProfessorSubjectSet.Add(set); } } subject.Professors = professorSet; _context.Update(subject); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SubjectExists(subject.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index")); } ViewData["FacultyID"] = new SelectList(_context.Faculty, "ID", "ID", subject.FacultyID); return(View(subject)); }