Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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));
        }