package cn.timer.api.controller.admin;

import cn.timer.api.bean.admin.AdminMsgTemplate;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.dao.admin.AdminMsgTemplateMapper;
import cn.timer.api.dto.admin.AdminMsgTemplateDto;
import cn.timer.api.dto.xcgl.FixedSalaryStaffDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Objects;

@Api(tags = "消息模板管理")
@RestController
@Transactional
    @RequestMapping(value = "/msg")
public class AdminMsgTemplateController {

    @Resource
    private AdminMsgTemplateMapper msgTemplateMapper;

    @PostMapping("/listMsgTemplate")
    @ApiOperation(value = "列出企业可选择的消息模板", httpMethod = "POST", notes = "接口发布说明")
    public Result<Object> listMsgTemplate(@CurrentUser UserBean userBean, @RequestBody AdminMsgTemplateDto search) {
        search.setOrgCode(userBean.getOrgCode());
        List<AdminMsgTemplate> list =  msgTemplateMapper.listMsgTemplate(search);
        return ResultUtil.data(list);
    }

    @PostMapping("/pageMsgTemplate")
    @ApiOperation(value = "消息模板分页查询", httpMethod = "POST", notes = "接口发布说明")
    public Result<Object> pageMsgTemplate(@CurrentUser UserBean userBean, @RequestBody AdminMsgTemplateDto search) {
        Page<FixedSalaryStaffDto> page = new Page<FixedSalaryStaffDto>(
                search.getCurrentPage() == null ? 1 : search.getCurrentPage(),
                search.getTotalPage() == null ? 10 : search.getTotalPage());

        long total = msgTemplateMapper.pageMsgTemplateCount(search);
        List<AdminMsgTemplate> list = msgTemplateMapper.pageMsgTemplate(search);
        page.setTotal(total);
        return ResultUtil.data(page, list, "消息模板分页查询");
    }

    @PostMapping("/getMsgTemplate/{id}")
    @ApiOperation(value = "根据ID获取消息模板", httpMethod = "POST", notes = "接口发布说明")
    public Result<Object> pageMsgTemplate(@CurrentUser UserBean userBean, @PathVariable Integer id) {
        return ResultUtil.data(msgTemplateMapper.selectById(id));
    }

    @PostMapping("/delMsgTemplate/{id}")
    @ApiOperation(value = "根据ID删除消息模板", httpMethod = "POST", notes = "接口发布说明")
    public Result<Object> delMsgTemplate(@CurrentUser UserBean userBean, @PathVariable Integer id) {
        msgTemplateMapper.deleteById(id);
        return ResultUtil.success("删除成功");
    }

    @PostMapping("/editMsgTemplate")
    @ApiOperation(value = "新增/编辑消息模板", httpMethod = "POST", notes = "接口发布说明")
    public Result<Object> editMsgTemplate(@CurrentUser UserBean userBean, @RequestBody AdminMsgTemplate temp) {
        AdminMsgTemplateDto search = new AdminMsgTemplateDto();
        search.setPlatformNum(temp.getPlatformNum());
        search.setPlatformType(temp.getPlatformType());
        search.setState(0);
        AdminMsgTemplate exits = msgTemplateMapper.getByParams(search);
        if (Objects.nonNull(exits)) {
            if (Objects.isNull(temp.getId()) ||
                    (Objects.nonNull(temp.getId()) && !temp.getId().equals(exits.getId()))) {
                return ResultUtil.error("对应平台编号已经存在!");
            }
        }
        temp.setAddtime(new Date().getTime());
        if (Objects.isNull(temp.getId())) {
            msgTemplateMapper.insert(temp);
        } else {
            msgTemplateMapper.updateById(temp);
        }
        return ResultUtil.success("保存成功");
    }
}