package com.jwipc.order.logic;

import com.jwipc.order.dto.AppointmentTime2DTO;
import com.jwipc.order.dto.AppointmentTimeDTO;
import com.jwipc.order.model.query.AppointmentRecordQuery;
import com.jwipc.order.model.query.AppointmentTimeQuery;
import com.jwipc.page.PageView;

import java.util.List;

/**
 * <p>
 *预约时间范围数据配置
 * </p>
 *
 * @author wt
 * @version 1.0
 * @since 2024/3/5
 */
public interface AppointmentTimeLogic {
    /**
     * 获取分页列表
     * @param query
     * @return
     */
    PageView getList(AppointmentTimeQuery query);

    /**
     * 查询数据根据id
     * @param id
     * @return
     */
    AppointmentTimeDTO getById(Long id);

    /**
     * 保存数据
     * @param appointmentTimeDto
     */
    void saveData(AppointmentTimeDTO appointmentTimeDto);

    /**
     * 根据id删除数据
     * @param id id
     */
    void removeById(Long id);

    /**
     * 时间范围选择器
     * @param query
     * @return
     */
    List<AppointmentTimeDTO> selectorList(AppointmentTimeQuery query);

    /**
     * 查询预约数据
     * @param query
     * @return
     */
    List<AppointmentTime2DTO> getTimeRangeData(AppointmentRecordQuery query);

    /**
     * 获取指定日期+指定时间范围内剩余可以预约的数量
     *
     * @param selectDay     要预约的日期
     * @param appointmentId 时间段范围的id
     * @param dockerCode    码头编码
     * @param factoryCode   工厂编码
     * @return 可以预约的数据量
     */
    AppointmentTime2DTO getTimeRangeCouldNum(String selectDay, String appointmentId, String dockerCode, String factoryCode);
}
