package com.younike.system.service;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import com.younike.system.domain.ServerTimeBook;

/**
 * 服务人员预约信息Service接口
 * 
 * @author chenpf
 * @date 2022-02-17
 */
public interface IServerTimeBookService {
    /**
     * 查询服务人员预约信息
     * 
     * @param id 服务人员预约信息主键
     * @return 服务人员预约信息
     */
    ServerTimeBook selectServerTimeBookById(Long id);

    /**
     * 查询服务人员预约信息列表
     * 
     * @param serverTimeBook 服务人员预约信息
     * @return 服务人员预约信息集合
     */
    List<ServerTimeBook> selectServerTimeBookList(ServerTimeBook serverTimeBook);

    /**
     * 新增服务人员预约信息
     * 
     * @param serverTimeBook 服务人员预约信息
     * @return 结果
     */
    int insertServerTimeBook(ServerTimeBook serverTimeBook);

    /**
     * 修改服务人员预约信息
     * 
     * @param serverTimeBook 服务人员预约信息
     * @return 结果
     */
    int updateServerTimeBook(ServerTimeBook serverTimeBook);

    /**
     * 批量删除服务人员预约信息
     * 
     * @param ids 需要删除的服务人员预约信息主键集合
     * @return 结果
     */
    int deleteServerTimeBookByIds(Long[] ids);

    /**
     * 删除服务人员预约信息信息
     * 
     * @param id 服务人员预约信息主键
     * @return 结果
     */
    int deleteServerTimeBookById(Long id);

    void generate();

    /**
     * @param serverId 服务人员ID
     * @param date 预约日期
     * @param start 预约开始时间
     * @param end 预约结束时间（包含Gap Time）
     */
    List<ServerTimeBook> selectAvailableServerTimeBookList(Long serverId, LocalDate date, LocalTime start, LocalTime end);

    void updateServerTimeBooks(List<ServerTimeBook> list);
}
