package com.weaver.seconddev.chapanda.beisen.util;

import com.alibaba.fastjson.JSONObject;
import com.weaver.seconddev.chapanda.beisen.constant.Constants;
import okhttp3.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;


@Component
public class JobRequirement2BeisenUtil {
    private final static Logger log = LoggerFactory.getLogger(JobRequirement2BeisenUtil.class);

    @Autowired
    Token2BeiSenUtil token2BeiSenUtil ;

    public String sendJobRequirement(int requirementStatus,
                                    int requirementType,
                                    String requestname,
                                    int beisenCreateBy,
                                    String createDate,
                                    int requirementCount,
                                    String arivalTime,
                                    String createByEmail,
                                    String dutyUserEmail,
                                    int beisenDepartmentId,
                                    int salaryType,
                                    int category,
                                    String educationInfo,
                                    String workExperience,
                                    int kind,
                                    boolean isSecrecy,
                                    String originalCode,
                                    String nlyq,
                                    String zpgw,
                                    String zwmc,
                                    int beisenDutyUserId,
                                     String xqmc,
                                     String gzzz,
                                     String rzzg,
                                     String zxssyf,
                                     String jjcd
                                         ){
        String data = "";
        String token = token2BeiSenUtil.getToken();
        if(StringUtils.isNotBlank(token)){

            JSONObject bodyJson = new JSONObject();
            /***
             * 需求状态
             * 10	草稿
             * 20	审批中
             * 30	审批未通过
             * 40	进行中
             * 50	已关闭
             * 60	已完成
             * 70	已暂停
             * 80	审批已终止
             *
             */
            if(requirementStatus > -1){
                bodyJson.put("requirementStatus",requirementStatus);
            }

            /***
             *  需求类型
             * 1	新增
             * 2	顶替
             * 3	储备
             */
            if(requirementType > -1){
                bodyJson.put("requirementType",requirementType);
            }


            bodyJson.put("name",xqmc);
            log.error("beisenCreateBy:{}",beisenCreateBy);
            if(beisenCreateBy > -1){
                bodyJson.put("createBy",beisenCreateBy);
            }

            if(!createDate.contains("T")){
                createDate = createDate+"T00:00:00";
            }
            bodyJson.put("createDate",createDate);

            if(!arivalTime.contains("T")){
                arivalTime = arivalTime+"T00:00:00";
            }
            bodyJson.put("arivalTime",arivalTime);

            bodyJson.put("dutyUserEmail",dutyUserEmail);
            bodyJson.put("createByEmail",createByEmail);

            if(beisenDepartmentId > -1){
                bodyJson.put("departmentId",beisenDepartmentId);
            }else{
                if(StringUtils.isNotBlank(originalCode)){
                    bodyJson.put("orgCode",originalCode);
                }
            }

            /**
             * 需求人数
             */
            if(requirementCount > -1){
                bodyJson.put("requirementCount",requirementCount);
            }

//        if(salaryType >-1){
//            bodyJson.put("salaryType",salaryType);
//        }

//            bodyJson.put("PositionIdCoreHR","d948d6ce-70cc-4265-975c-fea732759676");

            /***
             * 招聘类别
             * 1	社会招聘
             * 2	校园招聘
             * 3	实习生招聘
             */

            if(category > -1){
                bodyJson.put("category",category);
            }


            /***
             * 学历要求
             * 9	小学
             * 8	初中
             * 3	高中
             * 4	中技（中专/技校/职高）
             * 5	大专
             * 1	本科
             * 2	硕士研究生
             * 6	MBA
             * 7	博士研究生
             * 10	大专及以上
             * 11	本科及以上
             * 12	不限
             */
            bodyJson.put("educationInfo",educationInfo);
            /***
             * 工作经验
             * 在读学生
             * 应届毕业生
             * 99	在读学生
             * 98	应届毕业生
             * 1	1年
             * 2	2年
             * 3	3年
             * 4	4年
             * 5	5年
             * 6	6年
             * 7	7年
             * 8	8年
             * 9	9年
             * 10	10年及以上
             */
            bodyJson.put("workExperience",workExperience);

            /***
             * 工作性质
             * 1	全职
             * 2	兼职
             * 3	实习
             * 4	其他
             */

            if(kind > -1){
                bodyJson.put("kind",kind);
            }
            if(StringUtils.isNotBlank(nlyq)){
                JSONObject customProperties = new JSONObject();
                customProperties.put(Constants.nyyqzdm,nlyq);
                customProperties.put(Constants.zwzd,zwmc);

                customProperties.put(Constants.zpssyfzd,zxssyf);
                customProperties.put(Constants.jjcdzdm,jjcd);

                bodyJson.put("customProperties",customProperties);
            }
            log.error("beisenDutyUserId:{}",beisenDutyUserId);
            if(beisenDutyUserId>-1){
                bodyJson.put("dutyUser",beisenDutyUserId);
            }

            if(StringUtils.isNotBlank(gzzz)){
                bodyJson.put("jobDescription",gzzz);
            }

            if(StringUtils.isNotBlank(rzzg)){
                bodyJson.put("qualification",rzzg);
            }



            bodyJson.put("isSecrecy",isSecrecy);
            log.error("bodyJson:{}",bodyJson.toJSONString());
            data = doHttpPost(token,bodyJson.toJSONString());
        }
        return data;
    }

    public String doHttpPost(String token,String bodyJson){
        String data = "";
        OkHttpClient client = new OkHttpClient().newBuilder()
                .build();
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, bodyJson);
        try {
            Request request = new Request.Builder()
                    .url(Constants.beishenHost+Constants.jobRequirementUrl)
                    .method("POST", body)
                    .addHeader("Authorization", "Bearer "+token)
                    .addHeader("Content-Type", "application/json")
                    .build();
            Response response = client.newCall(request).execute();

            int code = response.code();
            String bodyData = response.body().string();
            log.error("code:{}",code);
            log.error("bodyData:{}",bodyData);
            if(code == 200){
                if(StringUtils.isNotBlank(bodyData)){
                    JSONObject dataJson = JSONObject.parseObject(bodyData);
                    if(dataJson.containsKey("code")){
                        String dataCode = dataJson.getString("code");
                        if("200".equals(dataCode)){
                            data = dataJson.getString("data");
                        }
                    }
                }
            }
        } catch (IOException e) {
            log.error("e:{}",e);
        }
        return data;
    }

}
