import '../../establishments/domain/establishment.dart'; /// Détails machine avec tarif et durée estimée. class MachineDetail { const MachineDetail({ required this.machine, required this.price, required this.estimatedDurationMinutes, this.establishmentName, this.currency = 'EUR', }); final Machine machine; final double price; final int estimatedDurationMinutes; final String? establishmentName; final String currency; factory MachineDetail.fromJson(Map json) { final machineJson = json['machine'] as Map; final pricing = json['pricing'] as Map?; String? establishmentName; final establishment = machineJson['establishment']; if (establishment is Map) { establishmentName = establishment['name'] as String?; } return MachineDetail( machine: Machine.fromJson(machineJson), price: (pricing?['price'] as num?)?.toDouble() ?? 0, currency: pricing?['currency'] as String? ?? 'EUR', estimatedDurationMinutes: json['estimated_duration_minutes'] as int? ?? 40, establishmentName: establishmentName, ); } } /// Créneau disponible pour réservation. class TimeSlot { const TimeSlot({required this.start, required this.end}); final DateTime start; final DateTime end; factory TimeSlot.fromJson(Map json) { return TimeSlot( start: DateTime.parse(json['start'] as String), end: DateTime.parse(json['end'] as String), ); } }