package com.hrs.dao;

import com.hrs.model.entity.Reservation;
import java.util.List;

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: ReservationDao.java
* @Description: 预约控制层
*
* @version: v1.0.0
* @author: 赵恒
* @date: 2026年4月13日 上午9:32:15 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     赵恒           v1.0.0               新建文件
*/
public interface ReservationDao {
    /**
     * 
    * @Function: add
    * @Description: 添加预约
    *
    * @param: reservation 预约对象
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:35:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */	
    boolean add(Reservation reservation);
    /**
     * 
    * @Function: findByTenantId
    * @Description: 根据租客ID查询预约
    *
    * @param: tenantId 租客ID
    * @return：List<Reservation> 预约列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:35:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    List<Reservation> findByTenantId(Long tenantId);
    /**
     * 
    * @Function: findByLandlordId
    * @Description: 根据房东ID查询预约
    *
    * @param: landlordId 房东ID
    * @return：List<Reservation> 预约列表
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:35:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    List<Reservation> findByLandlordId(Long landlordId);
    /**
     * 
    * @Function: findById
    * @Description: 根据ID查询预约
    *
    * @param: id 预约ID
    * @return：Reservation 预约对象，未找到返回null
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:35:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    Reservation findById(Long id);
    /**
     * 
    * @Function: updateStatus
    * @Description: 更新预约状态
    *
    * @param: id 预约ID, status 状态
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:36:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean updateStatus(Long id, String status);
    /**
     * 
    * @Function: cancel
    * @Description: 取消预约
    *
    * @param: id 预约ID, tenantId 租客ID
    * @return：boolean 是否成功
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:36:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean cancel(Long id, Long tenantId);
    /**
     * 
    * @Function: countByTenantId
    * @Description: 统计租客的预约数量
    *
    * @param: tenantId 租客ID
    * @return：int 预约数量
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:36:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    int countByTenantId(Long tenantId);
    /**
     * 
    * @Function: countByLandlordId
    * @Description: 统计房东的预约数量
    *
    * @param: landlordId 房东ID
    * @return：int 预约数量
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:36:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    int countByLandlordId(Long landlordId);
    /**
     * 
    * @Function: existsByHouseId
    * @Description: 判断房源是否存在预约
    *
    * @param: houseId 房源ID
    * @return：boolean 是否存在预约
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:37:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    boolean existsByHouseId(Long houseId);
}
