package com.gic.haoban.manage.api.service.notify;

import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.notify.dto.PendingTaskDetailDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.PendingListQDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.PendingTaskQDTO;

import java.util.Date;
import java.util.List;

/**
 * Created 2021/12/15.
 *
 * @author hua
 */
public interface PendingTaskApiService {
    /**
     * 新增待办
     *
     * @param qdto
     */
    public ServiceResponse<Boolean> addPendingTask(PendingTaskQDTO qdto);
    
    public ServiceResponse<Boolean> insertPendingTaskBatch(List<PendingTaskQDTO> qdto);


    /**
     * 待办批量 活动任务
     *
     * @param qdto
     */
    public ServiceResponse<Boolean> addPendingTaskBatch(List<PendingTaskQDTO> qdto);

    /**
     * 待办列表查询分页
     *
     * @return
     */
    public ServiceResponse<Page<PendingTaskDetailDTO>> pagePendingTask(PendingListQDTO listQDTO, BasePageInfo pageInfo);

    /**
     * 今天的待办列表
     *
     * @param enterpriseId
     * @param storeId
     * @param clerkId
     * @param seeSelf
     * @return
     */
    public ServiceResponse<List<PendingTaskDetailDTO>> listPendingTaskToday(String enterpriseId, String storeId, String clerkId, boolean seeSelf);

    /**
     * 完成任务
     *
     * @param relationId
     * @return
     */
    public ServiceResponse<Boolean> finishPending(String relationId);

    /**
     * 变更执行人
     *
     * @param relationId
     * @param newExeutiveClerkId
     * @return
     */
    public ServiceResponse<Boolean> changeExecutiveClerkId(String relationId, String newExeutiveClerkId);

    /**
     * 在完成的同时更新执行人
     *
     * @param relationId
     * @param newExeutiveClerkId
     * @return
     */
    public ServiceResponse<Boolean> changeExecutiveClerkAndFinishStatus(String relationId, String newExeutiveClerkId);

    /**
     * 删除执行人
     *
     * @param relationIds
     * @return
     */
    public ServiceResponse<Boolean> deletePendingTask(List<String> relationIds);

    /**
     * 删除执行人
     *
     * @param relationId
     * @return
     */
    //无效接口
//    public ServiceResponse<Boolean> deletePendingTaskByRelationId(String relationId);


    /**
     * 删除执行人
     *
     * @param businessId
     * @return
     */
    public ServiceResponse<Boolean> deletePendingTaskByBusinessId(String businessId);

    /**
     * 更新失效或者结束时间
     *
     * @param relationId
     * @param endTime
     * @return
     */
    //无效接口
//    public ServiceResponse<Boolean> updateInvalidTime(String relationId, Date endTime);

    /**
     * 更新失效或者结束时间 活动任务
     *
     * @param businessId
     * @param endTime
     * @return
     */
    public ServiceResponse<Boolean> updateInvalidTimeByBusinessId(String businessId, Date endTime);

}
