package cn.timer.api.controller.admin;

import java.util.List;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import cn.timer.api.dao.admin.AdminAssoTxjlbMapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import cn.timer.api.bean.admin.AdminAssoTxjlb;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.dto.htzz.QueryNoReadingDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api(tags = "消息记录")
@RestController
@Transactional
@RequestMapping(value = "/record")
public class AdminAssoTxjlbcontroller {
	@Resource
	private AdminAssoTxjlbMapper txjlbMapper;
	
	@PostMapping("/noreading")
	@ApiOperation(value = "未读数量", httpMethod = "POST", notes = "接口发布说明")
	public Result<Object> noreading(@CurrentUser UserBean userBean, @RequestBody QueryNoReadingDto ws) {
		Integer wds = AdminAssoTxjlb.builder().build()
				.selectCount(new QueryWrapper<AdminAssoTxjlb>().lambda().eq(AdminAssoTxjlb::getEmpNum, ws.getEmpNum())
						.eq(AdminAssoTxjlb::getOrgCode, ws.getOrgCode()).eq(AdminAssoTxjlb::getTxstate, 0));

		return ResultUtil.data(wds, "查询成功");
	}

	@PostMapping("/datanotread")
	@ApiOperation(value = "未读数据", httpMethod = "POST", notes = "接口发布说明")
	public Result<Object> datanotread(@CurrentUser UserBean userBean, @RequestBody QueryNoReadingDto ws) {
		List<AdminAssoTxjlb> wds = AdminAssoTxjlb.builder().build()
				.selectList(new QueryWrapper<AdminAssoTxjlb>().lambda().eq(AdminAssoTxjlb::getEmpNum, ws.getEmpNum())
						.eq(AdminAssoTxjlb::getOrgCode, ws.getOrgCode()).eq(AdminAssoTxjlb::getTxstate, 0));

		return ResultUtil.data(wds, "查询成功");
	}
	
	@GetMapping("/recorddetails/{id}")
	@ApiOperation(value = "记录详情", httpMethod = "GET", notes = "接口发布说明")
	public Result<Object> recorddetails(@CurrentUser UserBean userBean, @PathVariable Integer id) {
		AdminAssoTxjlb jlxq = AdminAssoTxjlb.builder().id(id).build().selectById();
		return ResultUtil.data(jlxq, "成功");
	}
	
	@GetMapping("/recordmodification/{id}")
	@ApiOperation(value = "未读记录标记已读", httpMethod = "GET", notes = "接口发布说明")
	public Result<Object> recordmodification(@CurrentUser UserBean userBean, @PathVariable Integer id) {
		AdminAssoTxjlb.builder().id(id).build()
				.update(new UpdateWrapper<AdminAssoTxjlb>().lambda().set(AdminAssoTxjlb::getTxstate, 1)
						.eq(AdminAssoTxjlb::getId, id)
				);
		
		return ResultUtil.success("修改成功");
	}

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

		long total = txjlbMapper.pageTxjlbCount(search);
		List<AdminAssoTxjlb> list = txjlbMapper.pageTxjlb(search);
		page.setTotal(total);
		return ResultUtil.data(page, list, "分页查询消息记录");
	}
}