package incheon.cmm.g2f.layer.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;

import incheon.com.cmm.ComDefaultVO;

import java.io.Serial;

@EqualsAndHashCode(callSuper = true)
@lombok.Getter @lombok.Setter
@Schema(description = "업무 레이어 검색 요청")
public class userLayerSearchRequestDTO extends ComDefaultVO {

    @Serial
    private static final long serialVersionUID = -1724035129495604317L;

    @Schema(description = "업무 레이어 ID")
    private Integer userLyrId;  // DB 컬럼 user_lyr_id

    @Schema(description = "업무 레이어 이름")
    private String userLyrNm;   // DB 컬럼 user_lyr_nm

    @Schema(description = "레이어 그룹 코드")
    private String lyrGroupCd;

    @Schema(description = "레이어 대분류 코드")
    private String lyrLclsfCd;

    @Schema(description = "레이어 중분류 코드")
    private String lyrMclsfCd;

    @Schema(description = "레이어 소분류 코드")
    private String lyrSclsfCd;

    @Schema(description = "좌표계", example = "5186")
    private String cntm;

    @Schema(description = "공간 타입", example = "MULTIPOLYGON")
    private String spceTy;

    @Schema(description = "검색 키워드")
    private String searchKeyword;

    @Schema(description = "정렬 컬럼", example = "user_lyr_nm")
    private String sortColumn = "user_lyr_nm";

    @Schema(description = "정렬 방향", example = "ASC")
    private String sortDirection = "ASC";

    @Schema(description = "페이지 크기", example = "10")
    private int pageSize = 10;

    public int getOffset() {
        int pageIndex = getPageIndex() <= 0 ? 1 : getPageIndex();
        return (pageIndex - 1) * pageSize;
    }

    public void setUserLyrNm(String userLyrNm){
        this.userLyrNm = userLyrNm;
        this.searchKeyword = userLyrNm; // 검색 키워드 자동 설정
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
