예제 #1
0
        public virtual UserStateMergePatchedDto ToUserStateMergePatchedDto(IUserStateMergePatched e)
        {
            var dto = new UserStateMergePatchedDto();

            dto.StateEventId                          = new UserStateEventIdDtoWrapper(e.StateEventId);
            dto.CreatedAt                             = e.CreatedAt;
            dto.CreatedBy                             = e.CreatedBy;
            dto.CommandId                             = e.CommandId;
            dto.UserName                              = e.UserName;
            dto.AccessFailedCount                     = e.AccessFailedCount;
            dto.Email                                 = e.Email;
            dto.EmailConfirmed                        = e.EmailConfirmed;
            dto.LockoutEnabled                        = e.LockoutEnabled;
            dto.LockoutEndDateUtc                     = e.LockoutEndDateUtc;
            dto.PasswordHash                          = e.PasswordHash;
            dto.PhoneNumber                           = e.PhoneNumber;
            dto.PhoneNumberConfirmed                  = e.PhoneNumberConfirmed;
            dto.TwoFactorEnabled                      = e.TwoFactorEnabled;
            dto.SecurityStamp                         = e.SecurityStamp;
            dto.Active                                = e.Active;
            dto.IsPropertyUserNameRemoved             = e.IsPropertyUserNameRemoved;
            dto.IsPropertyAccessFailedCountRemoved    = e.IsPropertyAccessFailedCountRemoved;
            dto.IsPropertyEmailRemoved                = e.IsPropertyEmailRemoved;
            dto.IsPropertyEmailConfirmedRemoved       = e.IsPropertyEmailConfirmedRemoved;
            dto.IsPropertyLockoutEnabledRemoved       = e.IsPropertyLockoutEnabledRemoved;
            dto.IsPropertyLockoutEndDateUtcRemoved    = e.IsPropertyLockoutEndDateUtcRemoved;
            dto.IsPropertyPasswordHashRemoved         = e.IsPropertyPasswordHashRemoved;
            dto.IsPropertyPhoneNumberRemoved          = e.IsPropertyPhoneNumberRemoved;
            dto.IsPropertyPhoneNumberConfirmedRemoved = e.IsPropertyPhoneNumberConfirmedRemoved;
            dto.IsPropertyTwoFactorEnabledRemoved     = e.IsPropertyTwoFactorEnabledRemoved;
            dto.IsPropertySecurityStampRemoved        = e.IsPropertySecurityStampRemoved;
            dto.IsPropertyActiveRemoved               = e.IsPropertyActiveRemoved;
            var userRoleEvents = new List <UserRoleStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.UserRoleEvents)
            {
                UserRoleStateCreatedOrMergePatchedOrRemovedDto eeDto = UserRoleStateEventDtoConverter.ToUserRoleStateEventDto(ee);
                userRoleEvents.Add(eeDto);
            }
            dto.UserRoleEvents = userRoleEvents.ToArray();

            var userClaimEvents = new List <UserClaimStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.UserClaimEvents)
            {
                UserClaimStateCreatedOrMergePatchedOrRemovedDto eeDto = UserClaimStateEventDtoConverter.ToUserClaimStateEventDto(ee);
                userClaimEvents.Add(eeDto);
            }
            dto.UserClaimEvents = userClaimEvents.ToArray();

            var userPermissionEvents = new List <UserPermissionStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.UserPermissionEvents)
            {
                UserPermissionStateCreatedOrMergePatchedOrRemovedDto eeDto = UserPermissionStateEventDtoConverter.ToUserPermissionStateEventDto(ee);
                userPermissionEvents.Add(eeDto);
            }
            dto.UserPermissionEvents = userPermissionEvents.ToArray();

            var userLoginEvents = new List <UserLoginStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.UserLoginEvents)
            {
                UserLoginStateCreatedOrMergePatchedOrRemovedDto eeDto = UserLoginStateEventDtoConverter.ToUserLoginStateEventDto(ee);
                userLoginEvents.Add(eeDto);
            }
            dto.UserLoginEvents = userLoginEvents.ToArray();


            return(dto);
        }
예제 #2
0
        public virtual void MergePatch(IMergePatchUser c)
        {
            IUserStateMergePatched e = Map(c);

            Apply(e);
        }
