HsOfficeMembershipRealEntity.java
package net.hostsharing.hsadminng.hs.office.membership;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import net.hostsharing.hsadminng.errors.DisplayAs;
import net.hostsharing.hsadminng.hs.office.partner.HsOfficePartnerRealEntity;
import net.hostsharing.hsadminng.persistence.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import java.util.UUID;
import static net.hostsharing.hsadminng.hs.office.membership.HsOfficeMembershipEntity.MEMBER_NUMBER_TAG;
/**
* Raw (non-RBAC) membership access for resolving cross-membership references,
* where the referring row already grants visibility to the referenced membership.
*/
@Entity
@Table(schema = "hs_office", name = "membership")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DisplayAs("RealMembership")
public class HsOfficeMembershipRealEntity implements BaseEntity<HsOfficeMembershipRealEntity> {
@Id
@GeneratedValue
private UUID uuid;
@Version
private int version;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "partneruuid")
private HsOfficePartnerRealEntity partner;
@Column(name = "membernumbersuffix", length = 2)
private String memberNumberSuffix;
public Integer getMemberNumber() {
if (partner == null || partner.getPartnerNumber() == null || memberNumberSuffix == null) {
return null;
}
return partner.getPartnerNumber() * 100 + Integer.parseInt(memberNumberSuffix, 10);
}
public String getTaggedMemberNumber() {
return MEMBER_NUMBER_TAG + getMemberNumber();
}
}