import 'package:concierge/data/remote/models/api_response.dart';
import 'package:concierge/data/remote/models/order.dart';
import 'package:concierge/data/remote/models/order_review.dart';
import 'package:concierge/data/remote/models/product.dart';
import 'package:concierge/data/remote/models/property.dart';
import 'package:dio/dio.dart';
import 'package:retrofit/retrofit.dart';

import '../models/area_details.dart';

part '../../../_generated/data/remote/api/concierge_service.g.dart';

@RestApi()
abstract class ConciergeService {
  factory ConciergeService(Dio dio) = _ConciergeService;

  @GET("/hotels/domains/{hotelCode}")
  Future<ApiResponse<Property>> getHotelOverview(@Path("hotelCode") String hotelCode);

  @GET("/areas/{areaId}")
  Future<ApiResponse<AreaDetails>> getArea(@Path("areaId") int areaId);

  @GET("/products/{productId}")
  Future<ApiResponse<Product>> getProduct(@Path("productId") int productid);

  @POST("/orders/review")
  Future<ApiResponse<OrderReview>> getOrderReview(@Body() Map<String, dynamic> body);

  @POST("/orders/")
  Future<ApiResponse<Order>> createOrder(@Body() Map<String, dynamic> body);

  @GET("/orders/{orderid}")
  Future<ApiResponse<Order>> getOrder(@Path("orderid") String orderId);

   @GET("/customers/me/orders")
   Future<ApiResponse<List<Order>>> getCustomerOrders();
}