public ActionResult ActivateAccount(string username, string code)
        {
            var result = this.accountActivationService.TryCompleteActivation(username, code);

            switch (result)
            {
                case CompleteActivationResult.Success:
                    return this.View("AccountActivated");
                case CompleteActivationResult.NotFound:
                    ModelState.AddModelError(string.Empty, "Your account activation session cannot be found.");
                    break;
                case CompleteActivationResult.IncorrectCode:
                    ModelState.AddModelError(string.Empty, "Your account activation code was incorrect.");
                    break;
                case CompleteActivationResult.Expired:
                    ModelState.AddModelError(string.Empty, "Your account activation session has expired.");
                    break;
            }

            var model = new AccountActivationModel(username);
            return this.View("AccountActivationFailed", model);
        }
        public ActionResult AwaitingAccountActivation(string username)
        {
            var model = new AccountActivationModel(username);

            return this.View(model);
        }
        public ActionResult ResendActivationEmail(string username)
        {
            var user = this.userRepo.Open(username);

            if (user.IsActive)
            {
                var model = new AccountActivationModel(username);
                return this.View("AlreadActivated", model);
            }

            this.accountActivationService.BeginActivation(user);

            return this.RedirectToAction("AwaitingAccountActivation", new { username });
        }