package com.amms.service;

import java.util.List;
import com.amms.domain.Reservation;

/**
 * 预约Service接口
 */
public interface IReservationService {
    /**
     * 查询预约列表
     *
     * @param reservation 预约
     * @return 预约集合
     */
    public List<Reservation> selectReservationList(Reservation reservation);

    /**
     * 查询预约
     *
     * @param id 预约主键
     * @return 预约
     */
    public Reservation selectReservationById(Long id);

    /**
     * 新增预约
     *
     * @param reservation 预约
     * @return 结果
     */
    public int insertReservation(Reservation reservation);

    /**
     * 修改预约
     *
     * @param reservation 预约
     * @return 结果
     */
    public int updateReservation(Reservation reservation);

    /**
     * 删除预约信息
     *
     * @param id 预约主键
     * @return 结果
     */
    public int deleteReservationById(Long id);

    /**
     * 审核预约（通过/驳回）。
     *
     * 审核通过时生成整单核验二维码（Reservation.qrCode）以及每位游客个人核验二维码（ReservationVisitor.visitorQrCode）。
     *
     * @param reservation 预约（需包含 id、status、remark）
     * @return 结果
     */
    public int auditReservation(Reservation reservation);

    /**
     * 整单核验：将该预约下所有游客核验状态置为1。
     *
     * @param reservationId 预约ID
     * @return 更新条数
     */
    public int verifyAllVisitors(Long reservationId);

    /**
     * 游客个人核验：将该游客核验状态置为1。
     *
     * @param visitorId 游客ID
     * @return 结果
     */
    public int verifyVisitor(Long visitorId);
}
