import 'package:concierge/data/remote/api/concierge_service.dart';
import 'package:concierge/data/remote/models/area_details.dart';
import 'package:concierge/data/remote/models/order.dart';
import 'package:concierge/data/remote/models/product.dart';
import 'package:concierge/data/remote/models/property.dart';
import 'package:concierge/domain/models/delivery_location.dart';
class PropertyRepository {
final ConciergeService _service;
const PropertyRepository(this._service);
Future<Property> getHotelOverview({required String hotelCode}) async {
final response = await _service.getHotelOverview(hotelCode);
return response.data;
}
Future<AreaDetails> getArea(int areaId) async {
final response = await _service.getArea(areaId);
return response.data;
}
Future<Product> getProduct(int productId) async {
final response = await _service.getProduct(productId);
return response.data;
}
Future<Order> createOrder({
required List<Map<String, dynamic>> products,
required int areaId,
required String locationCode,
required bool isDelivery,
required String roomNumber,
required String readyTime,
required String comment,
required bool chargeToRoom,
required DeliveryLocation deliveryLocation,
}) async {
final body = {
"products": products,
"area_id": areaId,
"delivery": isDelivery,
"requested_delivery_time": readyTime.isEmpty ? "ASAP" : readyTime,
"payment_type": chargeToRoom ? "ROOM" : "PAYMENT_SERVICE",
"customer_comment": comment,
"order_type": "PRODUCT"
};
if (deliveryLocation is Room) {
body["room"] = roomNumber;
} else if (deliveryLocation is Area) {
body["location_code"] = locationCode;
}
final response = await _service.createOrder(body);
return response.data;
}
Future<Order> getOrder(int id) async {
final response = await _service.getOrder(id.toString());
return response.data;
}
Future<List<Order>> getAllOrders() async {
final response = await _service.getCustomerOrders();
return response.data;
}
}