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 TeacherServiceBatchSaveOrUpdateTeacherParam extends OpenApiParam {


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

    private JSONRequestBody requestBody;


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

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

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

    public static class TeacherServiceBatchSaveOrUpdateTeacherParamBuilder{
        private JSONRequestBody requestBody;

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

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

    public static class JSONRequestBody {
        /**
         * 老师信息
         */
        private SaveOrUpdateTeacherBatchQuery query;

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

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


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

        public static class JSONRequestBodyBuilder{
            private SaveOrUpdateTeacherBatchQuery query;

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

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

    public static class SaveOrUpdateTeacherBatchQuery {
        /**
         * appId
         */
        private String appId;
        /**
         *  希沃学校uid
         */
        private String schoolUid;
        /**
         *  老师列表
         */
        private List<SaveOrUpdateTeacherQuery> teachers;

        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<SaveOrUpdateTeacherQuery> getTeachers() {
            return this.teachers;
        }

        public void setTeachers(List<SaveOrUpdateTeacherQuery> teachers) {
            this.teachers = teachers;
        }


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

        public static class SaveOrUpdateTeacherBatchQueryBuilder{
            private String appId;
            private String schoolUid;
            private List<SaveOrUpdateTeacherQuery> teachers;

            public SaveOrUpdateTeacherBatchQueryBuilder appId(String appId){
                this.appId = appId;
                return this;
            }
            public SaveOrUpdateTeacherBatchQueryBuilder schoolUid(String schoolUid){
                this.schoolUid = schoolUid;
                return this;
            }
            public SaveOrUpdateTeacherBatchQueryBuilder teachers(List<SaveOrUpdateTeacherQuery> teachers){
                this.teachers = teachers;
                return this;
            }

            public SaveOrUpdateTeacherBatchQuery build(){
                SaveOrUpdateTeacherBatchQuery param = new SaveOrUpdateTeacherBatchQuery();
                param.setAppId(appId);
                param.setSchoolUid(schoolUid);
                param.setTeachers(teachers);
                return param;
            }
        }
    }

    public static class SaveOrUpdateTeacherQuery {
        /**
         *  用户账号（手机号/邮箱）
         */
        private String account;
        /**
         *  用户名字
         */
        private String name;
        /**
         * 账号类型
phone - 手机号
email - 邮箱
         */
        private String accountType;
        /**
         *  教师工号
         */
        private String teacherCode;
        /**
         *
         */
        private String photoUrl;

        public String getAccount() {
            return this.account;
        }

        public void setAccount(String account) {
            this.account = account;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAccountType() {
            return this.accountType;
        }

        public void setAccountType(String accountType) {
            this.accountType = accountType;
        }

        public String getTeacherCode() {
            return this.teacherCode;
        }

        public void setTeacherCode(String teacherCode) {
            this.teacherCode = teacherCode;
        }

        public String getPhotoUrl() {
            return this.photoUrl;
        }

        public void setPhotoUrl(String photoUrl) {
            this.photoUrl = photoUrl;
        }


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

        public static class SaveOrUpdateTeacherQueryBuilder{
            private String account;
            private String name;
            private String accountType;
            private String teacherCode;
            private String photoUrl;

            public SaveOrUpdateTeacherQueryBuilder account(String account){
                this.account = account;
                return this;
            }
            public SaveOrUpdateTeacherQueryBuilder name(String name){
                this.name = name;
                return this;
            }
            public SaveOrUpdateTeacherQueryBuilder accountType(String accountType){
                this.accountType = accountType;
                return this;
            }
            public SaveOrUpdateTeacherQueryBuilder teacherCode(String teacherCode){
                this.teacherCode = teacherCode;
                return this;
            }
            public SaveOrUpdateTeacherQueryBuilder photoUrl(String photoUrl){
                this.photoUrl = photoUrl;
                return this;
            }

            public SaveOrUpdateTeacherQuery build(){
                SaveOrUpdateTeacherQuery param = new SaveOrUpdateTeacherQuery();
                param.setAccount(account);
                param.setName(name);
                param.setAccountType(accountType);
                param.setTeacherCode(teacherCode);
                param.setPhotoUrl(photoUrl);
                return param;
            }
        }
    }


}
