The Relationship class describes the relationships that a user or portal owns. A handful of default Portal-Level Relationships will be be present for every portal (e.g. Friends, Followers, Family). Portal-Level Relationship will have a -1 in UserId field. Any custom User-Level Relationship created by user will also be defined by this class (e.g. My InLaws, Engineering Group). User-Relationship will always have an associcated PortalId. User-Level Relationship will always be tied to a specific Portal.
Business Layer to manage Relationships. Also contains CRUD methods.
The UserRelationship class defines the membership of the relationship. The user initiating the relationship is UserId. The target of the relationship is RelatedUserId. Status tracks relationship status as Initiated, Approved, Rejected etc.
The UserRelationshipPreference class defines the relationship preference per user The user initiating the relationship is UserId.
The UserSocial is a high-level class describing social details of a user. As an example, this class contains Friends, Followers, Follows lists.
The RelationshipStatus enum describes various UserRelationship statuses. E.g. Accepted, Pending.