package pwc.taxtech.atms.service;

import pwc.taxtech.atms.calendar.dto.CalendarConfigDto;
import pwc.taxtech.atms.calendar.dto.CalendarTaskTypeDto;
import pwc.taxtech.atms.calendar.dto.EntityDto;
import pwc.taxtech.atms.calendar.entity.CalendarConfiguration;
import pwc.taxtech.atms.calendar.entity.CalendarTaskType;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.calendar.CalendarConfigQueryParamDto;
import pwc.taxtech.atms.dto.calendar.CalendarDisplayQueryParamDto;

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

public interface ICalendarService {

    OperationResultDto deleteConfiguration(Long id);

    OperationResultDto saveTaskType(CalendarTaskType record);

    /**
     * 获取除“自定义”的其他taskType
     * @return
     */
    OperationResultDto<List<CalendarTaskTypeDto>> getTaskTypeList();

    /**
     * 获取所有taskType
     * @return
     */
    OperationResultDto<List<CalendarTaskTypeDto>> getAllTaskTypeList();

    OperationResultDto saveCalendarConfig(CalendarConfiguration calendarConfig);

    OperationResultDto<CalendarConfigDto> getCalendarConfigById(Long id);

    OperationResultDto getCalendarConfigList(CalendarConfigQueryParamDto queryParam);

    OperationResultDto<List<EntityDto>> getActiveEntityList();

    OperationResultDto getMaxConfigOrder();

    OperationResultDto getCalendarDataForDisplay(CalendarDisplayQueryParamDto queryParamDto);
}