package com.tofly.xrtygis.custom.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.common.core.util.StringUtil;
import com.tofly.common.oauth.exception.ToflyDeniedException;
import com.tofly.xrtygis.custom.entity.gs.AddressBook;
import com.tofly.xrtygis.custom.service.CustomNoteService;
import com.tofly.xrtygis.entity.Rxsmstxitem;
import com.tofly.xrtygis.entity.Rxsmstxlx;
import com.tofly.xrtygis.service.RxsmstxitemService;
import com.tofly.xrtygis.service.RxsmstxlxService;
import lombok.AllArgsConstructor;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @author FlashWJL
 * @date 2021/4/1 13:52
 */
@Service
@AllArgsConstructor
public class CustomNoteServiceImpl implements CustomNoteService {
    private final RxsmstxitemService txitemService;
    private final RxsmstxlxService lxService;

    @Override
    public boolean saveDxbt(Rxsmstxitem rxsmstxitem) {
        String zdmc = rxsmstxitem.getZdmc();
        String text = rxsmstxitem.getText();
        //传入之前需要查询是否有相同的短信编码
        Rxsmstxitem r = txitemService.getOne(Wrappers.<Rxsmstxitem>lambdaQuery().eq(Rxsmstxitem::getZdmc, zdmc));
        if (StringUtil.isNotNull(r)) {
            throw new ToflyDeniedException("已存在编码字段：" + zdmc + "，不能重复添加");
        }
        txitemService.save(rxsmstxitem);
        return true;
    }

    @Override
    public List<Rxsmstxitem> getTitile(Rxsmstxitem rxsmstxitem) {
        return txitemService.list(Wrappers.<Rxsmstxitem>lambdaQuery()
                .eq(StringUtil.isNotEmpty(rxsmstxitem.getZdmc()), Rxsmstxitem::getZdmc, rxsmstxitem.getZdmc()));
    }

    @Override
    public boolean updateTitile(Rxsmstxitem rxsmstxitem) {
        String zdmc = rxsmstxitem.getZdmc();
        //修改之前需要查询是否有相同的短信编码
        Rxsmstxitem r = txitemService.getOne(Wrappers.<Rxsmstxitem>lambdaQuery().eq(Rxsmstxitem::getZdmc, zdmc));
        if (StringUtil.isNotNull(r)) {
            throw new ToflyDeniedException("已存在编码字段：" + zdmc + "，不能修改为该名称");
        }
        txitemService.updateById(rxsmstxitem);
        return true;
    }

    @Override
    public boolean delTitile(List<String> idList) {
        txitemService.removeByIds(idList);
        return true;
    }

    @Override
    public boolean saveTemplate(Rxsmstxlx rxsmstxlx) {
        String txName = rxsmstxlx.getTxmc();
        //相同名称查询，否则不能添加
        Rxsmstxlx serviceOne = lxService.getOne(Wrappers.<Rxsmstxlx>lambdaQuery().eq(Rxsmstxlx::getTxmc, txName));
        if (StringUtil.isNotNull(serviceOne)) {
            throw new ToflyDeniedException("已存在模板名称：" + txName + "，不能重复添加");
        }
        lxService.save(rxsmstxlx);
        return true;
    }

    @Override
    public IPage getTemplate(Page page, Rxsmstxlx rxsmstxlx) {
        String txmc = rxsmstxlx.getTxmc();
        //暂未加条件查询
        String txlx="0";
        if(StringUtil.isNotEmpty(rxsmstxlx.getTxlx())){
            txlx=rxsmstxlx.getTxlx();
        }
        return lxService.page(page, Wrappers.<Rxsmstxlx>lambdaQuery().
                eq(Rxsmstxlx::getYxbz, "1").eq(Rxsmstxlx::getTxlx,txlx)
                .like(StringUtil.isNotEmpty(txmc) , Rxsmstxlx::getTxmc , txmc));
    }

    @Override
    public boolean updateTemplate(Rxsmstxlx rxsmstxlx) {
        String txName = rxsmstxlx.getTxmc();
        Long id = rxsmstxlx.getId();

        //如果ID是停水通知的模板，则不能修改停水通知这个模板名称
//        String tempName = "停水通知";
//        if (id.equals(1L)){
//            if (!tempName.equals(txName)) {
//                throw new ToflyDeniedException("由于停水通知涉及语音播报，所以停水通知模板名称不能修改");
//            }
//        }else {
//            if (tempName.equals(txName)) {
//                throw new ToflyDeniedException("由于停水通知涉及语音播报，所以其他短信模板不能修改为这一名称");
//            }
//        }

        //相同名称查询，否则不能添加
//        Rxsmstxlx serviceOne = lxService.getOne(Wrappers.<Rxsmstxlx>lambdaQuery().eq(Rxsmstxlx::getTxmc, txName));
//        if (StringUtil.isNotNull(serviceOne)) {
//            throw new ToflyDeniedException("已存在模板名称：" + txName + "，不能修改为该名称");
//        }
        lxService.updateById(rxsmstxlx);
        return true;
    }

    @Override
    public boolean delTemplate(List<String> asList) {
        //这里可以直接修改状态为无效状态
        lxService.update(Wrappers.<Rxsmstxlx>lambdaUpdate().in(Rxsmstxlx::getId, asList).set(Rxsmstxlx::getYxbz, "0"));
        return true;
    }

    @Override
    public IPage<Map> getBook(Page page, AddressBook addressBook) {
        return lxService.gteBook(page, addressBook);
    }

    @Override
    public boolean updateBook(AddressBook addressBook) {
        Long userId = addressBook.getUserId();
        String phone = addressBook.getPhone();
        return lxService.updateBook(userId , phone);
    }


}
