syncra_addons/creche_app/lib/models/child.dart

71 lines
2.0 KiB
Dart

import 'package:uuid/uuid.dart';
class Child {
final String id;
final String firstName;
final String lastName;
final DateTime birthDate;
final String? photoUrl;
final String classId;
final String teacherId;
final String status;
final String? mood;
final String? allergies; // ← NOVO
final String? foodRestrictions; // ← NOVO
final String? roomId; // ← NOVO
Child({
String? id,
required this.firstName,
required this.lastName,
required this.birthDate,
this.photoUrl,
required this.classId,
required this.teacherId,
this.status = 'active',
this.mood,
this.allergies,
this.foodRestrictions,
this.roomId,
}) : id = id ?? const Uuid().v4();
int get age {
final today = DateTime.now();
int a = today.year - birthDate.year;
if (today.month < birthDate.month ||
(today.month == birthDate.month && today.day < birthDate.day)) a--;
return a;
}
String get fullName => '$firstName $lastName';
factory Child.fromMap(Map<String, dynamic> map) => Child(
id: map['id'],
firstName: map['first_name'] ?? '',
lastName: map['last_name'] ?? '',
birthDate: DateTime.tryParse(map['birth_date'] ?? '') ?? DateTime.now(),
photoUrl: map['photo_url'],
classId: map['class_id'] ?? '',
teacherId: map['teacher_id'] ?? '',
status: map['status'] ?? 'active',
mood: map['mood'],
allergies: map['allergies'],
foodRestrictions: map['food_restrictions'],
roomId: map['room_id'],
);
Map<String, dynamic> toMap() => {
'id': id,
'first_name': firstName,
'last_name': lastName,
'birth_date': birthDate.toIso8601String().split('T')[0],
'photo_url': photoUrl,
'class_id': classId,
'teacher_id': teacherId,
'status': status,
'allergies': allergies,
'food_restrictions': foodRestrictions,
'room_id': roomId,
};
}