package cn.ey.biz.module.system.service.contract;

import cn.ey.biz.common.pojo.PageParam;
import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.module.system.api.contract.dto.ContractArchivedFieldDTO;
import cn.ey.biz.module.system.api.contract.dto.ContractTypeDTO;
import cn.ey.biz.module.system.controller.admin.contract.vo.ContractArchivedEpVO;
import cn.ey.biz.module.system.controller.admin.contract.vo.ContractArchivedFieldVO;
import cn.ey.biz.module.system.controller.admin.contract.vo.ContractSaveVO;
import cn.ey.biz.module.system.controller.admin.contract.vo.ContractTypeVO;

import java.util.List;

public interface ContractService {

    /**
     * 分页获取合同归档复核人信息
     *
     * @param pageParam 分页信息
     * @return 合同归档复核人信息
     */
    PageResult<ContractArchivedEpVO> getContractArchivedEpPage(ContractSaveVO<PageParam> pageParam);

    /**
     * 分页获取合同类型信息
     *
     * @param pageParam 分页信息
     * @return 合同类型信息
     */
    PageResult<ContractTypeVO> getContractTypePage(ContractSaveVO<PageParam> pageParam);

    /**
     * 分页获取合同归档字段信息
     *
     * @param pageParam 分页信息
     * @return 合同归档字段信息
     */
    PageResult<ContractArchivedFieldVO> getContractArchivedFieldPage(ContractSaveVO<PageParam> pageParam);

    /**
     * 新增合同类型信息
     *
     * @param contract 新增的合同类型
     */
    void addContractInfo(ContractSaveVO<Object> contract);

    /**
     * 更新合同类型信息
     *
     * @param contract 更新的合同类型
     */
    void updateContractType(ContractSaveVO<Object> contract);

    /**
     * 删除合同类型信息
     *
     * @param contract 更新的合同类型
     */
    void deleteContractType(ContractSaveVO<Object> contract);

    /**
     * 获得启用的项目类型
     */
    List<ContractTypeDTO> getTypes(String sl);

    /**
     * 是否启用合同类型
     */
    void putTypeActive(ContractSaveVO<ContractTypeVO> content);

    /**
     * 获得项目类型对应归档字段
     */
    List<ContractArchivedFieldDTO> getContractArchivedFields(String sl, String projectType, String slType);

    /**
     * 根据name获取sl
     */
    List<String> getSl(String sl);
}
