Пример #1
0
        public Result <long> PublishDeleteOrganizationUser(int?organizationUserId, int?userType, long valueDeletedAt, int organizationId)
        {
            if (!organizationUserId.HasValue)
            {
                return(new Result <long>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }

            if (!userType.HasValue)
            {
                return(new Result <long>(OrganizationUserServiceErrors.InvalidUserTypeId()));
            }

            // need to send the domain event to potential interested subscribers
            var message = publisher.CreateMessage(new OrganizationUserDeletedDomainEvent
            {
                UserType           = userType.Value,
                OrganizationUserId = organizationUserId.Value,
                OrganizationId     = organizationId,
                DeletedAt          = valueDeletedAt
            });

            publisher.Publish(message);

            return(new Result <long>(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()));
        }
Пример #2
0
        public Result <AnyOrganizationUserWithSharedUserId> DeleteOrganizationUser(int?organizationUserId, int?userType, int?organizationId)
        {
            if (!organizationId.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidOrganizationId()));
            }
            if (!userType.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidUserTypeId()));
            }
            if (!organizationUserId.HasValue)
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.InvalidOrganizationUserId()));
            }
            if (!organizationUserRepository.OrganizationUserExists(organizationUserId.Value, organizationId.Value))
            {
                return(new Result <AnyOrganizationUserWithSharedUserId>(OrganizationUserServiceErrors.NotFoundError()));
            }

            var deletedAt = organizationUserRepository.DeleteOrganizationUser(organizationUserId.Value, userType.Value, organizationId.Value);

            groupRepository.DisassociateOrganizationUserFromAllGroups(new DisassociateOrganizationUserFromAllGroupsCommand
            {
                OrganizationId     = organizationId.Value,
                OrganizationUserId = organizationUserId.Value
            });

            var isLastUserIdRelationship = organizationUserRepository.AnyOrganizationUserWithSharedUserId(organizationUserId.Value);

            isLastUserIdRelationship.DeletedAt = deletedAt;

            var publishResult = PublishDeleteOrganizationUser(
                organizationUserId.Value,
                userType.Value,
                deletedAt,
                organizationId.Value);

            return(new Result <AnyOrganizationUserWithSharedUserId>(isLastUserIdRelationship));
        }