public User CreateUser(User user) { if (user == null) { throw new ArgumentException("User is missing"); } if (string.IsNullOrEmpty(user.EmailAddress)) { throw new ArgumentException("EmailAddress address is missing"); } if (!_regexUtility.IsEmailValid(user.EmailAddress)) { throw new ArgumentException("EmailAddress address is invalid"); } if (string.IsNullOrEmpty(user.UserName)) { throw new ArgumentException("UserName is missing"); } if (string.IsNullOrEmpty(user.EncryptedPassword)) { throw new ArgumentException("Password is missing"); } try { if (user.Status == UserStatus.Unverified) { UserVerification userVerification = _userVerificationFactory.Create(); user.UserVerifications = new List <UserVerification>(); user.UserVerifications.Add(userVerification); } _unitOfWork.Users.Add(user); _unitOfWork.Commit(); return(user); } catch (Exception ex) { _logger.Error(ex, "Failed to create user with parameters: UserName={0}, EmailAddress={1}, TypeOfUser={2}", user.UserName, user.EmailAddress, user.TypeOfUser); return(null); } }