Julien Martin 9cb4162165 feat: Intégration du frontend Flutter depuis YNOV
- Framework: Flutter web
- Pages: Login, inscription, dashboards
- Services: API client, authentification, gestion d'état
- Intégration avec backend NestJS
- Dockerfile pour déploiement web
2025-11-24 15:44:15 +01:00

66 lines
1.8 KiB
Dart

class EventModel {
final String id;
final String title;
final String? description;
final DateTime startDate;
final DateTime? endDate;
final EventType type;
final EventStatus status;
final String? childId;
final String? assistantId;
final String? createdBy;
EventModel({
required this.id,
required this.title,
this.description,
required this.startDate,
this.endDate,
required this.type,
required this.status,
this.childId,
this.assistantId,
this.createdBy,
});
factory EventModel.fromJson(Map<String, dynamic> json) {
return EventModel(
id: json['id'],
title: json['title'],
description: json['description'],
startDate: DateTime.parse(json['startDate']),
endDate: json['endDate'] != null ? DateTime.parse(json['endDate']) : null,
type: EventType.values.byName(json['type']),
status: EventStatus.values.byName(json['status']),
childId: json['childId'],
assistantId: json['assistantId'],
createdBy: json['createdBy'],
);
}
bool get isMultiDay => endDate != null && !isSameDay(startDate, endDate!);
bool get isPending => status == EventStatus.pending;
bool get needsConfirmation => isPending && createdBy != 'current_user';
static bool isSameDay(DateTime date1, DateTime date2) {
return date1.year == date2.year &&
date1.month == date2.month &&
date1.day == date2.day;
}
}
enum EventType {
parentVacation, // Vacances parents
childAbsence, // Absence enfant
rpeActivity, // Activité RPE
assistantVacation, // Congés assistante maternelle
sickLeave, // Arrêt maladie
personalNote, // Note personnelle
}
enum EventStatus {
confirmed,
pending,
refused,
cancelled,
}