import 'package:p_tits_pas/models/m_dashbord/assistant_model.dart'; import 'package:p_tits_pas/models/m_dashbord/child_model.dart'; import 'package:p_tits_pas/models/m_dashbord/contract_model.dart'; import 'package:p_tits_pas/models/m_dashbord/conversation_model.dart'; import 'package:p_tits_pas/models/m_dashbord/event_model.dart'; import 'package:p_tits_pas/models/m_dashbord/notification_model.dart'; class DashboardService { // URL de base de l'API static const String _baseUrl = 'YOUR_API_BASE_URL'; // Récupérer la liste des enfants Future> getChildren() async { try { // TODO: Implémenter l'appel API // Exemple de mock data pour le développement return [ ChildModel( id: '1', firstName: 'Emma', birthDate: DateTime(2020, 5, 15), photoUrl: 'assets/images/child1.jpg', status: ChildStatus.onHoliday, ), ChildModel( id: '2', firstName: 'Lucas', birthDate: DateTime(2021, 3, 10), photoUrl: 'assets/images/child2.jpg', status: ChildStatus.searching, ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des enfants: $e'); } } // Récupérer l'assistante maternelle pour un enfant Future getAssistantForChild(String childId) async { try { // TODO: Implémenter l'appel API return AssistantModel( id: 'am1', firstName: 'Marie', lastName: 'Dupont', hourlyRate: 10.0, dailyFees: 80.0, status: AssistantStatus.available, photoUrl: 'assets/images/assistant1.jpg', address: '123 rue des Lilas', phone: '0123456789', ); } catch (e) { throw Exception('Erreur lors de la récupération de l\'assistante: $e'); } } // Récupérer les événements pour un enfant Future> getEventsForChild(String childId) async { try { // TODO: Implémenter l'appel API return [ EventModel( id: 'evt1', title: 'Rendez-vous médical', startDate: DateTime.now().add(const Duration(days: 2)), type: EventType.parentVacation, status: EventStatus.pending, description: 'Visite de routine', childId: childId, ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des événements: $e'); } } // Récupérer tous les événements à venir Future> getUpcomingEvents() async { try { // TODO: Implémenter l'appel API return [ EventModel( id: 'evt1', title: 'Activité peinture', startDate: DateTime.now().add(const Duration(days: 1)), endDate: DateTime.now().add(const Duration(days: 1, hours: 2)), type: EventType.parentVacation, status: EventStatus.pending, description: 'Atelier créatif', childId: '1', ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des événements: $e'); } } // Récupérer les contrats Future> getContracts() async { try { // TODO: Implémenter l'appel API return [ ContractModel( id: 'contract1', childId: '1', assistantId: 'am1', startDate: DateTime(2023, 9, 1), endDate: DateTime(2024, 8, 31), status: ContractStatus.pending, hourlyRate: 10.0, createdAt: DateTime.now(), ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des contrats: $e'); } } // Récupérer les contrats pour un enfant spécifique Future> getContractsForChild(String childId) async { try { // TODO: Implémenter l'appel API return [ ContractModel( id: 'contract1', childId: childId, assistantId: 'am1', startDate: DateTime(2023, 9, 1), endDate: DateTime(2024, 8, 31), status: ContractStatus.active, hourlyRate: 10.0, createdAt: DateTime.now(), ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des contrats: $e'); } } // Récupérer les conversations Future> getConversations() async { try { // TODO: Implémenter l'appel API return [ ConversationModel( id: 'conv1', title: 'Conversation avec Marie Dupont', participantIds: ['am1'], messages: [ MessageModel( id: 'msg1', content: 'Bonjour, comment ça va ?', senderId: 'am1', sentAt: DateTime.now().subtract(const Duration(hours: 2)), status: MessageStatus.read, ), MessageModel( id: 'msg2', content: 'Tout va bien, merci !', senderId: 'parent1', sentAt: DateTime.now().subtract(const Duration(hours: 1, minutes: 30)), status: MessageStatus.read, ), ], lastMessageAt: DateTime.now().subtract(const Duration(hours: 2)), unreadCount: 2, ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des conversations: $e'); } } // Récupérer les notifications Future> getNotifications() async { try { // TODO: Implémenter l'appel API return [ NotificationModel( id: 'notif1', title: 'Nouveau message', createdAt: DateTime.now(), isRead: false, type: NotificationType.contractPending, content: 'Votre contrat est en attente', ), ]; } catch (e) { throw Exception('Erreur lors de la récupération des notifications: $e'); } } // Marquer une notification comme lue Future markNotificationAsRead(String notificationId) async { try { // TODO: Implémenter l'appel API } catch (e) { throw Exception('Erreur lors du marquage de la notification: $e'); } } }