package com.style24.persistence.domain;

import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonFormat;
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;

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

	private Integer reviewSq;			// 상품평일련번호
	private String goodsCd;				// 상품코드
	private String goodsNm;				// 상품명
	private String goodsImg;			// 상품이미지
	private String reviewGb;			// 상품평구분(R:일반상품평, P:포토/영상상품평)
	private Integer custNo;				// 고객번호
	private String custNm;				// 고객명
	private Integer ordNo;				// 주문번호
	private Integer ordDtlNo;			// 주문상세번호
	private String reviewTitle;			// 상품평제목
	private String reviewContent;		// 상품평내용
	private float score;				// 구매평점
	private int height;					// 키
	private int weight;					// 몸무게
	private String scoreSize;			// 사이즈점수(공통코드G040)
	private String scoreColor;			// 컬러점수(공통코드G039)
	private String scoreFit;			// 핏점수(공통코드G042)
	private String scoreThick;			// 두께감점수(공통코드G079)
	private String scoreWeight;			// 무게감점수(공통코드G080)
	private String scoreBall;			// 볼넓이점수(공통코드G041)
	private int giveDuePnt;				// 지급예정포인트
	private String pntGiveStat;			// 포인트지급상태(공통코드G043)
	private String dispYn;				// 표시여부
	private String delYn;				// 삭제여부
	private String confirmYn;			// 확인여부
	private Integer confirmUno;			// 확인자번호
	private String confirmUnm;			// 확인자명
	private String confirmDt;			// 확인일시
	private String admRpl;				// 관리자댓글
	private Integer admRplRegNo;		// 댓글등록자번호
	private String admRplRegNm;			// 댓글등록자명
	private String admRplDt;			// 관리자댓글등록일시
	private String rplCfmYn;			// 댓글확인여부
	private String rplCfmDt;			// 댓글확인일시
	private String bestYn;				// 베스트상품평여부
	private String bpntGiveYn;			// 베스트상품평포인트지급여부
	private int giveDueBpnt;			// 지급예정베스트포인트

	// 상품평 첨부파일
	private Collection<ReviewAttach> attachList;

	// 검색조건
	private String startDt;
	private String endDt;
	private String searchGb;
	private String searchTxt;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] goodsCds;

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

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

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

	// 베스트상품평포인트 생성
	private Integer custPntSq;		// 고객포인트일련번호
	private int gvPntAmt;			// 지급포인트금액
	private int rmPntAmt;			// 잔여포인트
	private String occurGb;			// 포인트발생구분
	private String occurDtlDesc;	// 포인트발생상세설명
	private int pntAmt;				// 포인트금액
	private String pntUploadStat;	// 포인트반영상태

}
