Add equipment management features (and qr generation support)
This commit is contained in:
		
							
								
								
									
										89
									
								
								em2rp/lib/models/alert_model.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								em2rp/lib/models/alert_model.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| import 'package:cloud_firestore/cloud_firestore.dart'; | ||||
|  | ||||
| enum AlertType { | ||||
|   lowStock,       // Stock faible | ||||
|   maintenanceDue, // Maintenance à venir | ||||
|   conflict        // Conflit disponibilité | ||||
| } | ||||
|  | ||||
| String alertTypeToString(AlertType type) { | ||||
|   switch (type) { | ||||
|     case AlertType.lowStock: | ||||
|       return 'LOW_STOCK'; | ||||
|     case AlertType.maintenanceDue: | ||||
|       return 'MAINTENANCE_DUE'; | ||||
|     case AlertType.conflict: | ||||
|       return 'CONFLICT'; | ||||
|   } | ||||
| } | ||||
|  | ||||
| AlertType alertTypeFromString(String? type) { | ||||
|   switch (type) { | ||||
|     case 'LOW_STOCK': | ||||
|       return AlertType.lowStock; | ||||
|     case 'MAINTENANCE_DUE': | ||||
|       return AlertType.maintenanceDue; | ||||
|     case 'CONFLICT': | ||||
|       return AlertType.conflict; | ||||
|     default: | ||||
|       return AlertType.conflict; | ||||
|   } | ||||
| } | ||||
|  | ||||
| class AlertModel { | ||||
|   final String id;                  // ID généré automatiquement | ||||
|   final AlertType type;             // Type d'alerte | ||||
|   final String message;             // Message de l'alerte | ||||
|   final String? equipmentId;        // ID de l'équipement concerné (optionnel) | ||||
|   final DateTime createdAt;         // Date de création | ||||
|   final bool isRead;                // Statut lu/non lu | ||||
|  | ||||
|   AlertModel({ | ||||
|     required this.id, | ||||
|     required this.type, | ||||
|     required this.message, | ||||
|     this.equipmentId, | ||||
|     required this.createdAt, | ||||
|     this.isRead = false, | ||||
|   }); | ||||
|  | ||||
|   factory AlertModel.fromMap(Map<String, dynamic> map, String id) { | ||||
|     return AlertModel( | ||||
|       id: id, | ||||
|       type: alertTypeFromString(map['type']), | ||||
|       message: map['message'] ?? '', | ||||
|       equipmentId: map['equipmentId'], | ||||
|       createdAt: (map['createdAt'] as Timestamp?)?.toDate() ?? DateTime.now(), | ||||
|       isRead: map['isRead'] ?? false, | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   Map<String, dynamic> toMap() { | ||||
|     return { | ||||
|       'type': alertTypeToString(type), | ||||
|       'message': message, | ||||
|       'equipmentId': equipmentId, | ||||
|       'createdAt': Timestamp.fromDate(createdAt), | ||||
|       'isRead': isRead, | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   AlertModel copyWith({ | ||||
|     String? id, | ||||
|     AlertType? type, | ||||
|     String? message, | ||||
|     String? equipmentId, | ||||
|     DateTime? createdAt, | ||||
|     bool? isRead, | ||||
|   }) { | ||||
|     return AlertModel( | ||||
|       id: id ?? this.id, | ||||
|       type: type ?? this.type, | ||||
|       message: message ?? this.message, | ||||
|       equipmentId: equipmentId ?? this.equipmentId, | ||||
|       createdAt: createdAt ?? this.createdAt, | ||||
|       isRead: isRead ?? this.isRead, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 ElPoyo
					ElPoyo