package com.template.model.seewo;

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

/**
 * seewo-open API: 批量添加班级学生
 *
 *
 * @author auto create
 * @since 2.0.1 2023-12-19
 */
public class StudentServiceBatchSaveClassStudentsParam extends OpenApiParam {


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

    private JSONRequestBody requestBody;


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

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

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

    public static class StudentServiceBatchSaveClassStudentsParamBuilder{
        private JSONRequestBody requestBody;

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

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

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

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

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


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

        public static class JSONRequestBodyBuilder{
            private StudentSaveQuery query;

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

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

    public static class StudentSaveQuery {
        /**
         *  appId
         */
        private String appId;
        /**
         * 希沃学校ID
         */
        private String schoolUid;
        /**
         *  希沃班级ID
         */
        private String classUid;
        /**
         *  学生列表
         */
        private List<StudentInfo> students;
        /**
         *  是否删除旧学生再保存
         */
        private boolean inPlaceOld;

        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 String getClassUid() {
            return this.classUid;
        }

        public void setClassUid(String classUid) {
            this.classUid = classUid;
        }

        public List<StudentInfo> getStudents() {
            return this.students;
        }

        public void setStudents(List<StudentInfo> students) {
            this.students = students;
        }

        public boolean getInPlaceOld() {
            return this.inPlaceOld;
        }

        public void setInPlaceOld(boolean inPlaceOld) {
            this.inPlaceOld = inPlaceOld;
        }


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

        public static class StudentSaveQueryBuilder{
            private String appId;
            private String schoolUid;
            private String classUid;
            private List<StudentInfo> students;
            private boolean inPlaceOld;

            public StudentSaveQueryBuilder appId(String appId){
                this.appId = appId;
                return this;
            }
            public StudentSaveQueryBuilder schoolUid(String schoolUid){
                this.schoolUid = schoolUid;
                return this;
            }
            public StudentSaveQueryBuilder classUid(String classUid){
                this.classUid = classUid;
                return this;
            }
            public StudentSaveQueryBuilder students(List<StudentInfo> students){
                this.students = students;
                return this;
            }
            public StudentSaveQueryBuilder inPlaceOld(boolean inPlaceOld){
                this.inPlaceOld = inPlaceOld;
                return this;
            }

            public StudentSaveQuery build(){
                StudentSaveQuery param = new StudentSaveQuery();
                param.setAppId(appId);
                param.setSchoolUid(schoolUid);
                param.setClassUid(classUid);
                param.setStudents(students);
                param.setInPlaceOld(inPlaceOld);
                return param;
            }
        }
    }

    public static class StudentInfo {
        /**
         * 姓名
         */
        private String studentName;
        /**
         * 学号
         */
        private String studentCode;
        /**
         *  性别 1男2女
         */
        private Integer gender;
        /**
         *  一卡通卡号
         */
        private String cardNo;
        /**
         * 手机号
         */
        private String phone;

        public String getStudentName() {
            return this.studentName;
        }

        public void setStudentName(String studentName) {
            this.studentName = studentName;
        }

        public String getStudentCode() {
            return this.studentCode;
        }

        public void setStudentCode(String studentCode) {
            this.studentCode = studentCode;
        }

        public Integer getGender() {
            return this.gender;
        }

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

        public String getCardNo() {
            return this.cardNo;
        }

        public void setCardNo(String cardNo) {
            this.cardNo = cardNo;
        }

        public String getPhone() {
            return this.phone;
        }

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


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

        public static class StudentInfoBuilder{
            private String studentName;
            private String studentCode;
            private Integer gender;
            private String cardNo;
            private String phone;

            public StudentInfoBuilder studentName(String studentName){
                this.studentName = studentName;
                return this;
            }
            public StudentInfoBuilder studentCode(String studentCode){
                this.studentCode = studentCode;
                return this;
            }
            public StudentInfoBuilder gender(Integer gender){
                this.gender = gender;
                return this;
            }
            public StudentInfoBuilder cardNo(String cardNo){
                this.cardNo = cardNo;
                return this;
            }
            public StudentInfoBuilder phone(String phone){
                this.phone = phone;
                return this;
            }

            public StudentInfo build(){
                StudentInfo param = new StudentInfo();
                param.setStudentName(studentName);
                param.setStudentCode(studentCode);
                param.setGender(gender);
                param.setCardNo(cardNo);
                param.setPhone(phone);
                return param;
            }
        }
    }

    public static class Boolean {


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

        public static class BooleanBuilder{


            public Boolean build(){
                Boolean param = new Boolean();
                return param;
            }
        }
    }


}
