File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package kr.itn.itnhub.org;
import kr.itn.itnhub.contact.Contact;
public class Organization {
private Long id;
private String orgNo;
private String orgName;
private String channelSlug;
private Long applicantContactId;
private Long mjContactId;
private Long itnContactId;
private Long lawyerContactId;
private String lawyerAssignedDate;
private String channelIdMj;
private String channelIdLaw;
private Integer stage;
/** findAll/findById가 contact 테이블과 조인해 채워준다. 시드/upsert 경로에서는 비어 있다. */
private Contact applicant;
private Contact mj;
private Contact itn;
private Contact lawyer;
/**
* 상태는 저장하지 않고 항상 파생한다.
* 저장하면 채널ID와 상태가 어긋나는 순간이 생기고, 그 어긋남을 고칠 방법이 없다.
*/
public OrgStatus getStatus() {
boolean mjActive = filled(channelIdMj);
boolean lawActive = filled(channelIdLaw);
if (mjActive && lawActive) {
return OrgStatus.ACTIVE;
}
if (mjActive || lawActive) {
return OrgStatus.PARTIAL;
}
return hasApplicantAssigned() ? OrgStatus.READY : OrgStatus.INFO_PENDING;
}
/** 신청기관 담당자가 배정되어야 채널을 만들 수 있다(담당자관리에서 등록·배정된 담당자). */
public boolean hasApplicantAssigned() {
return applicantContactId != null;
}
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 Long getApplicantContactId() { return applicantContactId; }
public void setApplicantContactId(Long applicantContactId) { this.applicantContactId = applicantContactId; }
public Long getMjContactId() { return mjContactId; }
public void setMjContactId(Long mjContactId) { this.mjContactId = mjContactId; }
public Long getItnContactId() { return itnContactId; }
public void setItnContactId(Long itnContactId) { this.itnContactId = itnContactId; }
public Long getLawyerContactId() { return lawyerContactId; }
public void setLawyerContactId(Long lawyerContactId) { this.lawyerContactId = lawyerContactId; }
public String getLawyerAssignedDate() { return lawyerAssignedDate; }
public void setLawyerAssignedDate(String lawyerAssignedDate) { this.lawyerAssignedDate = lawyerAssignedDate; }
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; }
/** null이면 아직 어떤 진행단계도 시작되지 않은 것이다(채널 생성 전). */
public Integer getStage() { return stage; }
public void setStage(Integer stage) { this.stage = stage; }
public Contact getApplicant() { return applicant; }
public void setApplicant(Contact applicant) { this.applicant = applicant; }
public Contact getMj() { return mj; }
public void setMj(Contact mj) { this.mj = mj; }
public Contact getItn() { return itn; }
public void setItn(Contact itn) { this.itn = itn; }
public Contact getLawyer() { return lawyer; }
public void setLawyer(Contact lawyer) { this.lawyer = lawyer; }
}