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

import cn.novalon.gym.manage.sys.core.domain.BaseDomain;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 团课预约记录领域模型
 * 
 * @author 张翔
 * @date 2026-06-01
 */
public class GroupCourseBooking extends BaseDomain {

    //团课ID
    @Schema(description = "团课ID", example = "1")
    private Long courseId;

    //团课名称（关联查询）
    @Schema(description = "团课名称", example = "瑜伽入门")
    private String courseName;

    //会员ID
    @Schema(description = "会员ID", example = "1")
    private Long memberId;

    //会员卡记录ID
    @Schema(description = "会员卡记录ID", example = "1")
    private Long memberCardRecordId;

    //预约时间
    @Schema(description = "预约时间", example = "2026-06-01 10:00:00")
    private LocalDateTime bookingTime;

    //状态：0-已预约，1-已取消，2-已出席，3-缺席
    @Schema(description = "状态：0-已预约，1-已取消，2-已出席，3-缺席", example = "0")
    private String status;

    //取消时间
    @Schema(description = "取消时间", example = "2026-06-01 11:00:00")
    private LocalDateTime cancelTime;

    //课程开始时间
    @Schema(description = "课程开始时间", example = "2026-06-02 09:00:00")
    private LocalDateTime courseStartTime;

    //课程结束时间
    @Schema(description = "课程结束时间", example = "2026-06-02 10:00:00")
    private LocalDateTime courseEndTime;

    //上课地点
    @Schema(description = "上课地点", example = "健身房A区")
    private String location;

    public Long getCourseId() {
        return courseId;
    }

    public void setCourseId(Long courseId) {
        this.courseId = courseId;
    }

    public String getCourseName() {
        return courseName;
    }

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

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getMemberCardRecordId() {
        return memberCardRecordId;
    }

    public void setMemberCardRecordId(Long memberCardRecordId) {
        this.memberCardRecordId = memberCardRecordId;
    }

    public LocalDateTime getBookingTime() {
        return bookingTime;
    }

    public void setBookingTime(LocalDateTime bookingTime) {
        this.bookingTime = bookingTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public LocalDateTime getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(LocalDateTime cancelTime) {
        this.cancelTime = cancelTime;
    }

    public LocalDateTime getCourseStartTime() {
        return courseStartTime;
    }

    public void setCourseStartTime(LocalDateTime courseStartTime) {
        this.courseStartTime = courseStartTime;
    }

    public LocalDateTime getCourseEndTime() {
        return courseEndTime;
    }

    public void setCourseEndTime(LocalDateTime courseEndTime) {
        this.courseEndTime = courseEndTime;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }
}