Ajout des options

This commit is contained in:
2025-05-27 22:55:34 +02:00
parent 9489183b68
commit 50a38816d3
5 changed files with 787 additions and 140 deletions

View File

@ -7,7 +7,7 @@ class EventModel {
final String description;
final DateTime startDateTime;
final DateTime endDateTime;
final double price;
final double basePrice;
final int installationTime;
final int disassemblyTime;
final String eventTypeId;
@ -17,6 +17,7 @@ class EventModel {
final double longitude;
final List<DocumentReference> workforce;
final List<Map<String, String>> documents;
final List<Map<String, dynamic>> options;
EventModel({
required this.id,
@ -24,7 +25,7 @@ class EventModel {
required this.description,
required this.startDateTime,
required this.endDateTime,
required this.price,
required this.basePrice,
required this.installationTime,
required this.disassemblyTime,
required this.eventTypeId,
@ -34,6 +35,7 @@ class EventModel {
required this.longitude,
required this.workforce,
required this.documents,
this.options = const [],
});
factory EventModel.fromMap(Map<String, dynamic> map, String id) {
@ -55,6 +57,16 @@ class EventModel {
}
}).toList()
: <Map<String, String>>[];
final optionsRaw = map['options'] ?? [];
final options = optionsRaw is List
? optionsRaw.map<Map<String, dynamic>>((e) {
if (e is Map) {
return Map<String, dynamic>.from(e as Map);
} else {
return {};
}
}).toList()
: <Map<String, dynamic>>[];
return EventModel(
id: id,
name: map['Name'] ?? '',
@ -62,7 +74,7 @@ class EventModel {
startDateTime: startTimestamp?.toDate() ?? DateTime.now(),
endDateTime: endTimestamp?.toDate() ??
DateTime.now().add(const Duration(hours: 1)),
price: (map['Price'] ?? 0.0).toDouble(),
basePrice: (map['BasePrice'] ?? map['Price'] ?? 0.0).toDouble(),
installationTime: map['InstallationTime'] ?? 0,
disassemblyTime: map['DisassemblyTime'] ?? 0,
eventTypeId: map['EventType'] is DocumentReference
@ -76,6 +88,7 @@ class EventModel {
longitude: (map['Longitude'] ?? 0.0).toDouble(),
workforce: workforceRefs.whereType<DocumentReference>().toList(),
documents: docs,
options: options,
);
}
@ -85,7 +98,7 @@ class EventModel {
'Description': description,
'StartDateTime': Timestamp.fromDate(startDateTime),
'EndDateTime': Timestamp.fromDate(endDateTime),
'Price': price,
'BasePrice': basePrice,
'InstallationTime': installationTime,
'DisassemblyTime': disassemblyTime,
'EventType': eventTypeId,
@ -96,6 +109,7 @@ class EventModel {
'Longitude': longitude,
'workforce': workforce,
'documents': documents,
'options': options,
};
}
}