package com.engine.salary.service;

import com.engine.salary.entity.sicategory.dto.ICategoryDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryListDTO;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.util.page.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author weaver_cl
 * @Date 2022/3/9
 * @Version V1.0
 **/
public interface SICategoryService {

    Map<String, Object> getForm(Map<String, Object> params);

    Map<String, Object> insert(Map<String, Object> params);

    Map<String, Object> update(Map<String, Object> params);

    Map<String, Object> updateStatusById(Map<String, Object> params);

    PageInfo<ICategoryListDTO> listPage(InsuranceSchemeParam queryParam);

    /**
     * 查询自定义福利列表
     *
     * @param welfareType 福利类型,用于页面右上角的筛选功能，不传则查询全部
     * @return 分页列表
     * @see WelfareTypeEnum
     */
//    PageInfo<ICategoryListDTO> listPage(WelfareTypeEnum welfareType);


    /**
     * 根据tenantKey获取name和id的map结构
     *
     * @return map
     */
    Map<String, String> categoryIdNameMap();

    /**
     * @description 根据ID获取自定义福利
     * @return void
     * @author Harryxzy
     * @date 2022/10/14 11:40
     */
    ICategoryDTO getByID(Long customCategoryId);

    /***
     * @description 修改自定义福利 名称
     * @return void
     * @author Harryxzy
     * @date 2022/10/14 14:50
     */
    Map<String, Object> updateCategoryName(ICategoryFormDTO iCategoryFormDTO);

    /***
     * @description 修改自定义福利 名称、缴费对象
     */
    Map<String, Object> updateCategoryNameAndPayScope(ICategoryFormDTO iCategoryFormDTO);

    Map<String, Object>  deleteCustomCategory(ICategoryFormDTO iCategoryFormDTO);

    ICategoryPO getICategoryPOByID(Long id);

    List<ICategoryPO> listByName(String insuranceName);
}
