package kr.itn.itnhub.org; public class Organization { private Long id; private String orgNo; private String orgName; private String channelSlug; private String deptName; private String managerName; private String managerTitle; private String managerPhone; private String managerEmail; private String channelIdMj; private String channelIdLaw; /** * 상태는 저장하지 않고 항상 파생한다. * 저장하면 채널ID와 상태가 어긋나는 순간이 생기고, 그 어긋남을 고칠 방법이 없다. */ public OrgStatus getStatus() { boolean mj = filled(channelIdMj); boolean law = filled(channelIdLaw); if (mj && law) { return OrgStatus.ACTIVE; } if (mj || law) { return OrgStatus.PARTIAL; } return hasRequiredContact() ? OrgStatus.READY : OrgStatus.INFO_PENDING; } /** 직급/직함은 비어 있는 기관이 실제로 있으므로 필수에서 뺀다. */ public boolean hasRequiredContact() { return filled(deptName) && filled(managerName) && filled(managerPhone) && filled(managerEmail); } private static boolean filled(String value) { return value != null && !value.isBlank(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getOrgNo() { return orgNo; } public void setOrgNo(String orgNo) { this.orgNo = orgNo; } public String getOrgName() { return orgName; } public void setOrgName(String orgName) { this.orgName = orgName; } public String getChannelSlug() { return channelSlug; } public void setChannelSlug(String channelSlug) { this.channelSlug = channelSlug; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getManagerName() { return managerName; } public void setManagerName(String managerName) { this.managerName = managerName; } public String getManagerTitle() { return managerTitle; } public void setManagerTitle(String managerTitle) { this.managerTitle = managerTitle; } public String getManagerPhone() { return managerPhone; } public void setManagerPhone(String managerPhone) { this.managerPhone = managerPhone; } public String getManagerEmail() { return managerEmail; } public void setManagerEmail(String managerEmail) { this.managerEmail = managerEmail; } public String getChannelIdMj() { return channelIdMj; } public void setChannelIdMj(String channelIdMj) { this.channelIdMj = channelIdMj; } public String getChannelIdLaw() { return channelIdLaw; } public void setChannelIdLaw(String channelIdLaw) { this.channelIdLaw = channelIdLaw; } }