diff --git a/lib/src/models/event_model.dart b/lib/src/models/event_model.dart index e585f9f..d5b1b80 100644 --- a/lib/src/models/event_model.dart +++ b/lib/src/models/event_model.dart @@ -42,7 +42,7 @@ Future> getByProId(String day) async { for (var element in snapshot.docs) { eventos.add(Event.fromJson(element.data())); } - print('Error getByProId 1 $eventos'); + print('eventos $eventos'); return eventos; } catch (e) { print('Error getByProId $e'); @@ -77,4 +77,23 @@ class Event { profesionalId: json['profesional_id'], ); } + + static Future> getEventsAllById(String uid) async { + try { + var snapshot = await FirebaseFirestore.instance + .collection('services') + .where('profesional_id', isEqualTo: uid) + .get(); + + List eventos = []; + for (var element in snapshot.docs) { + eventos.add(Event.fromJson(element.data())); + } + print('eventos $eventos'); + return eventos; + } catch (e) { + print('Error getByProId $e'); + return []; + } + } } diff --git a/lib/src/screens/calendar.dart b/lib/src/screens/calendar.dart index da9ddba..dcacf4f 100644 --- a/lib/src/screens/calendar.dart +++ b/lib/src/screens/calendar.dart @@ -1,4 +1,8 @@ +import 'dart:ffi'; + +import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; +import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/models/event_model.dart'; @@ -13,6 +17,9 @@ class CalendarScreen extends StatefulWidget { } class _CalendarScreenState extends State { + final uid = AuthenticationRepository.instance.getCurrentUserUid(); + List? _events; + final _titleController = TextEditingController(); final _descriptionController = TextEditingController(); @@ -51,6 +58,12 @@ class _CalendarScreenState extends State { @override void initState() { super.initState(); + + if (_events == null) { + Event.getEventsAllById(uid ?? "").then((value) => setState(() { + _events = value; + })); + } } void _onDaySelected(DateTime day, DateTime focusedDay) { @@ -67,11 +80,19 @@ class _CalendarScreenState extends State { @override Widget build(BuildContext context) { + if (_events == null) { + return const Center( + child: CircularProgressIndicator(), + ); + } + + var events = _events!; // DateTime firstDay = today.subtract(Duration(days: 365)); DateTime lastDay = today.add(const Duration(days: 365)); return SafeArea( child: Scaffold( + resizeToAvoidBottomInset: false, appBar: PopAppbar( onPressed: () { Navigator.pop(context); @@ -92,6 +113,17 @@ class _CalendarScreenState extends State { selectedDayPredicate: (day) => isSameDay(day, today), calendarFormat: _calendarFormat, onFormatChanged: _onFormatChange, + eventLoader: (date) { + return events + .where((element) { + DateTime day = DateTime.parse(element.day ?? ""); + return (date.year == day.year && + date.month == day.month && + date.day == day.day); + }) + .map((e) => e.description) + .toList(); + }, availableCalendarFormats: const { CalendarFormat.month: 'Mes', CalendarFormat.week: 'Semana', @@ -264,6 +296,12 @@ class _CalendarScreenState extends State { _titleController.text = ''; _descriptionController.text = ''; }); + + Event.getEventsAllById(uid ?? "").then( + (value) => setState(() { + _events = value; + }), + ); }, label: 'AƱadir evento', ), @@ -314,7 +352,7 @@ class _CalendarScreenState extends State { ), ), TextSpan( - text: DateFormat('dd MMMM yyyy', 'es') + text: DateFormat('dd MMM', 'es') .format(DateTime.parse(e.day!)), style: TextStyle( color: Colors.grey[400],