import "materiel_item.dart"; import "checklist_element_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, required this.checklistDepart, }); factory EmpruntItem.fromJson(Map 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), dateEmprunt: _dateHeure(dateEmprunt), retourPrevu: _date(retourPrevu), statut: json["statut"] as String, checklistDepart: (json["checklistDepart"] as List? ?? const []) .map( (element) => ChecklistElementItem.fromJson( Map.from(element as Map), ), ) .toList(), ); } final int id; final MaterielItem materiel; final String dateEmprunt; final String retourPrevu; final String statut; final List checklistDepart; EmpruntItem copyWith({MaterielItem? materiel, String? statut}) { return EmpruntItem( id: id, materiel: materiel ?? this.materiel, dateEmprunt: dateEmprunt, retourPrevu: retourPrevu, statut: statut ?? this.statut, checklistDepart: checklistDepart, ); } 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)}"; } }