Integration fonctionnalités V1 ( resas + gestion machines
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'wash_progress.dart';
|
||||
|
||||
/// Modèle lavage (cycle en cours ou terminé).
|
||||
class Wash {
|
||||
const Wash({
|
||||
@@ -9,6 +11,9 @@ class Wash {
|
||||
this.startedAt,
|
||||
this.endedAt,
|
||||
this.durationMinutes,
|
||||
this.machineType,
|
||||
this.cycleEndsAt,
|
||||
this.progress,
|
||||
});
|
||||
|
||||
final String uuid;
|
||||
@@ -19,14 +24,27 @@ class Wash {
|
||||
final DateTime? startedAt;
|
||||
final DateTime? endedAt;
|
||||
final int? durationMinutes;
|
||||
final String? machineType;
|
||||
final DateTime? cycleEndsAt;
|
||||
final WashProgress? progress;
|
||||
|
||||
WashProgress get liveProgress => WashProgress.compute(
|
||||
startedAt: startedAt,
|
||||
estimatedEndAt: progress?.estimatedEndAt ?? cycleEndsAt,
|
||||
durationMinutes: durationMinutes,
|
||||
machineType: machineType,
|
||||
status: status,
|
||||
);
|
||||
|
||||
factory Wash.fromJson(Map<String, dynamic> json) {
|
||||
final machine = json['machine'] as Map<String, dynamic>?;
|
||||
final progressJson = json['progress'] as Map<String, dynamic>?;
|
||||
|
||||
return Wash(
|
||||
uuid: json['uuid'] as String,
|
||||
machineUuid: machine?['uuid'] as String? ?? json['machine_uuid'] as String? ?? '',
|
||||
machineName: machine?['name'] as String? ?? 'Machine',
|
||||
machineType: machine?['type'] as String?,
|
||||
status: json['status'] as String? ?? 'pending_start',
|
||||
cost: (json['cost'] as num?)?.toDouble() ?? 0,
|
||||
startedAt: json['started_at'] != null
|
||||
@@ -36,6 +54,10 @@ class Wash {
|
||||
? DateTime.tryParse(json['ended_at'] as String)
|
||||
: null,
|
||||
durationMinutes: json['duration_minutes'] as int?,
|
||||
cycleEndsAt: machine?['cycle_ends_at'] != null
|
||||
? DateTime.tryParse(machine!['cycle_ends_at'] as String)
|
||||
: null,
|
||||
progress: progressJson != null ? WashProgress.fromJson(progressJson) : null,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user