package com.younike.system.mapper;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
import com.younike.system.domain.ServerTimeBook;
import org.apache.ibatis.annotations.Param;

/**
 * 服务人员预约信息Mapper接口
 * 
 * @author chenpf
 * @date 2022-02-17
 */
public interface ServerTimeBookMapper {
    /**
     * 查询服务人员预约信息
     * 
     * @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 id 服务人员预约信息主键
     * @return 结果
     */
    int deleteServerTimeBookById(Long id);

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

    /**
     * 获取服务人员预约记录
     * @param serverId
     * @return
     */
    List<ServerTimeBook> getBookedList(Long serverId);

    /**
     * 删除服务人员预约记录
     * @param serverId
     * @return
     */
    int removeBookedList(Long serverId);

    void insertBatch(List<ServerTimeBook> bookList);

    List<ServerTimeBook> selectServerTimeBookByServerId(Long serverId);

    void removeBookedListBefore(LocalDateTime deleteDay);

    void removeBookedListAfter(LocalDateTime insertDay);

    List<ServerTimeBook> selectAvailableServerTimeBookList(@Param("serverId") Long serverId, @Param("date") LocalDate date, @Param("start") LocalTime start, @Param("end")LocalTime end);

    void updateServerTimeBooks(List<ServerTimeBook> list);
}
