package com.rf.psychological.scale.resultBusiness.scaleResult;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rf.psychological.utils.Constant;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @author zsy
 * @description:自尊量表
 * @date 2021/7/20 15:55
 */
public class SESScale extends BaseScale{

    public SESScale(JSONArray jsonArray, JSONObject resultJson) {
        super(jsonArray, resultJson);
    }

    public  JSONObject scaleCalculate() throws Exception {
        //得分
        int score = 0;
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
            if (jsonObject1.getString("scoreDirection").equals("1")) {
                if (jsonObject1.getString("checkItems").equals("非常符合")) {
                    score += 4;
                } else if (jsonObject1.getString("checkItems").equals("符合")) {
                    score += 3;
                } else if (jsonObject1.getString("checkItems").equals("不符合")) {
                    score += 2;
                } else if (jsonObject1.getString("checkItems").equals("很不符合")) {
                    score += 1;
                }
            } else if (jsonObject1.getString("scoreDirection").equals("0")){
                if (jsonObject1.getString("checkItems").equals("非常符合")) {
                    score += 1;
                } else if (jsonObject1.getString("checkItems").equals("符合")) {
                    score += 2;
                } else if (jsonObject1.getString("checkItems").equals("不符合")) {
                    score += 3;
                } else if (jsonObject1.getString("checkItems").equals("很不符合")) {
                    score += 4;
                }
            }
        }
        //得分列表
        Map<String, String> resultMap = new LinkedHashMap<>();
        resultMap.put("总分", String.valueOf(score));
        resultJson.put("总分", String.valueOf(score));
        if (score <= 40 && score >= 35){
            resultMap.put("结论", "您的自尊水平很好。您能够完全接纳自己，生活有快乐感，有爱心，乐于帮助别人，人际交往很好。 建议：您的心理状况良好，请继续保持。");
            resultJson.put("结论", "您的自尊水平很好。您能够完全接纳自己，生活有快乐感，有爱心，乐于帮助别人，人际交往很好。 建议：您的心理状况良好，请继续保持。");
        }else if (score <= 34 && score >= 30){
            resultMap.put("结论", "您的自尊水平较好，做事情很有信心、不受别人的影响，能够很好的接纳自己，认为自己是有价值的，有爱心，人际关系良好。 建议：您的心理状况良好，请继续保持。");
            resultJson.put("结论", "您的自尊水平较好，做事情很有信心、不受别人的影响，能够很好的接纳自己，认为自己是有价值的，有爱心，人际关系良好。 建议：您的心理状况良好，请继续保持。");
        }else if (score <= 29 && score >= 20){
            resultMap.put("结论", "您现在的自尊心处于中等水平，能够正确的对待自己和接纳自己，不抱怨，有自己的见解和想法，交往良好。 建议：您对自己的评价较为客观，如果您能够时刻告诉自己“你可以做的更好”，那么您一定可以做的更好，不逼一下自己你怎么才能知道自己有多牛逼呢？");
            resultJson.put("结论", "您现在的自尊心处于中等水平，能够正确的对待自己和接纳自己，不抱怨，有自己的见解和想法，交往良好。 建议：您对自己的评价较为客观，如果您能够时刻告诉自己“你可以做的更好”，那么您一定可以做的更好，不逼一下自己你怎么才能知道自己有多牛逼呢？");
        }else if (score <= 19 && score >= 15){
            resultMap.put("结论", "您的自尊水平比较低。您难以摆正对待自己的态度，不能够正确认识真实的自己，认为自己不如别人，回避挑战，自尊心不足。 建议：您可以尝试每天记录当天生活中您觉得您做的比较好的事情，可能的话再记录在做这些事情之前自己的心态，定时拿出来评估一下自己的真实状况，这对您真正认识自己会很有帮助的。");
            resultJson.put("结论", "您的自尊水平比较低。您难以摆正对待自己的态度，不能够正确认识真实的自己，认为自己不如别人，回避挑战，自尊心不足。 建议：您可以尝试每天记录当天生活中您觉得您做的比较好的事情，可能的话再记录在做这些事情之前自己的心态，定时拿出来评估一下自己的真实状况，这对您真正认识自己会很有帮助的。");
        }else if (score <= 14 && score >= 10){
            resultMap.put("结论", "您自尊水平很低。您做任何事情都对自己没信心，对自己的表现失望，需要引起高度重视，应适当采取一定措施提高自己自尊心。 建议：您在心理方面过低的自我评价可能存在深层次的因素，您可以尝试进行心理咨询，与咨询师一同进行探索，并尝试去改变这种状况。");
            resultJson.put("结论", "您自尊水平很低。您做任何事情都对自己没信心，对自己的表现失望，需要引起高度重视，应适当采取一定措施提高自己自尊心。 建议：您在心理方面过低的自我评价可能存在深层次的因素，您可以尝试进行心理咨询，与咨询师一同进行探索，并尝试去改变这种状况。");
        }

        List<Map<String,String>> resultMapList = new ArrayList<>();
        resultMapList.add(resultMap);

        JSONObject returnJson = new JSONObject(true);
        returnJson.put("resultMapList",resultMapList);
        returnJson.put("scaleName",Constant.SHEET_NAME_SES);
        returnJson.put("resultJson",resultJson);

        return returnJson;
    }
}
