package cn.nianxx.thhotel.platform.hotel.service;

import cn.nianxx.thhotel.platform.common.result.PlatformPageResult;
import cn.nianxx.thhotel.platform.hotel.common.request.AdminHotelCreateRequest;
import cn.nianxx.thhotel.platform.hotel.common.request.AdminHotelStatusUpdateRequest;
import cn.nianxx.thhotel.platform.hotel.common.request.AdminHotelUpdateRequest;
import cn.nianxx.thhotel.platform.hotel.common.result.AdminHotelResult;
import cn.nianxx.thhotel.platform.security.common.dto.AuthenticatedUserContext;

/**
 * 管理后台酒店管理服务。第一版提供酒店查询。
 */
public interface AdminHotelManagementService {

    /**
     * 分页查询酒店列表。
     */
    PlatformPageResult<AdminHotelResult> queryHotels(
            String keyword,
            String hotelStatus,
            Integer pageNum,
            Integer pageSize);

    /**
     * 查询酒店详情。
     */
    AdminHotelResult getHotel(String hotelId);

    /**
     * 新增酒店，单酒店阶段默认 DISABLED。
     */
    AdminHotelResult createHotel(AdminHotelCreateRequest request, AuthenticatedUserContext actor);

    /**
     * 编辑酒店基础信息，hotelId 不允许修改。
     */
    AdminHotelResult updateHotel(String hotelId, AdminHotelUpdateRequest request, AuthenticatedUserContext actor);

    /**
     * 更新酒店状态，启用时校验单酒店 ACTIVE 约束。
     */
    AdminHotelResult updateHotelStatus(
            String hotelId,
            AdminHotelStatusUpdateRequest request,
            AuthenticatedUserContext actor);
}
