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