package com.template.model.seewo;

import java.util.*;
import com.seewo.open.sdk.OpenApiParam;

/**
 * seewo-open API: 批量新增班级
 *
 *
 * @author auto create
 * @since 2.0.1 2023-12-19
 */
public class ClassServiceBatchSaveClassParam extends OpenApiParam {


    /**
     * 请求体，MimeType为 application/json
     */

    private JSONRequestBody requestBody;


    public JSONRequestBody getRequestBody() {
        return this.requestBody;
    }

    public void setRequestBody(JSONRequestBody requestBody) {
        this.requestBody = requestBody;
    }

    public static ClassServiceBatchSaveClassParamBuilder builder(){
        return new ClassServiceBatchSaveClassParamBuilder();
    }

    public static class ClassServiceBatchSaveClassParamBuilder{
        private JSONRequestBody requestBody;

        public ClassServiceBatchSaveClassParamBuilder requestBody(JSONRequestBody requestBody){
            this.requestBody = requestBody;
            return this;
        }

        public ClassServiceBatchSaveClassParam build(){
            ClassServiceBatchSaveClassParam param = new ClassServiceBatchSaveClassParam();
            param.setRequestBody(requestBody);
            return param;
        }
    }

    public static class JSONRequestBody {
        /**
         * 查询条件
         */
        private ClassSaveQuery query;

        public ClassSaveQuery getQuery() {
            return this.query;
        }

        public void setQuery(ClassSaveQuery query) {
            this.query = query;
        }


        public static JSONRequestBodyBuilder builder(){
            return new JSONRequestBodyBuilder();
        }

        public static class JSONRequestBodyBuilder{
            private ClassSaveQuery query;

            public JSONRequestBodyBuilder query(ClassSaveQuery query){
                this.query = query;
                return this;
            }

            public JSONRequestBody build(){
                JSONRequestBody param = new JSONRequestBody();
                param.setQuery(query);
                return param;
            }
        }
    }

    public static class ClassSaveQuery {
        /**
         * appId
         */
        private String appId;
        /**
         * 学校ID
         */
        private String schoolUid;
        /**
         * 班级信息列表
         */
        private List<ClassInfo> classList;

        public String getAppId() {
            return this.appId;
        }

        public void setAppId(String appId) {
            this.appId = appId;
        }

        public String getSchoolUid() {
            return this.schoolUid;
        }

        public void setSchoolUid(String schoolUid) {
            this.schoolUid = schoolUid;
        }

        public List<ClassInfo> getClassList() {
            return this.classList;
        }

        public void setClassList(List<ClassInfo> classList) {
            this.classList = classList;
        }


        public static ClassSaveQueryBuilder builder(){
            return new ClassSaveQueryBuilder();
        }

        public static class ClassSaveQueryBuilder{
            private String appId;
            private String schoolUid;
            private List<ClassInfo> classList;

            public ClassSaveQueryBuilder appId(String appId){
                this.appId = appId;
                return this;
            }
            public ClassSaveQueryBuilder schoolUid(String schoolUid){
                this.schoolUid = schoolUid;
                return this;
            }
            public ClassSaveQueryBuilder classList(List<ClassInfo> classList){
                this.classList = classList;
                return this;
            }

            public ClassSaveQuery build(){
                ClassSaveQuery param = new ClassSaveQuery();
                param.setAppId(appId);
                param.setSchoolUid(schoolUid);
                param.setClassList(classList);
                return param;
            }
        }
    }

    public static class ClassInfo {
        /**
         *  班级类型，1 行政班， 2 走班，默认1
         */
        private Integer type;
        /**
         * 学段：CodeSchoolStage_0小学，CodeSchoolStage_1初中，CodeSchoolStage_2高中，CodeSchoolStage_3自定义，CodeSchoolStage_4幼儿园
         */
        private String stageCode;
        /**
         *  年级序号
         */
        private Integer grade;
        /**
         *  学年
         */
        private Integer gradeYear;
        /**
         *  班级序号
         */
        private Integer clazz;
        /**
         * 班级名称，默认为年级+班级+‘班’
         */
        private String nickName;
        /**
         * 学院ID，大学学段时必须
         */
        private String departmentId;
        /**
         * 专业ID，大学学段时必须
         */
        private String majorId;
        /**
         * 年级ID，大学学段时必须
         */
        private String gradeId;

        public Integer getType() {
            return this.type;
        }

        public void setType(Integer type) {
            this.type = type;
        }

        public String getStageCode() {
            return this.stageCode;
        }

        public void setStageCode(String stageCode) {
            this.stageCode = stageCode;
        }

        public Integer getGrade() {
            return this.grade;
        }

        public void setGrade(Integer grade) {
            this.grade = grade;
        }

        public Integer getGradeYear() {
            return this.gradeYear;
        }

        public void setGradeYear(Integer gradeYear) {
            this.gradeYear = gradeYear;
        }

        public Integer getClazz() {
            return this.clazz;
        }

        public void setClazz(Integer clazz) {
            this.clazz = clazz;
        }

        public String getNickName() {
            return this.nickName;
        }

        public void setNickName(String nickName) {
            this.nickName = nickName;
        }

        public String getDepartmentId() {
            return this.departmentId;
        }

        public void setDepartmentId(String departmentId) {
            this.departmentId = departmentId;
        }

        public String getMajorId() {
            return this.majorId;
        }

        public void setMajorId(String majorId) {
            this.majorId = majorId;
        }

        public String getGradeId() {
            return this.gradeId;
        }

        public void setGradeId(String gradeId) {
            this.gradeId = gradeId;
        }


        public static ClassInfoBuilder builder(){
            return new ClassInfoBuilder();
        }

        public static class ClassInfoBuilder{
            private Integer type;
            private String stageCode;
            private Integer grade;
            private Integer gradeYear;
            private Integer clazz;
            private String nickName;
            private String departmentId;
            private String majorId;
            private String gradeId;

            public ClassInfoBuilder type(Integer type){
                this.type = type;
                return this;
            }
            public ClassInfoBuilder stageCode(String stageCode){
                this.stageCode = stageCode;
                return this;
            }
            public ClassInfoBuilder grade(Integer grade){
                this.grade = grade;
                return this;
            }
            public ClassInfoBuilder gradeYear(Integer gradeYear){
                this.gradeYear = gradeYear;
                return this;
            }
            public ClassInfoBuilder clazz(Integer clazz){
                this.clazz = clazz;
                return this;
            }
            public ClassInfoBuilder nickName(String nickName){
                this.nickName = nickName;
                return this;
            }
            public ClassInfoBuilder departmentId(String departmentId){
                this.departmentId = departmentId;
                return this;
            }
            public ClassInfoBuilder majorId(String majorId){
                this.majorId = majorId;
                return this;
            }
            public ClassInfoBuilder gradeId(String gradeId){
                this.gradeId = gradeId;
                return this;
            }

            public ClassInfo build(){
                ClassInfo param = new ClassInfo();
                param.setType(type);
                param.setStageCode(stageCode);
                param.setGrade(grade);
                param.setGradeYear(gradeYear);
                param.setClazz(clazz);
                param.setNickName(nickName);
                param.setDepartmentId(departmentId);
                param.setMajorId(majorId);
                param.setGradeId(gradeId);
                return param;
            }
        }
    }


}
