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() { return OrgOperationalState.from(applicantContactId, channelIdMj, channelIdLaw).status(); } /** 신청기관 담당자가 배정되어야 채널을 만들 수 있다(담당자관리에서 등록·배정된 담당자). */ public boolean hasApplicantAssigned() { return applicantContactId != null; } 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; } }