53 lines
1.5 KiB
Dart
53 lines
1.5 KiB
Dart
import "materiel_item.dart";
|
|
|
|
/// Un emprunt en cours de l'étudiant, affiché dans le parcours de restitution
|
|
/// et renvoyé par l'API.
|
|
class EmpruntItem {
|
|
const EmpruntItem({
|
|
required this.id,
|
|
required this.materiel,
|
|
required this.dateEmprunt,
|
|
required this.retourPrevu,
|
|
required this.statut,
|
|
});
|
|
|
|
factory EmpruntItem.fromJson(Map<String, dynamic> json) {
|
|
final dateEmprunt = DateTime.parse(json["dateEmprunt"] as String);
|
|
final retourPrevu = DateTime.parse(json["dateRetourPrevue"] as String);
|
|
|
|
return EmpruntItem(
|
|
id: json["id"] as int,
|
|
materiel: MaterielItem.fromJson(json["materiel"] as Map<String, dynamic>),
|
|
dateEmprunt: _dateHeure(dateEmprunt),
|
|
retourPrevu: _date(retourPrevu),
|
|
statut: json["statut"] as String,
|
|
);
|
|
}
|
|
|
|
final int id;
|
|
final MaterielItem materiel;
|
|
final String dateEmprunt;
|
|
final String retourPrevu;
|
|
final String statut;
|
|
|
|
EmpruntItem copyWith({MaterielItem? materiel, String? statut}) {
|
|
return EmpruntItem(
|
|
id: id,
|
|
materiel: materiel ?? this.materiel,
|
|
dateEmprunt: dateEmprunt,
|
|
retourPrevu: retourPrevu,
|
|
statut: statut ?? this.statut,
|
|
);
|
|
}
|
|
|
|
static String _deux(int valeur) => valeur.toString().padLeft(2, "0");
|
|
|
|
static String _date(DateTime date) {
|
|
return "${_deux(date.day)}/${_deux(date.month)}";
|
|
}
|
|
|
|
static String _dateHeure(DateTime date) {
|
|
return "${_date(date)} à ${_deux(date.hour)}:${_deux(date.minute)}";
|
|
}
|
|
}
|