package com.diagbot.web;


import com.diagbot.annotation.SysLogger;
import com.diagbot.dto.RespDTO;
import com.diagbot.dto.TemplateInfoDTO;
import com.diagbot.entity.TemplateInfo;
import com.diagbot.facade.TemplateInfoFacade;
import com.diagbot.vo.TemplateInfoRevampVO;
import com.diagbot.vo.TemplateInfoVO;
import com.diagbot.vo.TemplateInfosIdVO;
import com.diagbot.vo.TemplateInfosVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;

/**
 * @author wangfeng
 * @Description: 病历模板表 前端控制器
 * @date 2018年11月16日 上午9:14:51
 */
@RestController
@RequestMapping("/templateInfo")
@Api(value = "病历模板API[by:wangfeng]", tags = { "WF——病历模板API" })
@SuppressWarnings("unchecked")
public class TemplateInfoController {

    @Autowired
    TemplateInfoFacade templateInfoFacade;

    @ApiOperation(value = "根据医生id、医院id、部门id返回病历模板内容[by:wangfeng]",
            notes = "doctorId: 医生id<br>" + "dospitalId：医院编码<br>" + "deptId:部门id<br>" + "type:模式<br>")
    @PostMapping("/getByDoctorIdTemplates")
    @SysLogger("getByDoctorIdTemplates")
    public RespDTO<TemplateInfo> getByDoctorIdTemplate(@Valid @RequestBody TemplateInfoVO templateInfoVO) {

        List<TemplateInfoDTO> data = templateInfoFacade.findByDoctorIdTemplates(templateInfoVO);

        return RespDTO.onSuc(data);
    }

    @ApiOperation(value = "根据模板id修改模板名称[by:wangfeng]", notes = "id;//模板</br>modeName;"
            + "//模板名</br>doctorId;//医生id</br>hospitalId;//医院id</br>hospitalDeptId;//部门id</br>")
    @PostMapping("/updateByIdUsNames")
    @SysLogger("updateByIdUsNames")
    @Transactional
    public RespDTO<Boolean> updateByIdUsNames(@Valid @RequestBody TemplateInfoRevampVO templateInfoRevampVO) {

        boolean res = templateInfoFacade.updateByIdUsName(templateInfoRevampVO);

        return RespDTO.onSuc(res);
    }


    @ApiOperation(value = "保存病历模板[by:wangfeng]", notes = "modeName;//模板名字</br>"
            + "doctorId;//医生id</br>hospitalId;//医院id</br>hospitalDeptId;//部门id</br>"
            + "modeType;//模板类型</br>preview;//预览文本</br>{chief;//主诉present;//现病史other;//其他史vital;//查体lis;//化验pacs;//辅检diag;//诊断advice;//医嘱}</br>dataJson;//模板数据</br>")
    @PostMapping("/saveTemplateInfo")
    @SysLogger("saveTemplateInfo")
    @Transactional
    public RespDTO<Boolean> saveTemplateInfo(@Valid @RequestBody TemplateInfosVO templateInfosVO) {

        boolean res = templateInfoFacade.saveTemplateInfo(templateInfosVO);

        return RespDTO.onSuc(res);
    }

    @ApiOperation(value = "根据模板id批量删除病历模板[by:wangfeng]", notes = "ids: 模板ids<br>'ids':'1,2,3,4,5,6'")
    @PostMapping("/cancelTemplateInfos")
    @SysLogger("cancelTemplateInfos")
    @Transactional
    public RespDTO<Boolean> cancelTemplateInfos(@Valid @RequestBody TemplateInfosIdVO templateInfosIdVO) {

        boolean res = templateInfoFacade.cancelTemplateInfo(templateInfosIdVO);

        return RespDTO.onSuc(res);
    }

}
