package com.casic.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmPushMapper;
import com.casic.model.AlarmPushConfig;
import com.casic.model.ResponseData;
import com.casic.service.AlarmPushService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
@Slf4j
public class AlarmPushServiceImpl extends ServiceImpl<AlarmPushMapper, AlarmPushConfig> implements AlarmPushService {

    @Override
    public Object alarmPushConfig(AlarmPushConfig alarmSwitchConfig) {
        ResponseData responseData = new ResponseData();
        try {
            QueryWrapper<AlarmPushConfig> queryWrapper = new QueryWrapper<AlarmPushConfig>()
                    .eq("sence", alarmSwitchConfig.getSecene());
//            this.baseMapper.delete(deleteWrapper);
            this.baseMapper.update(alarmSwitchConfig, queryWrapper);
            responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
            responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
        } catch (DataAccessException dae) {
            log.error("报警推送配置新增异常,场景{},异常信息{}", alarmSwitchConfig.getSecene(), dae.getMessage());
            responseData.setMessage(ResponseData.DEFAULT_ERROR_MESSAGE);
            responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
        }
        return responseData;
    }

    @Override
    public Object getAlarmPush(String secene) {
        ResponseData responseData = new ResponseData();
        try {
            QueryWrapper<AlarmPushConfig> queryWrapper = new QueryWrapper<AlarmPushConfig>()
                    .eq("sence", secene);
            List<AlarmPushConfig> alarmPushConfigList = this.baseMapper.selectList(queryWrapper);
            Optional<AlarmPushConfig> alarmPushConfigOptional = alarmPushConfigList.stream().findFirst();
            responseData.setData(alarmPushConfigOptional.isPresent() ? alarmPushConfigOptional.get() : new Object());
            responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
            responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
        } catch (DataAccessException dae) {
            log.error("报警推送配置查询异常,场景{},异常信息{}", secene, dae.getMessage());
            responseData.setMessage(ResponseData.DEFAULT_ERROR_MESSAGE);
            responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
        }
        return responseData;
    }
}