예제 #3
0
 void IUserState.When(IUserStateMergePatched e)
 {
     throw new NotSupportedException();
 }
예제 #4
0
        protected virtual IUserStateMergePatched Map(IMergePatchUser c)
        {
            var stateEventId         = new UserEventId(c.UserId, c.Version);
            IUserStateMergePatched e = NewUserStateMergePatched(stateEventId);

            e.UserName                              = c.UserName;
            e.AccessFailedCount                     = c.AccessFailedCount;
            e.Email                                 = c.Email;
            e.EmailConfirmed                        = c.EmailConfirmed;
            e.LockoutEnabled                        = c.LockoutEnabled;
            e.LockoutEndDateUtc                     = c.LockoutEndDateUtc;
            e.PasswordHash                          = c.PasswordHash;
            e.PhoneNumber                           = c.PhoneNumber;
            e.PhoneNumberConfirmed                  = c.PhoneNumberConfirmed;
            e.TwoFactorEnabled                      = c.TwoFactorEnabled;
            e.SecurityStamp                         = c.SecurityStamp;
            e.Active                                = c.Active;
            e.IsPropertyUserNameRemoved             = c.IsPropertyUserNameRemoved;
            e.IsPropertyAccessFailedCountRemoved    = c.IsPropertyAccessFailedCountRemoved;
            e.IsPropertyEmailRemoved                = c.IsPropertyEmailRemoved;
            e.IsPropertyEmailConfirmedRemoved       = c.IsPropertyEmailConfirmedRemoved;
            e.IsPropertyLockoutEnabledRemoved       = c.IsPropertyLockoutEnabledRemoved;
            e.IsPropertyLockoutEndDateUtcRemoved    = c.IsPropertyLockoutEndDateUtcRemoved;
            e.IsPropertyPasswordHashRemoved         = c.IsPropertyPasswordHashRemoved;
            e.IsPropertyPhoneNumberRemoved          = c.IsPropertyPhoneNumberRemoved;
            e.IsPropertyPhoneNumberConfirmedRemoved = c.IsPropertyPhoneNumberConfirmedRemoved;
            e.IsPropertyTwoFactorEnabledRemoved     = c.IsPropertyTwoFactorEnabledRemoved;
            e.IsPropertySecurityStampRemoved        = c.IsPropertySecurityStampRemoved;
            e.IsPropertyActiveRemoved               = c.IsPropertyActiveRemoved;

            e.CommandId = c.CommandId;


            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = ApplicationContext.Current.TimestampService.Now <DateTime>();

            var version = c.Version;

            foreach (IUserRoleCommand innerCommand in c.UserRoleCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IUserRoleEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddUserRoleEvent(innerEvent);
            }

            foreach (IUserClaimCommand innerCommand in c.UserClaimCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IUserClaimEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddUserClaimEvent(innerEvent);
            }

            foreach (IUserPermissionCommand innerCommand in c.UserPermissionCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IUserPermissionEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddUserPermissionEvent(innerEvent);
            }

            foreach (IUserLoginCommand innerCommand in c.UserLoginCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IUserLoginEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddUserLoginEvent(innerEvent);
            }


            return(e);
        }
