package org.diagbot.push.controller;

import org.diagbot.common.work.ResponseData;
import org.diagbot.common.work.SearchData;
import org.diagbot.graph.javabean.GdbResponse;
import org.diagbot.graph.jdbc.DriverManager;
import org.diagbot.graph.jdbc.Neo4jAPI;
import org.diagbot.graphWeb.work.GraphCalculate;
import org.diagbot.graphWeb.work.HighRiskCalculate;
import org.diagbot.pub.api.Response;
import org.diagbot.pub.web.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@Controller
@RequestMapping("/graph")
public class GraphController extends BaseController {
    {
        listView = "/pages/graph/list.html";
    }
    @RequestMapping({"/index"})
    public String index() {
        return listView;
    }
    /**
     * 推送诊断,治疗
     * @param request
     * @param searchData
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/push", method = RequestMethod.POST)
    @ResponseBody
    public Response<ResponseData> bayesPageData(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
        Response<ResponseData> response = new Response();
        GraphCalculate graphCalculate = new GraphCalculate();
        ResponseData responseData = graphCalculate.calculate(request, searchData);
        response.setData(responseData);
        return response;
    }

    /**
     * 推送警惕
     * @param request
     * @param searchData
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/highRisk", method = RequestMethod.POST)
    @ResponseBody
    public Response<GdbResponse> getHighRisk(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
        HighRiskCalculate highRiskCalculate = new HighRiskCalculate();
        Response<GdbResponse> gdbResponseResponse = highRiskCalculate.calculateHighRisk(request, searchData);
        return gdbResponseResponse;
    }

    /**
     * 推送化验,辅检
     * @param request
     * @param searchData
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/lisPacs", method = RequestMethod.POST)
    @ResponseBody
    public Response<ResponseData> lisPacsData(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
        Response<ResponseData> response = new Response();
        GraphCalculate graphCalculate = new GraphCalculate();
        ResponseData responseData = graphCalculate.getLisPacs(request, searchData);
        response.setData(responseData);
        return response;
    }

    @RequestMapping(value = "/scale", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> scale(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
        Neo4jAPI neo4jAPI = new Neo4jAPI(DriverManager.newDrive("192.168.2.233","neo4j","root"));
        String scaleName = searchData.getScaleName();
        Map<String, Object> scale = neo4jAPI.getScale(scaleName);
        return scale;
    }
}
