package com.yonge.cooleshow.admin.io.request;

import com.alibaba.fastjson.JSON;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
import com.yonge.toolset.base.page.QueryInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * Description
 *
 * @author liujunchi
 * @date 2022-10-08
 */
public class TeacherBindingUserVo {

    @ApiModel("BindingUserQuery-老师绑定的学生列表查询")
    public static class BindingUserQuery extends QueryInfo {

        @ApiModelProperty(value = "老师id",required = true)
        @NotNull(message = "老师id不能为空")
        private Long teacherId;

        @ApiModelProperty("查询条件 昵称、编号、手机号")
        private String search;

        @ApiModelProperty("绑定开始时间")
        private Date startTime;

        @ApiModelProperty("绑定结束时间")
        private Date endTime;

        public String jsonString() {
            return JSON.toJSONString(this);
        }

        public Long getTeacherId() {
            return teacherId;
        }

        public void setTeacherId(Long teacherId) {
            this.teacherId = teacherId;
        }

        @Override
        public String getSearch() {
            return search;
        }

        @Override
        public void setSearch(String search) {
            this.search = search;
        }

        public Date getStartTime() {
            return startTime;
        }

        public void setStartTime(Date startTime) {
            this.startTime = startTime;
        }

        public Date getEndTime() {
            return endTime;
        }

        public void setEndTime(Date endTime) {
            this.endTime = endTime;
        }
    }


    @ApiModel("BindingUserList-老师绑定的学生列表")
    public static class BindingUserList  {

        @ApiModelProperty("学生编号")
        private Long userId;

        @ApiModelProperty("昵称")
        private String username;


        @ApiModelProperty(value = "性别0女1男")
        private Integer gender;

        @ApiModelProperty(value = "年龄")
        private Integer age;


        // 声部
        @ApiModelProperty(value = "声部")
        private String subjectName;

        @ApiModelProperty(value = "手机号")
        private String phone;

        @ApiModelProperty(value = "是否会员 0否 1是")
        private YesOrNoEnum isVip;


        @ApiModelProperty("课程数")
        private Long courseNum;

        @ApiModelProperty("已结束课时数")
        private Integer endCourseNum;

        @ApiModelProperty("未开始课程数")
        private Integer noStartCourseNum;

        @ApiModelProperty("绑定时间")
        private Date bindingTime;

        public String jsonString() {
            return JSON.toJSONString(this);
        }

        public String getSubjectName() {
            return subjectName;
        }

        public void setSubjectName(String subjectName) {
            this.subjectName = subjectName;
        }

        public Long getUserId() {
            return userId;
        }

        public void setUserId(Long userId) {
            this.userId = userId;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public Integer getGender() {
            return gender;
        }

        public void setGender(Integer gender) {
            this.gender = gender;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public YesOrNoEnum getIsVip() {
            return isVip;
        }

        public void setIsVip(YesOrNoEnum isVip) {
            this.isVip = isVip;
        }

        public Long getCourseNum() {
            return courseNum;
        }

        public void setCourseNum(Long courseNum) {
            this.courseNum = courseNum;
        }

        public Integer getEndCourseNum() {
            return endCourseNum;
        }

        public void setEndCourseNum(Integer endCourseNum) {
            this.endCourseNum = endCourseNum;
        }

        public Integer getNoStartCourseNum() {
            return noStartCourseNum;
        }

        public void setNoStartCourseNum(Integer noStartCourseNum) {
            this.noStartCourseNum = noStartCourseNum;
        }

        public Date getBindingTime() {
            return bindingTime;
        }

        public void setBindingTime(Date bindingTime) {
            this.bindingTime = bindingTime;
        }
    }

    @ApiModel("BindingStudentCourseQuery-绑定学生课程列表查询")
    public static class BindingStudentCourseQuery extends QueryInfo{

        @ApiModelProperty(value = "老师id",required = true)
        @NotNull(message = "老师id不能为空")
        private Long teacherId;

        @NotNull(message = "学员id不能为空")
        @ApiModelProperty(value = "学员id",required = true)
        private Long studentId;
        public String jsonString() {
            return JSON.toJSONString(this);
        }
        public Long getTeacherId() {
            return teacherId;
        }

        public void setTeacherId(Long teacherId) {
            this.teacherId = teacherId;
        }

        public Long getStudentId() {
            return studentId;
        }

        public void setStudentId(Long studentId) {
            this.studentId = studentId;
        }
    }



    @ApiModel("BindingStudentCourseList-绑定学生课程列表")
    public static class BindingStudentCourseList{

        @ApiModelProperty("课程编号")
        private Long courseId;

        @ApiModelProperty("课程声部")
        private String subjectName;

        @ApiModelProperty("学员考勤 TRUANT：旷课 ATTENDCLASS:到课 NOTSTART:未开始")
        private String status;

        @ApiModelProperty(value = "课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消  CourseScheduleEnum")
        private String courseStatus;

        @ApiModelProperty("上课时间")
        private Date classDate;

        // 课程开始时间
        @ApiModelProperty("课程开始时间")
        private Date startTime;

        //课程结束时间
        @ApiModelProperty("课程结束时间")
        private Date endTime;

        public Date getStartTime() {
            return startTime;
        }

        public void setStartTime(Date startTime) {
            this.startTime = startTime;
        }

        public Date getEndTime() {
            return endTime;
        }

        public void setEndTime(Date endTime) {
            this.endTime = endTime;
        }

        public String jsonString() {
            return JSON.toJSONString(this);
        }
        public Long getCourseId() {
            return courseId;
        }

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

        public String getSubjectName() {
            return subjectName;
        }

        public void setSubjectName(String subjectName) {
            this.subjectName = subjectName;
        }

        public String getStatus() {
            return status;
        }

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

        public String getCourseStatus() {
            return courseStatus;
        }

        public void setCourseStatus(String courseStatus) {
            this.courseStatus = courseStatus;
        }

        public Date getClassDate() {
            return classDate;
        }

        public void setClassDate(Date classDate) {
            this.classDate = classDate;
        }
    }
}
