public async Task<ActionResult> AddStudent(StudentViewModel s)
        {
            if (!ModelState.IsValid)
            {
                await PopulateCoursesList();
                return View(s);
            }                

            try
            {
                var student = new StudentModel()
                {
                    User = new UserModel()
                    {
                        Username = s.Username,
                        PersonalDetail = new PersonalDetailModel()
                        {
                            Email = s.Email,
                            FirstName = s.FirstName,
                            LastName = s.LastName
                        },
                        Courses = new int[] {s.CourseId}
                    }
                };

                _studentsService.SetAuthData(AuthHelper.GetTokens(User));

                if (await _studentsService.Add(student))
                {
                    TempData["studentAdded"] = "Student registration successfully created";
                    return RedirectToAction("Index");
                }
                else
                {
                    TempData["error"] = "Failed to add student";
                    return RedirectToAction("AddStudent");
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.ToString());
                TempData["error"] = "An error occurred while adding new student";
                return RedirectToAction("AddStudent");
            }                        
        }
 public async Task<int> AddStudent(StudentModel student)
 {
     using (var dbModel = new EduTestEntities())
     {
         var dbStud = Mapper.Map<Student>(student);
         dbStud.User.Password = "******";   // TODO add logic for generating and sharing password
         if (dbStud.User.Roles != null && dbStud.User.Roles.Any())
         {
             foreach (var role in dbStud.User.Roles)
                 dbModel.Entry(role).State = EntityState.Unchanged;
         }
         if (dbStud.User.Courses != null && dbStud.User.Courses.Any())
         {
             foreach (var course in dbStud.User.Courses)
                 dbModel.Entry(course).State = EntityState.Unchanged;
         }
         dbModel.Students.Add(dbStud);
         await dbModel.SaveChangesAsync();
         return dbStud.UserId;
     }
 }