public async Task<ActionResult> RegisterStudent(RegisterViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var user = new ApplicationUser {UserName = model.Login};
                    var result = await UserManager.CreateAsync(user, model.Password);
                    await UserManager.AddToRoleAsync(user.Id, Constants.Roles.Student);
                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, false, false);

                        var studentInfo = new Student
                        {
                            Id = user.Id,
                            Name = model.StudentRegisterVewModel.Name,
                            Surname = model.StudentRegisterVewModel.Surname
                        };
                        StudentRepository.InsertStudent(studentInfo);
                        if (model.StudentRegisterVewModel.SubjectIds != null)
                        {
                            foreach (var subjectId in model.StudentRegisterVewModel.SubjectIds)
                            {
                                var subject = SubjectRepository.GetSubjectId(Guid.Parse(subjectId));

                                StudentRepository.AddSubjectForStudent(studentInfo, subject);
                            }
                        }


                        return RedirectToAction("Index", "Home");
                    }
                    AddErrors(result);
                }
            }
            catch (Exception e)
            {
            }

            // If we got this far, something failed, redisplay form
            return RedirectToAction("Index", "Home");
        }
        public async Task<ActionResult> RegisterProfessor(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {UserName = model.Login, Email = model.Login};
                var result = await UserManager.CreateAsync(user, model.Password);
                await UserManager.AddToRoleAsync(user.Id, Constants.Roles.Professor);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, false, false);

                    var professorInfo = new Professor
                    {
                        Id = user.Id,
                        Name = model.ProfessorRegisterVewModel.Name,
                        Surname = model.ProfessorRegisterVewModel.Surname
                    };

                    ProfessorRepository.InsertProfessor(professorInfo);
                    if (model.ProfessorRegisterVewModel.Subjects != null)
                    {
                        foreach (var subjectName in model.ProfessorRegisterVewModel.Subjects)
                        {
                            var subject = new Subject
                            {
                                Id = Guid.NewGuid(),
                                Name = subjectName,
                                Professor = professorInfo
                            };

                            SubjectRepository.InsertSubject(subject);
                            ProfessorRepository.AddSubjectForProfessor(professorInfo, subject);
                        }
                    }


                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return RedirectToAction("Index", "Home");
        }