示例#1
0
        public UserModel(int userId, string email, string userName, AccountStatus status
                         , DateTime dateCreatedUtc, DateTime lastLoginDateUtc, DateTime lastPasswordChangeDateUtc
                         , DateTime lastLockoutDateUtc, DateTime lastActivityDateUtc, int failedPasswordAttemptCount
                         , XElement extraInfo, string timeZoneInfoId, int profileImageId, Guid uniqueId, UserNameDisplayMode userNameDisplayMode
                         , string firstName, string lastName, Gender gender)
            : base(userId, email, profileImageId, firstName, lastName)
        {
            this.UserName                   = userName;
            this.Status                     = status;
            this.DateCreatedUtc             = dateCreatedUtc;
            this.LastLoginDateUtc           = lastLoginDateUtc;
            this.LastPasswordChangeDateUtc  = lastPasswordChangeDateUtc;
            this.LastLockoutDateUtc         = lastLockoutDateUtc;
            this.LastActivityDateUtc        = lastActivityDateUtc;
            this.FailedPasswordAttemptCount = failedPasswordAttemptCount;
            this.ExtraInfo                  = extraInfo;
            this.TimeZoneInfoId             = timeZoneInfoId;
            this.UniqueId                   = uniqueId;
            this.UserNameDisplayMode        = userNameDisplayMode;
            this.Gender                     = gender;

            this.UserRoles = new HashSet <string>();
        }
        public BusinessObjectActionReport <UserCreateStatus> CreateUser(ref IUserBasic user, string password, List <UserRole> roles
                                                                        , UserNameDisplayMode userNameDisplayMode, string firstName, string lastName, Workmate.Components.Contracts.Membership.Gender gender, out Guid uniqueId, int applicationId)
        {
            uniqueId = Guid.NewGuid();
            UserCreateStatus userCreateStatus = UserCreateStatus.UnknownError;

            BusinessObjectActionReport <UserCreateStatus> businessObjectActionReport = new BusinessObjectActionReport <UserCreateStatus>(UserCreateStatus.UnknownError);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(user);
            if (!businessObjectActionReport.ValidationResult.IsValid)
            {
                return(businessObjectActionReport);
            }
            string text = this.GenerateSalt();
            ValidatePasswordStatus status = ValidatePasswordStatus.Valid;

            if (!this.IsPasswordValid(password, text, out status))
            {
                businessObjectActionReport.Status = (UserCreateStatus)status;
                return(businessObjectActionReport);
            }

            int      userId;
            int      returnValue;
            DateTime dateCreatedUtc;

            try
            {
                using (IDataStoreContext dataStoreContext = this.DataStore.CreateContext())
                {
                    returnValue = dataStoreContext.wm_Users_Insert(applicationId, user.UserName, user.Email, this.EncodePassword(password, text, this.PasswordFormat)
                                                                   , text, (int)this.PasswordFormat, user.AccountStatus, roles.Select(c => c.ToString()).ToList(), user.ProfileImageId, uniqueId, userNameDisplayMode
                                                                   , user.TimeZoneInfoId, firstName, lastName, gender, out userId, out dateCreatedUtc);
                }
            }
            catch (Exception ex)
            {
                _Log.Error("Error at Users_Insert", ex);

                businessObjectActionReport.Status = UserCreateStatus.SqlError;
                return(businessObjectActionReport);
            }

            if (returnValue == 0)
            {
                user.UserId = userId;
                user.LastActivityDateUtc = dateCreatedUtc;
                user.DateCreatedUtc      = dateCreatedUtc;
                userCreateStatus         = UserCreateStatus.Success;
            }
            else
            {
                switch (returnValue)
                {
                case -1: userCreateStatus = UserCreateStatus.UsernameAlreadyExists; break;

                case -2: userCreateStatus = UserCreateStatus.EmailAlreadyExists; break;

                default:
                    _Log.Error("Error at Users_Insert, ErrorCode: " + returnValue);
                    userCreateStatus = UserCreateStatus.SqlError; break;
                }
            }

            businessObjectActionReport.Status = userCreateStatus;

            if (businessObjectActionReport.Status == UserCreateStatus.Success)
            {
                _Log.InfoFormat("Successfully created user {0}.", user.UserId);
            }

            return(businessObjectActionReport);
        }