public bool CreateUser(string username, string password, string name, string surname, string email)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
            if (String.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", "name");
            if (String.IsNullOrEmpty(surname)) throw new ArgumentException("Value cannot be null or empty.", "surname");
            if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");

            using (var database = new DataEntities())
            {
                var user = new User
                {
                    Username = username,
                    Password = EncryptPassword(password),
                    Name = name,
                    Surname = surname,
                    Email = email,
                };
                database.AddToUser(user);
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
        public bool CreateUser(string username, string password, string name, string surname, string email)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
            if (String.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", "name");
            if (String.IsNullOrEmpty(surname)) throw new ArgumentException("Value cannot be null or empty.", "surname");
            if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");

            username = username.ToLowerInvariant();
            using (var database = _createDatabaseContext())
            {
                var user = new User
                {
                    Username = username,
                    Password = _passwordService.GetSaltedHash(password, username),
                    Name = name,
                    Surname = surname,
                    Email = email,
                };
                database.Users.Add(user);
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
        public bool CreateUser(string username, string password, string givenName, string surname, string email, Guid id)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "username");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
            if (String.IsNullOrEmpty(givenName)) throw new ArgumentException("Value cannot be null or empty.", "givenName");
            if (String.IsNullOrEmpty(surname)) throw new ArgumentException("Value cannot be null or empty.", "surname");
            if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");
            if (id == Guid.Empty) throw new ArgumentException("Id must be a proper Guid", "id");

            username = username.ToLowerInvariant();
            using (var database = CreateContext())
            {
                var user = new User
                {
                    Id = id,
                    Username = username,
                    GivenName = givenName,
                    Surname = surname,
                    Email = email,
                };
                SetPassword(user, password);
                database.Users.Add(user);
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
        public static bool SendForgotPasswordEmail(User user, string token)
        {
            bool result = true;
            try
            {
                var passwordLink = MembershipHelper.GetBaseUrl() +
                  "Home/ResetPassword?digest=" +
                  HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(token));

                var email = new MailMessage();

                //email.From = new MailAddress("*****@*****.**");
                email.To.Add(new MailAddress(user.Email));

                email.Subject =  Resources.Email_PasswordReset_Title;
                email.IsBodyHtml = true;

                email.Body = Resources.Email_PasswordReset_Body +
                           "<a href='" + passwordLink + "'>" + passwordLink + "</a>";

                SmtpClient smtpClient = new SmtpClient();

                smtpClient.Send(email);
            }
            catch (Exception ex)
            {
                result = false;
            }
            return result;
        }
 /// <summary>
 /// Create a new User object.
 /// </summary>
 /// <param name="name">Initial value of the Name property.</param>
 /// <param name="surname">Initial value of the Surname property.</param>
 /// <param name="username">Initial value of the Username property.</param>
 /// <param name="password">Initial value of the Password property.</param>
 /// <param name="email">Initial value of the Email property.</param>
 public static User CreateUser(global::System.String name, global::System.String surname, global::System.String username, global::System.String password, global::System.String email)
 {
     User user = new User();
     user.Name = name;
     user.Surname = surname;
     user.Username = username;
     user.Password = password;
     user.Email = email;
     return user;
 }
 /// <summary>
 /// Deprecated Method for adding a new object to the User EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToUser(User user)
 {
     base.AddObject("User", user);
 }
        private void SetPassword(User user, string password)
        {
            if (user == null) throw new ArgumentNullException("user", "User cannot be null");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Password cannot be null or empty.", "password");

            user.PasswordSalt = Guid.NewGuid().ToString();
            user.Password = _passwordService.GetSaltedHash(password, user.PasswordSalt);
        }
 private UserModel GetUserModel(User user)
 {
     return user == null ? null : new UserModel
     {
         Id = user.Id,
         Username = user.Username,
         GivenName = user.GivenName,
         Surname = user.Surname,
         Email = user.Email,
      };
 }
 private UserModel CreateViewModel(User user)
 {
     return new UserModel
     {
         Username = user.Username,
         Name = user.Name,
         Surname = user.Surname,
         Email = user.Email,
         Roles = user.Roles.Select(i => i.Name).ToArray(),
     };
 }