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

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rf.psychological.scale.dao.model.ScaleEntity;
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 MSAFEScale extends BaseScale {

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

    public JSONObject scaleCalculate() throws Exception {
        //得分
        int score = 0;
        List<ScaleEntity> scaleEntities = (List<ScaleEntity>) resultJson.get("scaleEntities");

        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
            String[] split = scaleEntities.get(i).getCheckItems().split("；");
            for (int y = 0; y < split.length; y++) {
                if (jsonObject1.getString("checkItems").equals(split[y])) {
                    switch (y) {
                        case 0: {
                            score += 4;
                            break;
                        }
                        case 1: {
                            score += 3;
                            break;
                        }
                        case 2: {
                            score += 2;
                            break;
                        }
                        case 3: {
                            score += 1;
                            break;
                        }
                    }
                }
            }
        }
        //得分列表
        Map<String, String> resultMap = new LinkedHashMap<>();
        resultMap.put("总分", String.valueOf(score));
        resultJson.put("总分", String.valueOf(score));
        
        if (score <= 40 && score >= 31) {
            resultMap.put("结论", "【安全感指数：10%】你本身来说，就是一个很没有安全感的人。 你总是担心自己做的不够好，可以说你所有的努力都是为了得到别人的肯定去做的，而不是为了好好爱自己。 婚姻对你来说，更像是一项要完成的人生大事，像一个任务，而不是因为爱所以爱的结果。 你一心希望婚姻能消除你的孤独，带给你安全感，可是你的内心充满了不安，婚后的琐事只会令你更不安的。 一个人不能过好，两个人也一样不能过好，安全感应该是自己给的。");
            resultJson.put("结论", "【安全感指数：10%】你本身来说，就是一个很没有安全感的人。 你总是担心自己做的不够好，可以说你所有的努力都是为了得到别人的肯定去做的，而不是为了好好爱自己。 婚姻对你来说，更像是一项要完成的人生大事，像一个任务，而不是因为爱所以爱的结果。 你一心希望婚姻能消除你的孤独，带给你安全感，可是你的内心充满了不安，婚后的琐事只会令你更不安的。 一个人不能过好，两个人也一样不能过好，安全感应该是自己给的。");
        } else if (score <= 30 && score >= 25) {
            resultMap.put("结论", "【安全感指数：40%】你是一个很感性的人，考虑的问题太多，旁人有意无意说的话对你的影响也是很明显的，所以你面对生活中的很多事都不是很坚定，常常都是犹豫着好不容易做出选择以后，又后悔自己的决定。 徘徊着，纠结着都可以说已经是你的一种习惯了。 你对这个世界有很多的不安，就算结了婚，也一样会不安，特别是看到有人离婚，心里的不安就会成倍的放大了。 未来本就是不可预见的，珍惜拥有的，一个有安全感的婚姻是爱自己的副产品。");
            resultJson.put("结论", "【安全感指数：40%】你是一个很感性的人，考虑的问题太多，旁人有意无意说的话对你的影响也是很明显的，所以你面对生活中的很多事都不是很坚定，常常都是犹豫着好不容易做出选择以后，又后悔自己的决定。 徘徊着，纠结着都可以说已经是你的一种习惯了。 你对这个世界有很多的不安，就算结了婚，也一样会不安，特别是看到有人离婚，心里的不安就会成倍的放大了。 未来本就是不可预见的，珍惜拥有的，一个有安全感的婚姻是爱自己的副产品。");
        } else if (score <= 24 && score >= 20) {
            resultMap.put("结论", "【安全感指数：60%】你虽然在遇到不顺时，也会不满，也会有所抱怨，但是你懂得适可而止。 你会积极主动的消化吸收那些正能量，也能领悟到安全感是来自内心的道理。 你对婚姻有很美好的期望，但是你不会把安全感完全寄希望于婚姻上。 虽然你做的还不是太好，但是你至少会学着好好爱自己，在你爱自己的基础上，婚姻才能带给你更多的欢乐。 一个人只有爱自己，才有理由爱上自己选择的婚姻，才能把婚姻经营好，安全感一直都在心里。");
            resultJson.put("结论", "【安全感指数：60%】你虽然在遇到不顺时，也会不满，也会有所抱怨，但是你懂得适可而止。 你会积极主动的消化吸收那些正能量，也能领悟到安全感是来自内心的道理。 你对婚姻有很美好的期望，但是你不会把安全感完全寄希望于婚姻上。 虽然你做的还不是太好，但是你至少会学着好好爱自己，在你爱自己的基础上，婚姻才能带给你更多的欢乐。 一个人只有爱自己，才有理由爱上自己选择的婚姻，才能把婚姻经营好，安全感一直都在心里。");
        } else if (score <= 19 && score >= 10) {
            resultMap.put("结论", "【安全感指数：95%】你是一个会理性认识世界，认识生活，认识和保护自己的人。 你在爱别人之前，你首先是很爱自己的，你会理性的看待婚姻。 在你没有进入到婚姻的角色之前，你就已经是一个很有安全感的人了。 你懂得选择自己喜欢的生活，与志同道合的人交朋友，你也知道适合自己的对象是什么样的，会选择自己所爱，更会爱自己所选择的。 你爱自己，爱你的人就会更爱你，你爱你的婚姻，你的婚姻就会给你加倍的安全感的。");
            resultJson.put("结论", "【安全感指数：95%】你是一个会理性认识世界，认识生活，认识和保护自己的人。 你在爱别人之前，你首先是很爱自己的，你会理性的看待婚姻。 在你没有进入到婚姻的角色之前，你就已经是一个很有安全感的人了。 你懂得选择自己喜欢的生活，与志同道合的人交朋友，你也知道适合自己的对象是什么样的，会选择自己所爱，更会爱自己所选择的。 你爱自己，爱你的人就会更爱你，你爱你的婚姻，你的婚姻就会给你加倍的安全感的。");
        }

        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_MRA_SAFE);
        returnJson.put("resultJson", resultJson);

        return returnJson;
    }
}
