package com.artfess.rescue.cloud.manager;

import com.artfess.base.manager.BaseManager;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.PageList;
import com.artfess.base.query.QueryFilter;
import com.artfess.rescue.cloud.dto.CloudApplyAndSaveDTO;
import com.artfess.rescue.cloud.dto.CloudApplySaveDTO;
import com.artfess.rescue.cloud.model.BizCloudApply;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 私有云资源申请表 服务类
 *
 * @author 管理员
 * @company 阿特菲斯信息技术有限公司
 * @since 2024-08-07
 */
public interface BizCloudApplyManager extends BaseManager<BizCloudApply> {

    /**
     * 私有云资源申请新增
     *
     * @param cloudApply 私有云资源申请实体
     * @return 通用返回结果
     */
    CommonResult<String> saveInfo(BizCloudApply cloudApply);

    /**
     * 私有云资源申请分页查询
     *
     * @param queryFilter 分页查询条件
     * @return PageList<BizCloudApply> 私有云资源申请
     */
    PageList<BizCloudApply> queryInfoPage(QueryFilter<BizCloudApply> queryFilter);

    /**
     * 根据id查询私有云资源申请
     *
     * @param id 私有云资源申请ID
     * @return BizCloudApply 私有云资源申请
     */
    BizCloudApply getInfoById(String id);

    /**
     * 根据id更新私有云资源申请
     *
     * @param cloudApply 私有云资源申请实体
     * @return 通用返回结果
     */
    CommonResult<String> updateInfoById(BizCloudApply cloudApply);

    /**
     * 根据id删除私有云资源申请
     *
     * @param id 私有云资源申请ID
     * @return 通用返回结果
     */
    CommonResult<String> deleteInfoById(String id);

    /**
     * 根据id集合批量删除私有云资源申请
     *
     * @param ids 私有云资源申请ID集合
     * @return 通用返回结果
     */
    CommonResult<String> deleteInfoByIds(List<String> ids);

    /**
     * 私有云资源申请新增并且提交审核申请
     *
     * @param dto 私有云资源保存并提交申请审核Dto
     * @return 通用返回结果
     */
    CommonResult<String> saveAndApply(CloudApplyAndSaveDTO dto);

    /**
     * 修改申请单状态
     *
     * @param id      申请单ID
     * @param status  状态
     * @param opinion 审核意见，同步到申请单
     */
    void updateStatus(String id, Integer status, String opinion);

    /**
     * 分页查询当前用户自己待审核、待执行的申请单
     *
     * @param queryFilter 分页查询条件
     * @return PageList<BizCloudApply> 私有云资源申请
     */
    PageList<BizCloudApply> queryTodoPage(QueryFilter<BizCloudApply> queryFilter);

    /**
     * 私有云资源申请及使用情况新增
     *
     * @param dto 私有云资源申请及使用情况新增
     * @return 执行结果
     */
    CommonResult<String> cloudApplySave(CloudApplySaveDTO dto);

    /**
     * 私有云资源申请及使用情况修改、保存
     *
     * @param dto 私有云资源申请及使用情况新增
     * @return 执行结果
     */
    CommonResult<String> cloudApplyUpdate(CloudApplySaveDTO dto);

    /**
     * 根据id查询私有云资源申请及使用情况
     *
     * @param id 私有云资源申请ID
     * @return BizCloudApply 私有云资源申请
     */
    CloudApplySaveDTO getCloudApplyInfo(String id);

    /**
     * 私有云资源申请表导出
     *
     * @param id       私有云资源申请ID
     * @param response 相应体
     */
    void export(String id, HttpServletResponse response);

}
