package com.style24.persistence.domain;

import com.style24.core.support.session.TscSession;
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;

/**
 * 상품권 Domain
 *
 * @author jsshin
 * @since 2021. 01. 22
 */
@SuppressWarnings("serial")
@Data
public class GiftCard extends TscBaseDomain {

	private Integer custGfcdSq;		// 고객상품권일련번호
	private Integer custNo;			// 고객번호
	private String custNm;			// 고객이름
	private String cellPhnno;		// 휴대전화번호(탈퇴 시 NULL로 처리)
	private String gfcdNo;			// 상품권번호
	private String gfcdNm;			// 상품권명
	private int chgGfcdAmt;			// 전환금액
	private int usGfcdAmt;			// 사용금액
	private int rmGfcdAmt;			// 잔여금액
	private String useStDate;		// 사용시작일
	private String useExpDate;		// 사용만료일

	//상품권 이력
	private Integer gfcdHstSq;		// 상품권이력일련번호
	private String occurGb;			// 발생구분(공통코드G074)
	private String occurDtlDesc;	// 발생상세설명
	private Integer ordNo;			// 주문번호
	private Integer ordDtlNo;		// 주문상세번호
	private int gfcdAmt;			// 금액
	
	//상품권  api 등록
	private Integer gfcdApiHstSq;	//상품권 api 일련번호
	private String ipAddr;			//아이피주소
	private String resultVal;		//결과값
	
	// 상품권 기본정보 변수
	private int useGift;			// 상품권 사용가능 금액
	private int totalCount;			// 상품권 총 수
	private int expireCount;		// 만료 예정 상품권 수
	private String balance;			// 증감 차감 표시
	private String balanceName;		// 증감 차감 설명
	private String goodsNm;			// 상품이름
	private String goodsCd;			// 상품코드
	private String searchDt;		// 날짜 변수
	private String month;		    // 날짜 변수
	private String year;			// 날짜 변수
	private int monthLength;		// 날짜 변수
	private String useYn;			// 사용가능여부

	// KCP 현금영수증 신청
	private int amt;				// 금액
	private Integer gfcdRcpApiSq;	// 현금영수증 신청 번호
	private String tradeNo;			// 거래번호
	private String authNo;			// 승인번호
	private String resultCd;		// 결과코드
	private String resultMsg;		// 결과메세지
	private String tradeTime;		// 주문시간
	private String nowTime;			// 현재시간
	private String ordPhnno;		// 주문자휴대폰번호
	private String ordNm;			// 주문자명
	private String ordEmail;		// 주문자 E-Mail
	private String modType;			// 요청 구분 (STSQ : 조회, STSC : 전체취소, STPC : 부분취소)
	private String cashReceiptsGb;	// 현금영수증 구분 (상품권 : giftCard, 결제 : payment)

	private Integer gfcdBulkRegSq;	// 대량등록일련번호
	private String custId;
	private String stDate;
	private String edDate;
	private String excelFileNm;

	private TscPageRequest pageable;
	private int pageNo = 1;
	private int pageSize = 50;
	private int pageUnit = 10;

	public String getMaskingCustId() {
		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.id(this.custId) : this.custId;
	}
	
	// 암호화 대상 복호화 처리
	public String getCustNm() {
		this.custNm = CryptoUtils.decryptAES(this.custNm);
		return this.custNm;
	}
	public String getCellPhnno() {
		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
		return this.cellPhnno;
	}

}
