package com.jpsoft.shinestar.modules.base.service;

import com.github.pagehelper.Page;
import com.jpsoft.shinestar.modules.base.entity.HolidayInfo;
import com.jpsoft.shinestar.modules.common.dto.Sort;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface HolidayInfoService {
	HolidayInfo get(String id);
	boolean exist(String id);
	int insert(HolidayInfo model);
	int update(HolidayInfo model);
	int delete(String id);
	List<HolidayInfo> list();
	Page<HolidayInfo> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);

	/**
	 * 查询适用节假日集合
	 * @param childrenCode 当前单位编号，注意不要带通配符
	 * @param startDate 起始时间
	 * @param endDate 结束时间
	 * @param working 是否工作
	 * @return 节假日日期集合
	 */
	Set<String> getHolidaySetByDate(String childrenCode, Date startDate, Date endDate, Boolean working);

	/**
	 * 查询适用节假日map
	 * @param childrenCode 当前单位编号，注意不要带通配符
	 * @param startDate 起始时间
	 * @param endDate 结束时间
	 * @param working 是否工作
	 * @return
	 */
	Map<String,HolidayInfo> getHolidayMapByDate(String childrenCode, Date startDate, Date endDate, Boolean working);

    boolean existByDateAndCompanyId(Date attendanceDate, String companyId);

    List<HolidayInfo> findByDate(Date time);
}