package cn.novalon.gym.manage.groupcourse.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 团课多条件查询请求DTO
 *
 * @author 张翔
 * @date 2026-06-14
 */
@Schema(description = "团课多条件查询参数")
public class GroupCourseQueryDto {

    @Schema(description = "课程名称（模糊查询）", example = "瑜伽")
    private String courseName;

    @Schema(description = "课程类型ID", example = "1")
    private Long courseType;

    @Schema(description = "查询开始日期", example = "2026-06-01T00:00:00")
    private LocalDateTime startDate;

    @Schema(description = "查询结束日期", example = "2026-06-30T23:59:59")
    private LocalDateTime endDate;

    @Schema(description = "时间段：morning-早晨(6:00-12:00), afternoon-下午(12:00-18:00), evening-夜晚(18:00-24:00)", example = "morning")
    private String timePeriod;

    @Schema(description = "价格排序：asc-从低到高, desc-从高到低", example = "asc")
    private String priceSort;

    @Schema(description = "按剩余名额最多排序", example = "true")
    private Boolean remainingMost;

    @Schema(description = "页码", example = "0")
    private Integer page = 0;

    @Schema(description = "每页大小", example = "10")
    private Integer size = 10;

    // ===== Getters and Setters =====

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public Long getCourseType() {
        return courseType;
    }

    public void setCourseType(Long courseType) {
        this.courseType = courseType;
    }

    public LocalDateTime getStartDate() {
        return startDate;
    }

    public void setStartDate(LocalDateTime startDate) {
        this.startDate = startDate;
    }

    public LocalDateTime getEndDate() {
        return endDate;
    }

    public void setEndDate(LocalDateTime endDate) {
        this.endDate = endDate;
    }

    public String getTimePeriod() {
        return timePeriod;
    }

    public void setTimePeriod(String timePeriod) {
        this.timePeriod = timePeriod;
    }

    public String getPriceSort() {
        return priceSort;
    }

    public void setPriceSort(String priceSort) {
        this.priceSort = priceSort;
    }

    public Boolean getRemainingMost() {
        return remainingMost;
    }

    public void setRemainingMost(Boolean remainingMost) {
        this.remainingMost = remainingMost;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }
}