Integration fonctionnalités V1 ( resas + gestion machines

This commit is contained in:
bastien
2026-07-03 19:02:48 +02:00
parent 20f383dd62
commit bf191d6396
46 changed files with 4691 additions and 654 deletions
@@ -0,0 +1,52 @@
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<String, dynamic> json) {
final machineJson = json['machine'] as Map<String, dynamic>;
final pricing = json['pricing'] as Map<String, dynamic>?;
String? establishmentName;
final establishment = machineJson['establishment'];
if (establishment is Map<String, dynamic>) {
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<String, dynamic> json) {
return TimeSlot(
start: DateTime.parse(json['start'] as String),
end: DateTime.parse(json['end'] as String),
);
}
}