public User Register(string email, string firstName, string lastName, string password)
        {
            using (var context = GetContext())
            {
                if (context.Users.Any(u => u.Email == email))
                {
                    return(null);
                }

                var saltPassword = PasswordHelper.GenerateRandomPassword(PasswordConstants.UniqueKeyLength, false, false);
                var shaPassword  = HashHelper.Hash(saltPassword + password);

                var newUser = new Data.UserEntity
                {
                    FirstName    = firstName,
                    LastName     = lastName,
                    Password     = shaPassword,
                    PasswordSalt = saltPassword,
                    Created      = DateTime.Now,
                    Status       = UserStatus.Active.Status,
                    UserKey      = UuidHelper.GenerateUniqueKey(PasswordConstants.UniqueKeyLength),
                    Email        = email,
                };

                var userEntity = context.Users.Add(newUser).Entity;
                context.SaveChanges();

                return(_mapper.Map <User>(userEntity));
            }
        }
        public UserReset ForgotPassword(string email)
        {
            using (var context = GetContext())
            {
                if (string.IsNullOrEmpty(email))
                {
                    return(null);
                }

                var user = context.Users.SingleOrDefault(x => x.Email == email);

                if (user != null)
                {
                    user.ResetKey     = UuidHelper.GenerateUniqueKey(PasswordConstants.UniqueKeyLength);
                    user.ResetKeyTime = DateTime.Now.AddMinutes(_appSettings.ResetKeyDurationInMinutes);
                    context.SaveChanges();

                    return(_mapper.Map <UserReset>(user));
                }

                return(null);
            }
        }