public async Task <IHttpActionResult> PostProfessor(ProfessorRegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var professor = new Professor
            {
                UserName     = model.Email,
                Email        = model.Email,
                Name         = model.Name,
                SSN          = model.SSN,
                PhoneNumber  = model.PhoneNumber,
                DepartmentId = model.DepartmentId
            };

            IdentityResult result = await UserManager.CreateAsync(professor, model.Password);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(CreatedAtRoute("DefaultApi", new { id = professor.Id }, (ProfessorResultViewModel)professor));
        }
        public async Task <ActionResult> Create(ProfessorRegisterViewModel registerModel, string[] selectedStudents, string[] grades)
        {
            var professor = new Professor()
            {
                FirstName = registerModel.FirstName, LastName = registerModel.LastName, Course = registerModel.Course
            };

            professor.Enrollments = new List <Enrollment>();

            if (ModelState.IsValid)
            {
                if (selectedStudents != null)
                {
                    foreach (var student in selectedStudents)
                    {
                        Enrollment newEnrollment = new Enrollment();
                        newEnrollment.Professor = professor;
                        int i = int.Parse(student);
                        newEnrollment.StudentID = i;
                        if (!string.IsNullOrEmpty(grades[i - 1]))
                        {
                            newEnrollment.Grade = int.Parse(grades[i - 1]);
                        }

                        professor.Enrollments.Add(newEnrollment);
                    }
                }

                var user = new ApplicationUser {
                    UserName = registerModel.Login
                };
                await UserManager.CreateAsync(user, registerModel.Password);

                professor.User = UserManager.FindByName(registerModel.Login);
                var db = HttpContext.GetOwinContext().Get <ApplicationDbContext>();
                db.Professors.Add(professor);
                db.SaveChanges();
            }

            PopulateAssignedStudents(professor);
            return(RedirectToAction("Index"));
        }