package com.template.model.seewo;

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

/**
 * seewo-open API: 批量初始化K12班级
 *
 *
 * @author auto create
 * @since 2.0.1 2023-12-19
 */
public class OrganizationNodeServiceInitSchoolClassesParam extends OpenApiParam {


    /**
     * 响应体，MimeType为 application/json
     */

    private RequestBody requestBody;


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

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

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

    public static class OrganizationNodeServiceInitSchoolClassesParamBuilder{
        private RequestBody requestBody;

        public OrganizationNodeServiceInitSchoolClassesParamBuilder requestBody(RequestBody requestBody){
            this.requestBody = requestBody;
            return this;
        }

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

    public static class RequestBody {
        /**
         * query
         */
        private Query query;

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

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


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

        public static class RequestBodyBuilder{
            private Query query;

            public RequestBodyBuilder query(Query query){
                this.query = query;
                return this;
            }

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

    public static class Query {
        /**
         * appId
         */
        private String appId;
        /**
         * 学校ID
         */
        private String unitUid;
        /**
         * 校区名称,名字不能超过20位
         */
        private String campusName;
        /**
         * 新增班级列表(最大200条)
         */
        private List<Object> classList;

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

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

        public String getUnitUid() {
            return this.unitUid;
        }

        public void setUnitUid(String unitUid) {
            this.unitUid = unitUid;
        }

        public String getCampusName() {
            return this.campusName;
        }

        public void setCampusName(String campusName) {
            this.campusName = campusName;
        }

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

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


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

        public static class QueryBuilder{
            private String appId;
            private String unitUid;
            private String campusName;
            private List<Object> classList;

            public QueryBuilder appId(String appId){
                this.appId = appId;
                return this;
            }
            public QueryBuilder unitUid(String unitUid){
                this.unitUid = unitUid;
                return this;
            }
            public QueryBuilder campusName(String campusName){
                this.campusName = campusName;
                return this;
            }
            public QueryBuilder classList(List<Object> classList){
                this.classList = classList;
                return this;
            }

            public Query build(){
                Query param = new Query();
                param.setAppId(appId);
                param.setUnitUid(unitUid);
                param.setCampusName(campusName);
                param.setClassList(classList);
                return param;
            }
        }
    }

    public static class Object {
        /**
         * 学段名称 ： 幼儿园、小学、初中、高中
         */
        private String stageName;
        /**
         * 入学年份，例如2017届，为2000至2117 -优先 （入学年份与年级必填一个）
         */
        private Integer gradeYear;
        /**
         * 年级：小学~高中 : 1-12 幼儿园：30 托班：31 小班：32 中班：33 大班：34
         */
        private Integer grade;
        /**
         * 班级名称
         */
        private String className;
        /**
         * 班级序号 1-50，比如：  一年级1班 clazz：1
         */
        private Integer clazz;

        public String getStageName() {
            return this.stageName;
        }

        public void setStageName(String stageName) {
            this.stageName = stageName;
        }

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

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

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

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

        public String getClassName() {
            return this.className;
        }

        public void setClassName(String className) {
            this.className = className;
        }

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

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


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

        public static class ObjectBuilder{
            private String stageName;
            private Integer gradeYear;
            private Integer grade;
            private String className;
            private Integer clazz;

            public ObjectBuilder stageName(String stageName){
                this.stageName = stageName;
                return this;
            }
            public ObjectBuilder gradeYear(Integer gradeYear){
                this.gradeYear = gradeYear;
                return this;
            }
            public ObjectBuilder grade(Integer grade){
                this.grade = grade;
                return this;
            }
            public ObjectBuilder className(String className){
                this.className = className;
                return this;
            }
            public ObjectBuilder clazz(Integer clazz){
                this.clazz = clazz;
                return this;
            }

            public Object build(){
                Object param = new Object();
                param.setStageName(stageName);
                param.setGradeYear(gradeYear);
                param.setGrade(grade);
                param.setClassName(className);
                param.setClazz(clazz);
                return param;
            }
        }
    }


}
