public ActionResult IndexUserSettings()
        {
            IAccountProvider accountProvider = new AspNetAccountProvider(
                HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(),
                HttpContext.GetOwinContext().Authentication);

            UserService userService = new UserService(
                new CustomApplicationDbContext(),
                new UserRepository(User.Identity.Name, accountProvider));

            ApplicationUser user = userService.GetUserByEmail(User.Identity.Name);

            return View(db.ApplicationSettings.Include(x => x.AppSetting)
                .Where(x => x.ScopeType == Helpers.EnumHelper.AppSettingScopeType.User &&
                        x.UserId == user.Id).ToList());
        }
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                IAccountProvider accountProvider = new AspNetAccountProvider(
                    UserManager, AuthenticationManager);

                AccountService accountService = new AccountService(accountProvider);
                AccountResponse result = await accountService.Login(model.Email, model.Password);

                if (result.Success)
                {
                    return RedirectToLocal(returnUrl);
                }
                else
                {
                    ModelState.AddModelError("", result.Message);
                }
            }
            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public async Task<ActionResult> EmailNotConfirmed()
        {
            if(User == null)
            {
                return View();
            }
            IAccountProvider accountProvider = new AspNetAccountProvider(
                 UserManager, AuthenticationManager);
            AccountService accountService = new AccountService(accountProvider);
            string url = GetUrlTemplate();
            AccountResponse result = await accountService.RequestEmailConfirmation(User.Identity.Name, url);

            EmailNotConfirmedViewModel vm = new EmailNotConfirmedViewModel
            {
                EmailAddress = User.Identity.Name
            };
            return View(vm);
        }
        public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                IAccountProvider accountProvider = new AspNetAccountProvider(
                    UserManager, AuthenticationManager);
                AccountService accountService = new AccountService(accountProvider);

                string url = GetUrlTemplate();

                AccountResponse result = await accountService.ForgotPassword(model.Email, url);
                return RedirectToAction("ForgotPasswordConfirmation", "Account");
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        /// <summary>
        /// Gets the user service
        /// </summary>
        /// <returns></returns>
        private IUserService GetUserService()
        {
            IAccountProvider accountProvider = new AspNetAccountProvider(
               HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(),
               HttpContext.GetOwinContext().Authentication);

            IUserService userService = UserTypeFactory.GetUserService(new UserServiceUoW(User.Identity.GetUserId(), accountProvider));
            return userService;
        }
        // GET: Users
        public ActionResult Index()
        {
            Mapper.CreateMap<ApplicationUser, UserViewModel>();
            IAccountProvider accountProvider = new AspNetAccountProvider(
                HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(),
                HttpContext.GetOwinContext().Authentication);

            IUserService userService = UserTypeFactory.GetUserService(new UserServiceUoW(User.Identity.GetUserId(), accountProvider));
            IList<UserViewModel> listOfUsers = Mapper.Map<IList<ApplicationUser>, IList<UserViewModel>>(
                userService.GetUsers().ToList());
            UserListViewModel userListViewModel = new UserListViewModel
            {
                Users = listOfUsers
            };
            userService.UpdateUserTenants();
            return View(userListViewModel);
        }