package jnpf.attendance.service;

import jnpf.base.UserInfo;
import jnpf.entity.attendance.AttendanceResultRollback;
import jnpf.model.attendance.dto.NoApprovalDto;
import jnpf.model.attendance.vo.ChangeInfoVo;

import java.util.List;

/**
 * 考勤变更服务
 *
 * @author yanwenfu
 * @create 2024-11-08
 */
public interface AttendanceChangeService {

    /**
     * 被变更记录的信息
     * @param clockInResultId 结果id
     * @return jnpf.model.attendance.vo.ChangeInfoVo
     */
    ChangeInfoVo getChangeInfo(String clockInResultId) throws Exception;
    /**
     * 根据考勤组id及用户id查询过去一年内的变更涉及打卡记录
     * @param groupId 考勤组id
     * @param userId 用户id
     * @return java.util.List<jnpf.model.attendance.vo.ChangeInfoVo>
     */
    List<ChangeInfoVo> getChangeInfoList(String groupId, String userId);

    /**
     * 出勤变更(无需审批)
     * @param noApprovalDto 出勤变更参数
     */
    void attendanceChangeNoApproval(NoApprovalDto noApprovalDto) throws Exception;

    /**
     * 出勤变更(需审批)
     * @param taskId 审批id
     * @param passed 是否通过(0: 否, 1: 是, 2: 撤回)
     * @param user 审批人
     */
    void attendanceChangeApproval(String taskId, String passed, UserInfo user) throws Exception;

    /**
     * 出勤变更撤回
     * @param clockInResultId 打卡结果id
     */
    void rollbackChange(String clockInResultId) throws Exception;

    /**
     * 查询能否撤回变更
     * @param clockInResultId 打卡结果id
     * @return java.lang.Integer
     */
    Integer getRollbackStatus(String clockInResultId);
}
