package com.style24.persistence.domain;

import com.style24.admin.support.security.session.TsaSession;
import com.style24.core.support.util.CryptoUtils;
import com.style24.core.support.util.MaskingUtils;
import com.style24.persistence.TscBaseDomain;
import com.style24.persistence.TscPageRequest;

import lombok.Data;

/**
 * 상담(1:1문의) Domain
 *
 * @author gagamel
 * @since 2020. 12. 24
 */
@SuppressWarnings("serial")
@Data
public class Counsel extends TscBaseDomain {

	private Integer counselSq;		// 상담일련번호
	private String counselType;		// 상담유형(C-1:1문의, G-상품문의)
	private String siteCd;			// 사이트코드(공통코드G000)
	private String siteNm;			// 사이트명
	private String counselClsf;		// 상담분류(공통코드G059)
	private String counselClsfNm;	// 상담분류명
	private String counselDclsf;	// 상담분류상세(공통코드G591~G599)
	private String counselDclsfNm;	// 상담분류상세명
	private Integer custNo;			// 고객번호
	private String custId;			// 고객ID
	private String custNm;			// 고객명
	private String cellPhnno;		// 휴대전화번호
	private String smsReqYn;		// SMS(알림톡)요청여부
	private String smsSendYn;		// SMS(알림톡)발송여부
	private String email;			// 이메일
//	private String emailReqYn;		// 이메일요청여부
//	private String emailSendYn;		// 이메일발송여부
	private String relOrdNo;		// 관련상품 주문번호
	private String relGoodsCd;		// 관련상품코드(상품문의에서만 사용)
	private String goodsNm;			// 상품명(상품문의에서만 사용)
	private String goodsImg;		// 상품이미지
	private String selfGoodsYn;		// 자사상품여부(상품문의에서만 사용)
	private String questTitle;		// 문의제목
	private String questContent;	// 문의내용
	private String questDt;			// 문의일시
	private String orgFileNm1;		// 원본파일명1
	private String sysFileNm1;		// 시스템파일명1
	private String orgFileNm2;		// 원본파일명2
	private String sysFileNm2;		// 시스템파일명2
	private String ansStat;			// 답변상태(공통코드G060)
	private String ansStatNm;		// 답변상태명
	private String ansTransYn;		// 답변의뢰여부(상품문의에서만 사용)
	private String ansCompCd;		// 답변업체코드(상품문의에서만 사용)
	private String ansCompNm;		// 답변업체명(상품문의에서만 사용)
	private Integer ansTransNo;		// 답변의뢰자번호(상품문의에서만 사용)
	private String ansTransNm;		// 답변의뢰자명(상품문의에서만 사용)
	private String ansTransDt;		// 답변의뢰일시(상품문의에서만 사용)
	private Integer assignedCsNo;	// 할당된CS담당자번호
	private String assignedCsNm;	// 할당된CS담당자명
	private String assignedYmd;		// 할당된연월일
	private String assignedHms;		// 할당된시분초
	private String ansTitle;		// 답변제목
	private String ansContent;		// 답변내용
	private Integer ansNo;			// 답변자번호
	private String ansNm;			// 답변자명
	private String ansDt;			// 답변일시
	private String secretYn;		// 비밀글여부(상품문의에서만 사용)
	private String delYn;			// 삭제여부

	private Integer ansSq;
	private String ansClsf;

	// 검색조건
	private String condition;		// 검색어
	private String custGb;			// 회원구분
	private String termGb;			// 기간구분
	private String termStdt;		// 검색시작날짜
	private String termEddt;		// 검색끝날짜
	
	// Pagination
	private TscPageRequest pageable;
	private int pageNo = 1;
	private int pageSize = 50;
	private int pageUnit = 10;
	private int cnt;

	// 암호화 대상 복호화 처리
	public String getCustNm() {
		this.custNm = CryptoUtils.decryptAES(this.custNm);
		return this.custNm;
	}

	public String getCellPhnno() {
		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
		return this.cellPhnno;
	}

	public String getEmail() {
		this.email = CryptoUtils.decryptAES(this.email);
		return this.email;
	}

	public String getMaskingCustId() {
		return TsaSession.getInfo().getMaskingYn().equals("Y") ? MaskingUtils.id(custId) : custId;
	}

	public String getMaskingCustNm() {
		return TsaSession.getInfo().getMaskingYn().equals("Y") ? MaskingUtils.name(getCustNm()) : getCustNm();
	}

	public String getMaskingCellPhnno() {
		return TsaSession.getInfo().getMaskingYn().equals("Y") ? MaskingUtils.phoneNo(getCellPhnno()) : getCellPhnno();
	}

	public String getMaskingEmail() {
		return TsaSession.getInfo().getMaskingYn().equals("Y") ? MaskingUtils.email(getEmail()) : getEmail();
	}

}
