Add equipment management features (and qr generation support)
This commit is contained in:
@@ -30,6 +30,128 @@ EventStatus eventStatusFromString(String? status) {
|
||||
}
|
||||
}
|
||||
|
||||
enum PreparationStatus {
|
||||
notStarted,
|
||||
inProgress,
|
||||
completed,
|
||||
completedWithMissing
|
||||
}
|
||||
|
||||
String preparationStatusToString(PreparationStatus status) {
|
||||
switch (status) {
|
||||
case PreparationStatus.notStarted:
|
||||
return 'NOT_STARTED';
|
||||
case PreparationStatus.inProgress:
|
||||
return 'IN_PROGRESS';
|
||||
case PreparationStatus.completed:
|
||||
return 'COMPLETED';
|
||||
case PreparationStatus.completedWithMissing:
|
||||
return 'COMPLETED_WITH_MISSING';
|
||||
}
|
||||
}
|
||||
|
||||
PreparationStatus preparationStatusFromString(String? status) {
|
||||
switch (status) {
|
||||
case 'NOT_STARTED':
|
||||
return PreparationStatus.notStarted;
|
||||
case 'IN_PROGRESS':
|
||||
return PreparationStatus.inProgress;
|
||||
case 'COMPLETED':
|
||||
return PreparationStatus.completed;
|
||||
case 'COMPLETED_WITH_MISSING':
|
||||
return PreparationStatus.completedWithMissing;
|
||||
default:
|
||||
return PreparationStatus.notStarted;
|
||||
}
|
||||
}
|
||||
|
||||
enum ReturnStatus {
|
||||
notStarted,
|
||||
inProgress,
|
||||
completed,
|
||||
completedWithMissing
|
||||
}
|
||||
|
||||
String returnStatusToString(ReturnStatus status) {
|
||||
switch (status) {
|
||||
case ReturnStatus.notStarted:
|
||||
return 'NOT_STARTED';
|
||||
case ReturnStatus.inProgress:
|
||||
return 'IN_PROGRESS';
|
||||
case ReturnStatus.completed:
|
||||
return 'COMPLETED';
|
||||
case ReturnStatus.completedWithMissing:
|
||||
return 'COMPLETED_WITH_MISSING';
|
||||
}
|
||||
}
|
||||
|
||||
ReturnStatus returnStatusFromString(String? status) {
|
||||
switch (status) {
|
||||
case 'NOT_STARTED':
|
||||
return ReturnStatus.notStarted;
|
||||
case 'IN_PROGRESS':
|
||||
return ReturnStatus.inProgress;
|
||||
case 'COMPLETED':
|
||||
return ReturnStatus.completed;
|
||||
case 'COMPLETED_WITH_MISSING':
|
||||
return ReturnStatus.completedWithMissing;
|
||||
default:
|
||||
return ReturnStatus.notStarted;
|
||||
}
|
||||
}
|
||||
|
||||
class EventEquipment {
|
||||
final String equipmentId; // ID de l'équipement
|
||||
final int quantity; // Quantité (pour consommables)
|
||||
final bool isPrepared; // Validé en préparation
|
||||
final bool isReturned; // Validé au retour
|
||||
final int? returnedQuantity; // Quantité retournée (pour consommables)
|
||||
|
||||
EventEquipment({
|
||||
required this.equipmentId,
|
||||
this.quantity = 1,
|
||||
this.isPrepared = false,
|
||||
this.isReturned = false,
|
||||
this.returnedQuantity,
|
||||
});
|
||||
|
||||
factory EventEquipment.fromMap(Map<String, dynamic> map) {
|
||||
return EventEquipment(
|
||||
equipmentId: map['equipmentId'] ?? '',
|
||||
quantity: map['quantity'] ?? 1,
|
||||
isPrepared: map['isPrepared'] ?? false,
|
||||
isReturned: map['isReturned'] ?? false,
|
||||
returnedQuantity: map['returnedQuantity'],
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'equipmentId': equipmentId,
|
||||
'quantity': quantity,
|
||||
'isPrepared': isPrepared,
|
||||
'isReturned': isReturned,
|
||||
'returnedQuantity': returnedQuantity,
|
||||
};
|
||||
}
|
||||
|
||||
EventEquipment copyWith({
|
||||
String? equipmentId,
|
||||
int? quantity,
|
||||
bool? isPrepared,
|
||||
bool? isReturned,
|
||||
int? returnedQuantity,
|
||||
}) {
|
||||
return EventEquipment(
|
||||
equipmentId: equipmentId ?? this.equipmentId,
|
||||
quantity: quantity ?? this.quantity,
|
||||
isPrepared: isPrepared ?? this.isPrepared,
|
||||
isReturned: isReturned ?? this.isReturned,
|
||||
returnedQuantity: returnedQuantity ?? this.returnedQuantity,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class EventModel {
|
||||
final String id;
|
||||
final String name;
|
||||
@@ -50,6 +172,11 @@ class EventModel {
|
||||
final List<Map<String, dynamic>> options;
|
||||
final EventStatus status;
|
||||
|
||||
// Nouveaux champs pour la gestion du matériel
|
||||
final List<EventEquipment> assignedEquipment;
|
||||
final PreparationStatus? preparationStatus;
|
||||
final ReturnStatus? returnStatus;
|
||||
|
||||
EventModel({
|
||||
required this.id,
|
||||
required this.name,
|
||||
@@ -69,6 +196,9 @@ class EventModel {
|
||||
required this.documents,
|
||||
this.options = const [],
|
||||
this.status = EventStatus.waitingForApproval,
|
||||
this.assignedEquipment = const [],
|
||||
this.preparationStatus,
|
||||
this.returnStatus,
|
||||
});
|
||||
|
||||
factory EventModel.fromMap(Map<String, dynamic> map, String id) {
|
||||
@@ -149,6 +279,22 @@ class EventModel {
|
||||
customerId = map['customer'] as String;
|
||||
}
|
||||
|
||||
// Gestion des équipements assignés
|
||||
final assignedEquipmentRaw = map['assignedEquipment'] ?? [];
|
||||
final List<EventEquipment> assignedEquipment = [];
|
||||
|
||||
if (assignedEquipmentRaw is List) {
|
||||
for (var e in assignedEquipmentRaw) {
|
||||
try {
|
||||
if (e is Map) {
|
||||
assignedEquipment.add(EventEquipment.fromMap(Map<String, dynamic>.from(e)));
|
||||
}
|
||||
} catch (equipmentError) {
|
||||
print('Warning: Failed to parse equipment in event $id: $equipmentError');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return EventModel(
|
||||
id: id,
|
||||
name: (map['Name'] ?? '').toString().trim(),
|
||||
@@ -168,6 +314,9 @@ class EventModel {
|
||||
documents: docs,
|
||||
options: options,
|
||||
status: eventStatusFromString(map['status'] as String?),
|
||||
assignedEquipment: assignedEquipment,
|
||||
preparationStatus: preparationStatusFromString(map['preparationStatus'] as String?),
|
||||
returnStatus: returnStatusFromString(map['returnStatus'] as String?),
|
||||
);
|
||||
} catch (e) {
|
||||
print('Error parsing event $id: $e');
|
||||
@@ -220,6 +369,9 @@ class EventModel {
|
||||
'documents': documents,
|
||||
'options': options,
|
||||
'status': eventStatusToString(status),
|
||||
'assignedEquipment': assignedEquipment.map((e) => e.toMap()).toList(),
|
||||
'preparationStatus': preparationStatus != null ? preparationStatusToString(preparationStatus!) : null,
|
||||
'returnStatus': returnStatus != null ? returnStatusToString(returnStatus!) : null,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user