예제 #5
0
        public virtual void When(IUserStateMergePatched e)
        {
            ThrowOnWrongEvent(e);

            if (e.UserName == null)
            {
                if (e.IsPropertyUserNameRemoved)
                {
                    this.UserName = default(string);
                }
            }
            else
            {
                this.UserName = e.UserName;
            }

            if (e.AccessFailedCount == null)
            {
                if (e.IsPropertyAccessFailedCountRemoved)
                {
                    this.AccessFailedCount = default(int);
                }
            }
            else
            {
                this.AccessFailedCount = (e.AccessFailedCount != null && e.AccessFailedCount.HasValue) ? e.AccessFailedCount.Value : default(int);
            }

            if (e.Email == null)
            {
                if (e.IsPropertyEmailRemoved)
                {
                    this.Email = default(string);
                }
            }
            else
            {
                this.Email = e.Email;
            }

            if (e.EmailConfirmed == null)
            {
                if (e.IsPropertyEmailConfirmedRemoved)
                {
                    this.EmailConfirmed = default(bool);
                }
            }
            else
            {
                this.EmailConfirmed = (e.EmailConfirmed != null && e.EmailConfirmed.HasValue) ? e.EmailConfirmed.Value : default(bool);
            }

            if (e.LockoutEnabled == null)
            {
                if (e.IsPropertyLockoutEnabledRemoved)
                {
                    this.LockoutEnabled = default(bool);
                }
            }
            else
            {
                this.LockoutEnabled = (e.LockoutEnabled != null && e.LockoutEnabled.HasValue) ? e.LockoutEnabled.Value : default(bool);
            }

            if (e.LockoutEndDateUtc == null)
            {
                if (e.IsPropertyLockoutEndDateUtcRemoved)
                {
                    this.LockoutEndDateUtc = default(DateTime?);
                }
            }
            else
            {
                this.LockoutEndDateUtc = e.LockoutEndDateUtc;
            }

            if (e.PasswordHash == null)
            {
                if (e.IsPropertyPasswordHashRemoved)
                {
                    this.PasswordHash = default(string);
                }
            }
            else
            {
                this.PasswordHash = e.PasswordHash;
            }

            if (e.PhoneNumber == null)
            {
                if (e.IsPropertyPhoneNumberRemoved)
                {
                    this.PhoneNumber = default(string);
                }
            }
            else
            {
                this.PhoneNumber = e.PhoneNumber;
            }

            if (e.PhoneNumberConfirmed == null)
            {
                if (e.IsPropertyPhoneNumberConfirmedRemoved)
                {
                    this.PhoneNumberConfirmed = default(bool);
                }
            }
            else
            {
                this.PhoneNumberConfirmed = (e.PhoneNumberConfirmed != null && e.PhoneNumberConfirmed.HasValue) ? e.PhoneNumberConfirmed.Value : default(bool);
            }

            if (e.TwoFactorEnabled == null)
            {
                if (e.IsPropertyTwoFactorEnabledRemoved)
                {
                    this.TwoFactorEnabled = default(bool);
                }
            }
            else
            {
                this.TwoFactorEnabled = (e.TwoFactorEnabled != null && e.TwoFactorEnabled.HasValue) ? e.TwoFactorEnabled.Value : default(bool);
            }

            if (e.SecurityStamp == null)
            {
                if (e.IsPropertySecurityStampRemoved)
                {
                    this.SecurityStamp = default(string);
                }
            }
            else
            {
                this.SecurityStamp = e.SecurityStamp;
            }

            if (e.Active == null)
            {
                if (e.IsPropertyActiveRemoved)
                {
                    this.Active = default(bool);
                }
            }
            else
            {
                this.Active = (e.Active != null && e.Active.HasValue) ? e.Active.Value : default(bool);
            }


            this.UpdatedBy = e.CreatedBy;
            this.UpdatedAt = e.CreatedAt;


            foreach (IUserRoleStateEvent innerEvent in e.UserRoleEvents)
            {
                IUserRoleState innerState = this.UserRoles.Get(innerEvent.GlobalId.RoleId);

                innerState.Mutate(innerEvent);
                var removed = innerEvent as IUserRoleStateRemoved;
                if (removed != null)
                {
                    this.UserRoles.Remove(innerState);
                }
            }

            foreach (IUserClaimStateEvent innerEvent in e.UserClaimEvents)
            {
                IUserClaimState innerState = this.UserClaims.Get(innerEvent.GlobalId.ClaimId);

                innerState.Mutate(innerEvent);
                var removed = innerEvent as IUserClaimStateRemoved;
                if (removed != null)
                {
                    this.UserClaims.Remove(innerState);
                }
            }

            foreach (IUserPermissionStateEvent innerEvent in e.UserPermissionEvents)
            {
                IUserPermissionState innerState = this.UserPermissions.Get(innerEvent.GlobalId.PermissionId);

                innerState.Mutate(innerEvent);
                var removed = innerEvent as IUserPermissionStateRemoved;
                if (removed != null)
                {
                    this.UserPermissions.Remove(innerState);
                }
            }

            foreach (IUserLoginStateEvent innerEvent in e.UserLoginEvents)
            {
                IUserLoginState innerState = this.UserLogins.Get(innerEvent.GlobalId.LoginKey);

                innerState.Mutate(innerEvent);
                var removed = innerEvent as IUserLoginStateRemoved;
                if (removed != null)
                {
                    this.UserLogins.Remove(innerState);
                }
            }
        }