package incheon.ags.mrb.share.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

/**
 * 레시피 공유 그룹 VO
 * - 레시피 공유 그룹 정보 관리
 */
@lombok.Getter @lombok.Setter
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RecipeShrnGroupVO {

    /** 그룹 ID */
    private Integer groupId;

    /** 그룹명 */
    @NotBlank(message = "그룹명은 필수입니다")
    @Size(max = 100, message = "그룹명은 100자를 초과할 수 없습니다")
    private String groupNm;

    /** 그룹 설명 */
    private String groupExpln;

    /** 최초등록일시 */
    private LocalDateTime frstRegDt;

    /** 최초등록자 ID */
    private String frstRegId;

    /** 최종수정일시 */
    private LocalDateTime lastMdfcnDt;

    /** 최종수정자 ID */
    private String lastMdfcnId;

    // ========================================
    // 조인 필드 (멤버 수 등)
    // ========================================

    /** 그룹 멤버 수 */
    private Integer memberCnt;

    /** 현재 사용자의 그룹 가입 여부 */
    private Boolean isMember;

    /** 현재 사용자의 활성화 여부 */
    private Boolean actvtnEn;

    // ========================================
    // 페이징 및 검색 조건
    // ========================================

    /** 현재 사용자 ID (검색 조건) */
    private String userId;

    /** 검색 키워드 */
    private String searchKeyword;

    /** 페이지 번호 */
    private Integer pageIndex;

    /** 페이지 크기 */
    private Integer pageSize;

    /** 시작 행 번호 */
    private Integer firstIndex;

    /** 종료 행 번호 */
    private Integer lastIndex;

    /** 총 건수 (목록 조회 시 사용) */
    private Integer totalCount;
}
