package com.zcloud.controller.xgf;

import com.zcloud.controller.base.BaseController;
import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.service.xgf.TrainingBatchService;
import com.zcloud.service.xgf.XgfUserService;
import com.zcloud.util.HttpClientService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/xgf/user")
public class XgfUserController extends BaseController {

    @Resource
    private XgfUserService xgfUserService;

    @Value("${preventionxgf.api.url}")
    private String url;

    @Resource
    private TrainingBatchService trainingBatchService;

    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(Page page) throws Exception {
        PageData request = this.getPageData();
        page.setPd(request);
        xgfUserService.list(page);
        PageData response = new PageData();
        response.put("result", "success");
        response.put("page", page);
        response.put("data", request);
        return response;
    }

    /**
     * 人员信息审核
     */
    @RequestMapping(value = "/approve")
    @ResponseBody
    public Object approve() throws Exception {
        PageData request = this.getPageData();
        xgfUserService.approve(request);
        PageData response = new PageData();
        response.put("result", "success");
        response.put("data", request);
        return response;
    }

    @RequestMapping(value = "/regulatoryUserList")
    @ResponseBody
    public Object regulatoryUserList() throws Exception{
        PageData request = this.getPageData();
        PageData response = new PageData();
        response.put("result", "success");
        response.put("data", request);
        return response;
    }

    @RequestMapping(value = "/getInfo")
    @ResponseBody
    public Object getInfo() throws Exception {
        PageData request = this.getPageData();
        PageData condition = new PageData();
        /*组织人员信息*/
        condition.put("XGF_USER_ID", request.getString("XGF_USER_ID"));
        PageData entity = xgfUserService.findInfo(condition);
        /*组织人员图片信息*/
        condition.put("USER_ID", entity.getString("XGF_USER_ID"));
        condition.put("CORPINFO_ID", entity.getString("BELONG_TO_CORP"));
        Map result = HttpClientService.doPost(url + "/openApi/user/getInfoPicture", condition);
        if (result == null || !"succeed".equals(result.get("result"))) throw new RuntimeException("请求失败");
        /*组织员工培训信息*/
        condition.clear();
        condition.put("USER_ID", entity.getString("XGF_USER_ID"));
        List<PageData> recordList = xgfUserService.findRecordList(condition);
        /*培训申请记录*/
        condition.clear();
        condition.put("USER_ID", entity.getString("XGF_USER_ID"));
        List<PageData> trainList = trainingBatchService.findByUserId(condition);

        PageData response = new PageData();
        response.put("result", "success");
        response.put("info", entity);
        response.put("img", result);
        response.put("trainRecordList", recordList);
        response.put("applyList", trainList);
        response.put("data", request);
        return response;
    }

    @RequestMapping(value = "/getAppointApproveList")
    @ResponseBody
    public Object getAppointApproveList(Page page) throws Exception{
        PageData request = this.getPageData();
        page.setPd(request);
        PageData response = new PageData();
        response.put("result", "success");
        response.put("list", xgfUserService.getAppointApproveList(page));
        response.put("page", page);
        return response;
    }

    /**
     * 人员指定审核
     */
    @RequestMapping(value = "/appointApprove")
    @ResponseBody
    public Object appointApprove() throws Exception{
        PageData request = this.getPageData();
        PageData response = new PageData();
        response.put("result", "success");
        response.put("data", request);
        return response;
    }
}