public void RegisterUser(string username, string password, string email)
        {
            if (String.IsNullOrWhiteSpace(username))
            {
                throw new ArgumentNullException("username", "Username is required.");
            }

            if (String.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentNullException("password", "Password is required.");
            }

            if (String.IsNullOrWhiteSpace(email))
            {
                throw new ArgumentNullException("email", "Email address is required.");
            }

            if (!IsUsernameAvailable(username))
            {
                throw new UsernameExistsException(String.Format("The username {0} already exists.", username));
            }

            var user = new User
            {
                Username = username,
                EmailAddress = email,
                PasswordHash = _hashingStrategy.HashPassword(password)
            };

            _userRepository.Insert(user);
            _userRepository.SaveChanges();
        }
 public void Udate(User entity)
 {
     var user = Get(entity.Id);
     user.Username = entity.Username;
     user.EmailAddress = entity.EmailAddress;
     user.PasswordHash = entity.PasswordHash;
     user.ModifiedOn = DateTime.UtcNow;
 }
 public void ShouldHaveMethodToGetUserById()
 {
     var expected = new User
     {
         Id = 5,
         Username = "******"
     };
     var mockCommand = MockHelpers.CreateMockDbCommandForQuery<User>(new List<User> { expected });
     var mockUnitOfWOrk = new Mock<IUnitOfWork>();
     mockUnitOfWOrk.Setup(uow => uow.CreateCommand()).Returns(mockCommand.Object);
     var userRepository = new UserRepository(mockUnitOfWOrk.Object);
     var actual = userRepository.Get(5);
     Assert.AreEqual(expected.Id, actual.Id);
     Assert.AreEqual(expected.Username, actual.Username);
     Assert.AreEqual(1, mockCommand.Object.Parameters.Count);
 }
 public void Insert(User entity)
 {
     using (var command = UnitOfWork.CreateCommand())
     {
         command.CommandText = @"INSERT INTO Users(Username, EmailAddress, PasswordHash)  
                                      VALUES(@Username, @EmailAddress, @PasswordHash); SELECT @@IDENTITY AS Id;";
         command.AddParamaters(new {
             Username = entity.Username,
             EmailAddress = entity.EmailAddress,
             PasswordHash = entity.PasswordHash
         });
      
         var ret = command.ExecuteScalar().ToString();
         int id;
         Int32.TryParse(ret, out id);
         entity.Id = id;
     }
 }
        public FakeUserRepository()
        {
            var baseUser = new User
            {
                Username = "******",
                EmailAddress = "*****@*****.**",
                CreatedOn = DateTime.UtcNow,
                Id = 1,
                FailedLoginAttempts = 0,
                PasswordHash = "test"
            };

            _users = new List<User>
            {
                baseUser
            };

        }
        public void Udate(User entity)
        {
            using (var command = UnitOfWork.CreateCommand())
            {
                command.CommandText = @"UPDATE Users
                                            SET Username = @Username,
                                            EmailAddress = @EmailAddress, 
                                            PasswordHash = @PasswordHash,
                                            ModifiedOn = GETUTCDATE()  
                                        WHERE Id = @id";

                command.AddParamaters(new
                {
                    Username = entity.Username,
                    EmailAddress = entity.EmailAddress,
                    PasswordHash = entity.PasswordHash,
                    id = entity.Id
                });
              
                command.ExecuteNonQuery();
            }
        }
 public void Insert(User entity)
 {
     entity.Id = _users.Max(u => u.Id) + 1;
     _users.Add(entity);
 }