public ActionResult Details(int id)
        {
            // find the user in the database
            var user = UserManager.FindById(id);

            // Check if the user exists
            if (user != null)
            {
                var probationaryColleague = (ProbationaryColleague)user;

                ProbationaryColleagueViewModel model = new ProbationaryColleagueViewModel()
                {
                    Id                     = probationaryColleague.Id,
                    Email                  = probationaryColleague.Email,
                    FirstName              = probationaryColleague.FirstName,
                    LastName               = probationaryColleague.LastName,
                    UserName               = probationaryColleague.UserName,
                    Level                  = probationaryColleague.Level,
                    Department             = probationaryColleague.Department.DepartmentName,
                    ColleagueRegion        = probationaryColleague.ColleagueRegion,
                    CityOfProbation        = probationaryColleague.CityOfProbation,
                    ProbationType          = probationaryColleague.ProbationType,
                    JoinDate               = probationaryColleague.JoinDate,
                    ProbationSuccessStatus = probationaryColleague.ProbationSuccessStatus,
                    Roles                  = string.Join(" ", UserManager.GetRoles(id).ToArray())
                };

                return(View(model));
            }
            else
            {
                // Customize the error view: /Views/Shared/Error.cshtml
                return(View("Error"));
            }
        }
        public ActionResult Delete(int id)
        {
            var probationaryColleague = (ProbationaryColleague)UserManager.FindById(id);

            if (probationaryColleague == null)
            {
                return(HttpNotFound());
            }

            ProbationaryColleagueViewModel model = new ProbationaryColleagueViewModel
            {
                Id                     = probationaryColleague.Id,
                Department             = probationaryColleague.Department.DepartmentName,
                Email                  = probationaryColleague.Email,
                FirstName              = probationaryColleague.FirstName,
                LastName               = probationaryColleague.LastName,
                Level                  = probationaryColleague.Level,
                ColleagueRegion        = probationaryColleague.ColleagueRegion,
                CityOfProbation        = probationaryColleague.CityOfProbation,
                ProbationType          = probationaryColleague.ProbationType,
                JoinDate               = probationaryColleague.JoinDate,
                ProbationSuccessStatus = probationaryColleague.ProbationSuccessStatus,
                Roles                  = string.Join(" ", UserManager.GetRoles(id).ToArray()),
            };

            return(View(model));
        }
        public ActionResult Edit(int id)
        {
            var probationaryColleague = (ProbationaryColleague)UserManager.FindById(id);

            if (probationaryColleague == null)
            {
                //return HttpNotFound();
                return(View("Error"));
            }

            ProbationaryColleagueViewModel model = new ProbationaryColleagueViewModel
            {
                Id                     = probationaryColleague.Id,
                Email                  = probationaryColleague.Email,
                FirstName              = probationaryColleague.FirstName,
                LastName               = probationaryColleague.LastName,
                ColleagueRegion        = probationaryColleague.ColleagueRegion,
                CityOfProbation        = probationaryColleague.CityOfProbation,
                ProbationType          = probationaryColleague.ProbationType,
                JoinDate               = probationaryColleague.JoinDate,
                Level                  = probationaryColleague.Level,
                DepartmentId           = probationaryColleague.DepartmentId,
                ProbationSuccessStatus = probationaryColleague.ProbationSuccessStatus,
                Roles                  = string.Join(" ", UserManager.GetRoles(id).ToArray())
            };

            // Prepare the dropdown list
            ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentName", probationaryColleague.DepartmentId);
            return(View(model));
        }
        public ActionResult Create(ProbationaryColleagueViewModel model)
        {
            if (ModelState.IsValid)
            {
                // Find department
                var probationaryColleague = new ProbationaryColleague
                {
                    UserName               = model.Email,
                    Email                  = model.Email,
                    FirstName              = model.FirstName,
                    LastName               = model.LastName,
                    ColleagueRegion        = model.ColleagueRegion,
                    CityOfProbation        = model.CityOfProbation,
                    ProbationType          = model.ProbationType,
                    JoinDate               = model.JoinDate,
                    Level                  = model.Level,
                    ProbationSuccessStatus = model.ProbationSuccessStatus,
                    DepartmentId           = model.DepartmentId,
                };

                var result = UserManager.Create(probationaryColleague, model.Password);

                if (result.Succeeded)
                {
                    //TODO Add user to ProbationaryColleague role (check if ProbationaryColleague role exists)
                    var roleResult = UserManager.AddToRoles(probationaryColleague.Id, "ProbationaryColleague");

                    if (roleResult.Succeeded)
                    {
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentName");
                        // Display error messages in the view @Html.ValidationSummary()
                        ModelState.AddModelError(string.Empty, roleResult.Errors.First());
                        return(View());
                    }
                }
                else
                {
                    ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentName");
                    // Display error messages in the view @Html.ValidationSummary()
                    ModelState.AddModelError(string.Empty, result.Errors.First());
                    return(View());
                }
            }

            ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentName");
            return(View());
        }
        public ActionResult Edit(int id, ProbationaryColleagueViewModel model)
        {
            // Exclude Password and ConfirmPassword properties from the model otherwise modelstate is false
            ModelState.Remove("Password");
            ModelState.Remove("ConfirmPassword");

            if (ModelState.IsValid)
            {
                var probationaryColleague = (ProbationaryColleague)UserManager.FindById(id);
                if (probationaryColleague == null)
                {
                    return(HttpNotFound());
                }

                // Edit the ProbationaryColleague info
                probationaryColleague.Email                  = model.Email;
                probationaryColleague.FirstName              = model.FirstName;
                probationaryColleague.LastName               = model.LastName;
                probationaryColleague.UserName               = model.Email;
                probationaryColleague.ColleagueRegion        = model.ColleagueRegion;
                probationaryColleague.CityOfProbation        = model.CityOfProbation;
                probationaryColleague.ProbationType          = model.ProbationType;
                probationaryColleague.JoinDate               = model.JoinDate;
                probationaryColleague.Level                  = model.Level;
                probationaryColleague.ProbationSuccessStatus = model.ProbationSuccessStatus;
                probationaryColleague.DepartmentId           = model.DepartmentId;

                var userResult = UserManager.Update(probationaryColleague);

                if (userResult.Succeeded)
                {
                    return(RedirectToAction("Index"));
                }
            }

            ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentName", model.DepartmentId);
            return(View());
        }