public async Task <ActionResult> CreateHR([Bind(Include = "FirstName, LastName, Email, SelectedFirstManager, SelectedSecondManager, SelectedDepartment, IsMedewerker, IsManager, IsHRManager, previousUrl")] EditModel input)
        {
            var user = input.ToApplicationUser();

            //Zet data klaar voor wanneer de gegevens niet goed zijn ingevuld, dan wordt de webpagina opnieuw terug gestuurd.
            var           managers     = _manService.GetAll();
            List <object> listmanagers = new List <object>();

            foreach (var item in managers)
            {
                listmanagers.Add(new
                {
                    ManagerID = item.ManagerID,
                    Name      = item.ApplicationUser.FirstName + " " + item.ApplicationUser.LastName
                });
            }
            var dropdownmanagers = new SelectList(listmanagers, "ManagerID", "Name");

            var           departments     = _depService.GetAllDepartments();
            List <object> listdepartments = new List <object>();

            foreach (var item in departments)
            {
                listdepartments.Add(new
                {
                    DepartmentID = item.DepartmentID,
                    Name         = item.DepartmentName
                });
            }
            var dropdowndepartments = new SelectList(listdepartments, "DepartmentID", "Name");

            var model = new EditModel();

            input.FirstManagers  = dropdownmanagers;
            input.SecondManagers = dropdownmanagers;
            input.Departments    = dropdowndepartments;

            //Creeert foutmeldingen waar nodig.
            if (_userService.UserExists(user.Email))
            {
                ShowMessage("Deze gebruiker bestaat al", MessageType.Danger);
                return(View("CreateHR", input));
            }

            if (_userService.EmailExists(user.Email))
            {
                ShowMessage("Deze gebruiker bestaat al", MessageType.Danger);
                return(View("CreateHR", input));
            }



            if (user.IsMedewerker == false)
            {
                ShowMessage("Een gebruiker moet minimaal de rechten krijgen van medewerker", MessageType.Danger);
                return(View("CreateHR", input));
            }


            if (user.FirstName == null)
            {
                ShowMessage("U heeft de volgende waarde niet ingevuld: Voornaam", MessageType.Danger);
                return(View("CreateHR", input));
            }
            if (user.LastName == null)
            {
                ShowMessage("U heeft de volgende waarde niet ingevuld: Achternaam", MessageType.Danger);
                return(View("CreateHR", input));
            }
            if (user.Email == null)
            {
                ShowMessage("U heeft de volgende waarde niet ingevuld: E-mailadres", MessageType.Danger);
                return(View("CreateHR", input));
            }

            var expiryDate = DateTime.Now.AddDays(Properties.Settings.Default.FirstPasswordResetTimeOutInDays);
            var token      = string.Format("{0}|{1}", user.UserID, expiryDate.ToString("yyyyMMddHHmmss")).HashToMd5();



            //Slaat de veranderingen op in de database.
            if (ModelState.IsValid)
            {
                _userService.Save(user);

                token = HttpUtility.UrlEncode(token);

                var link = string.Format(@"<a href=""{0}"">link</a>", Url.Action("Login", "Account", new { t = token }, Request.Url.Scheme));
                await MailHelper.Welcome(user.Email, link);

                if (input.IsManager == true)
                {
                    if (_manService.IsManager(input.UserID) == false)
                    {
                        var manager = input.ToManager(user);

                        if (ModelState.IsValid)
                        {
                            _manService.Save(manager);
                        }
                    }
                    else
                    {
                        var manager = _manService.Get(_manService.GetManageridByUserID(input.UserID));
                        input.ToManager(user, manager);

                        if (ModelState.IsValid)
                        {
                            _manService.Save(manager);
                        }
                    }
                }

                TempData["Saved"] = "true";

                return(RedirectToAction("IndexHR", "User"));
            }

            //Wanneer er iets is misgegaan, wordt de webpagina opnieuw getoond.
            return(View(input));
        }