/// <summary>
        /// The Details action displays the details of a specific CRU Supervisor user.
        /// </summary>
        /// <param name="id">Employee Id as a parameter</param>
        /// <returns>Details View</returns>
        // GET: CRUSupervisor/Details/5
        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 crusupervisor = (CRUSupervisor)user;

                CRUSupervisorViewModel model = new CRUSupervisorViewModel()
                {
                    Id           = crusupervisor.Id,
                    UserName     = crusupervisor.UserName,
                    Email        = crusupervisor.Email,
                    FirstName    = crusupervisor.FirstName,
                    LastName     = crusupervisor.LastName,
                    Telephone    = crusupervisor.Telephone,
                    TelExtension = crusupervisor.TelExtension,
                    Mobile       = crusupervisor.PhoneNumber,
                    Country      = crusupervisor.Country,
                    City         = crusupervisor.City,
                    Region       = crusupervisor.Region,
                    Roles        = string.Join(" ", UserManager.GetRoles(id).ToArray())
                };

                return(View(model));
            }
            else
            {
                // Customize the error view: /Views/Shared/Error.cshtml
                return(View("Error"));
            }
        }
        /// <summary>
        /// The Delete action removes a CRU Supervisor user from the database.
        /// </summary>
        /// <param name="id">Employee Id as a parameter</param>
        /// <returns>Delete View</returns>
        // GET: CRUSupervisor/Delete/5
        public ActionResult Delete(int id)
        {
            var crusupervisor = (CRUSupervisor)UserManager.FindById(id);

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

            CRUSupervisorViewModel model = new CRUSupervisorViewModel
            {
                Id           = crusupervisor.Id,
                UserName     = crusupervisor.UserName,
                Email        = crusupervisor.Email,
                FirstName    = crusupervisor.FirstName,
                LastName     = crusupervisor.LastName,
                Telephone    = crusupervisor.Telephone,
                TelExtension = crusupervisor.TelExtension,
                Mobile       = crusupervisor.PhoneNumber,
                Country      = crusupervisor.Country,
                City         = crusupervisor.City,
                Region       = crusupervisor.Region,
                Roles        = string.Join(" ", UserManager.GetRoles(id).ToArray())
            };

            return(View(model));
        }
        public ActionResult Create(CRUSupervisorViewModel model)
        {
            if (ModelState.IsValid)
            {
                var crusupervisor = new CRUSupervisor
                {
                    UserName     = model.UserName,
                    Email        = model.Email,
                    FirstName    = model.FirstName,
                    LastName     = model.LastName,
                    Telephone    = model.Telephone,
                    TelExtension = model.TelExtension,
                    PhoneNumber  = model.Mobile,
                    Country      = model.Country,
                    City         = model.City,
                    Region       = model.Region
                };

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

                if (result.Succeeded)
                {
                    var roleResult = UserManager.AddToRoles(crusupervisor.Id, "CRU Supervisor");

                    if (roleResult.Succeeded)
                    {
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        return(View());
                    }
                }
                else
                {
                    return(View());
                }
            }
            return(View());
        }
        public ActionResult Edit(int id, CRUSupervisorViewModel model)
        {
            // Exclude Password and ConfirmPassword properties from the model otherwise modelstate is false
            ModelState.Remove("Password");
            ModelState.Remove("ConfirmPassword");

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

                // Edit the crusupervisor info
                crusupervisor.UserName     = model.UserName;
                crusupervisor.Email        = model.Email;
                crusupervisor.FirstName    = model.FirstName;
                crusupervisor.LastName     = model.LastName;
                crusupervisor.Telephone    = model.Telephone;
                crusupervisor.TelExtension = model.TelExtension;
                crusupervisor.PhoneNumber  = model.Mobile;
                crusupervisor.Country      = model.Country;
                crusupervisor.City         = model.City;
                crusupervisor.Region       = model.Region;

                var userResult = UserManager.Update(crusupervisor);

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

            return(View());
        }