public async Task <IActionResult> Register(RegisterViewModel user) { if (ModelState.IsValid) { if (user.Rol == UserType.Student) { var student = new Student { FirstName = user.FirstName, LastName = user.LastName, Email = user.Email }; var group = await _context.Groups.AsNoTracking().FirstOrDefaultAsync(g => g.Name == user.Group); if (group == null) { student.Group = new Group { Name = user.Group }; } else { student.GroupId = group.Id; } student.Password = new PasswordHasher <Student>().HashPassword(student, user.Password); _context.Add(student); _context.SaveChanges(); } else { var prof = new Professor { FirstName = user.FirstName, LastName = user.LastName, Email = user.Email }; prof.Password = new PasswordHasher <Professor>().HashPassword(prof, user.Password); _context.Add(prof); _context.SaveChanges(); } return(RedirectToAction("Login")); } ViewData["Group"] = new SelectList(_context.Groups.AsNoTracking(), "Id", "Name"); return(View(user)); }
public async Task <IActionResult> Create([Bind("Deadline,ProfessorId,Concept,Group")] Assignment assignment) { if (ModelState.IsValid) { var group = _context.Groups.AsNoTracking().FirstOrDefault(g => g.Name == assignment.Group.Name); if (group == null) { group = new Group() { Name = assignment.Group.Name }; _context.Add(group); await _context.SaveChangesAsync(); } var concept = _context.Concepts.AsNoTracking().FirstOrDefault(c => c.Name == assignment.Concept.Name); if (concept == null) { concept = new Concept() { Name = assignment.Concept.Name }; _context.Add(concept); await _context.SaveChangesAsync(); } assignment.GroupId = group.Id; assignment.ConceptId = concept.Id; assignment.Group = null; assignment.Concept = null; assignment.ProfessorId = (int)HttpContext.Session.GetInt32("ID"); _context.Add(assignment); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Create), new { message = "Tema trimisa cu succes" })); } ViewData["Group"] = new SelectList(_context.Groups.AsNoTracking(), "Id", "Name", assignment.Group); ViewData["Concept"] = new SelectList(_context.Concepts.AsNoTracking(), "Id", "Name", assignment.Concept); return(View(assignment)); }