package com.zcloud.personnel.positioning.service;

import com.zcloud.personnel.positioning.api.AlarmRuleItemServiceI;
import com.zcloud.personnel.positioning.command.AlarmRuleItemAddExe;
import com.zcloud.personnel.positioning.command.AlarmRuleItemRemoveExe;
import com.zcloud.personnel.positioning.command.AlarmRuleItemUpdateExe;
import com.zcloud.personnel.positioning.command.query.AlarmRuleItemQueryExe;
import com.zcloud.personnel.positioning.dto.AlarmRuleItemAddCmd;
import com.zcloud.personnel.positioning.dto.AlarmRuleItemPageQry;
import com.zcloud.personnel.positioning.dto.AlarmRuleItemUpdateCmd;
import com.zcloud.personnel.positioning.dto.clientobject.AlarmRuleItemCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * web-app
 *
 * @Author fangjiakai
 * @Date 2026-07-07
 */
@Service
@AllArgsConstructor
public class AlarmRuleItemServiceImpl implements AlarmRuleItemServiceI {
    private final AlarmRuleItemAddExe alarmRuleItemAddExe;
    private final AlarmRuleItemUpdateExe alarmRuleItemUpdateExe;
    private final AlarmRuleItemRemoveExe alarmRuleItemRemoveExe;
    private final AlarmRuleItemQueryExe alarmRuleItemQueryExe;

    @Override
    public PageResponse<AlarmRuleItemCO> listPage(AlarmRuleItemPageQry qry) {
        return alarmRuleItemQueryExe.execute(qry);
    }

    @Override
    public List<AlarmRuleItemCO> listAll() {
        return alarmRuleItemQueryExe.listAll();
    }

    @Override
    public AlarmRuleItemCO queryById(Long id) {
        return alarmRuleItemQueryExe.queryById(id);
    }

    @Override
    public SingleResponse<AlarmRuleItemCO> add(AlarmRuleItemAddCmd cmd) {
        alarmRuleItemAddExe.execute(cmd);
        return SingleResponse.buildSuccess();
    }

    @Override
    public void edit(AlarmRuleItemUpdateCmd cmd) {
        alarmRuleItemUpdateExe.execute(cmd);
    }

    @Override
    public void remove(Long id) {
        alarmRuleItemRemoveExe.execute(id);
    }

    @Override
    public void removeBatch(Long[] ids) {
        alarmRuleItemRemoveExe.execute(ids);
    }
}
