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())); }
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)); }