Files

48 lines
1.4 KiB
Dart

import '../../../core/time/server_time.dart';
/// Modèle réservation de créneau machine.
class Booking {
const Booking({
required this.uuid,
required this.machineUuid,
required this.machineName,
required this.slotStart,
required this.slotEnd,
required this.status,
this.bookingFee = 0,
});
final String uuid;
final String machineUuid;
final String machineName;
final DateTime? slotStart;
final DateTime? slotEnd;
final String status;
final double bookingFee;
bool get canCancel =>
(status == 'confirmed' || status == 'pending') &&
slotStart != null &&
slotStart!.isAfter(ServerTime.now());
bool get canModify => canCancel;
factory Booking.fromJson(Map<String, dynamic> json) {
final machine = json['machine'] as Map<String, dynamic>?;
return Booking(
uuid: json['uuid'] as String,
machineUuid: machine?['uuid'] as String? ?? json['machine_uuid'] as String? ?? '',
machineName: machine?['name'] as String? ?? 'Machine',
slotStart: json['slot_start'] != null
? DateTime.tryParse(json['slot_start'] as String)
: null,
slotEnd: json['slot_end'] != null
? DateTime.tryParse(json['slot_end'] as String)
: null,
status: json['status'] as String? ?? 'pending',
bookingFee: (json['booking_fee'] as num?)?.toDouble() ?? 0,
);
}
}