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;

/**
 * @description: 马斯洛安全感-不安全感问卷
 */
public class MSIQScale extends BaseScale {

    public MSIQScale(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 ((i + 1) == 3 || (i + 1) == 5 || (i + 1) == 7 || (i + 1) == 10 || (i + 1) == 11 || (i + 1) == 14 || (i + 1) == 16 || (i + 1) == 18 || (i + 1) == 21 || (i + 1) == 22 || (i + 1) == 23 || (i + 1) == 24 || (i + 1) == 29 || (i + 1) == 32 || (i + 1) == 33 || (i + 1) == 35 || (i + 1) == 36 || (i + 1) == 38 || (i + 1) == 39 || (i + 1) == 41 || (i + 1) == 44 || (i + 1) == 46 || (i + 1) == 47 || (i + 1) == 51 || (i + 1) == 53 || (i + 1) == 55 || (i + 1) == 60 || (i + 1) == 61 || (i + 1) == 63 || (i + 1) == 64 || (i + 1) == 66 || (i + 1) == 69 || (i + 1) == 70 || (i + 1) == 73 || (i + 1) == 74) {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    score += 1;
                } else if (jsonObject1.getString("checkItems").equals("不清楚")) {
                    score += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    score += 0;
                }
            } else {
                if (jsonObject1.getString("checkItems").equals("是")) {
                    score += 0;
                } else if (jsonObject1.getString("checkItems").equals("不清楚")) {
                    score += 1;
                } else if (jsonObject1.getString("checkItems").equals("否")) {
                    score += 1;
                }
            }
        }

        //得分列表
        Map<String, String> resultMap = new LinkedHashMap<>();
        resultMap.put("总分", String.valueOf(score));
        resultJson.put("总分", String.valueOf(score));

        if (score >= 0 && score <= 24) {
            resultMap.put("总分结论","【正常范围】：安全感是上衣扎进秋裤里，秋裤扎进袜子里，你的安全感足足的，世界那么美好，愿你也给别人带去美好。");
            resultJson.put("总分结论","【正常范围】：安全感是上衣扎进秋裤里，秋裤扎进袜子里，你的安全感足足的，世界那么美好，愿你也给别人带去美好。");
        } else if (score >= 25 && score <= 30) {
            resultMap.put("总分结论","【具有不安全感的倾向】会感到孤独、被遗忘、被抛弃，有时候对他人抱有不信任的态度，会有悲观倾向，不满足于现状，会有自责情绪。请正视你的内心，学会和家人朋友多倾诉，积极调整内心的情绪，练习更好的方式和他人沟通。愿你在被爱的同时也能给他人带去爱。");
            resultJson.put("总分结论","【具有不安全感的倾向】会感到孤独、被遗忘、被抛弃，有时候对他人抱有不信任的态度，会有悲观倾向，不满足于现状，会有自责情绪。请正视你的内心，学会和家人朋友多倾诉，积极调整内心的情绪，练习更好的方式和他人沟通。愿你在被爱的同时也能给他人带去爱。");
        } else if (score >= 31 && score <= 39) {
            resultMap.put("总分结论","【具有不安全感】感到焦虑，对事物有不必要的过度担心，缺乏自信，过于在意别人对自己的意见和看法，总倾向于不满足，对他人抱有不信任、嫉妒、傲慢和仇恨的态度。这样的状态已经对你的生活工作造成了一定的影响，请重新检视你的内心，学会面对内心的感受，学会调节和放松压力，如果以上这些难以缓解您的情绪症状，建议您向平台专业的心理咨询寻求帮助。愿你在被爱的同时也能给他人带去爱。");
            resultJson.put("总分结论","【具有不安全感】感到焦虑，对事物有不必要的过度担心，缺乏自信，过于在意别人对自己的意见和看法，总倾向于不满足，对他人抱有不信任、嫉妒、傲慢和仇恨的态度。这样的状态已经对你的生活工作造成了一定的影响，请重新检视你的内心，学会面对内心的感受，学会调节和放松压力，如果以上这些难以缓解您的情绪症状，建议您向平台专业的心理咨询寻求帮助。愿你在被爱的同时也能给他人带去爱。");
        } else if (score >= 40 && score <= 75) {
            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_MSIQ);
        returnJson.put("resultJson", resultJson);

        return returnJson;
    }
}
