From 1a501a3b2ad832bac18be5f5fbdac5457bcac133 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Thu, 26 Aug 2021 17:05:37 +0300 Subject: [PATCH] calendar events changes --- .../components/DocAvailableAppointments.dart | 44 +++++++++++++++---- lib/pages/MyAppointments/SchedulePage.dart | 2 +- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart index e5fcfe31..e4d35d90 100644 --- a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart +++ b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart @@ -10,7 +10,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:table_calendar/table_calendar.dart'; - +import "package:collection/collection.dart"; import '../../../uitl/date_uitl.dart'; class DocAvailableAppointments extends StatefulWidget { @@ -22,6 +22,7 @@ class DocAvailableAppointments extends StatefulWidget { static String selectedTime; bool isLiveCareAppointment; final dynamic doctorSchedule; + DocAvailableAppointments( {@required this.doctor, this.doctorSchedule, @@ -52,7 +53,7 @@ class _DocAvailableAppointmentsState extends State dynamic freeSlotsResponse; ScrollController _scrollController; - + Map freeSlotMap; var language; @override @@ -107,6 +108,24 @@ class _DocAvailableAppointmentsState extends State void _onVisibleDaysChanged( DateTime first, DateTime last, CalendarFormat format) { print('CALLBACK: _onVisibleDaysChanged'); + GifLoaderDialogUtils.showMyDialog(context); + freeSlotsResponse = freeSlotMap[first.month]; + _getJSONSlots().then((value) { + setState(() => { + _events.clear(), + _events = value, + // if (widget.doctorSchedule != null) + // { + // _calendarController.setSelectedDay( + // DateUtil.convertStringToDate(widget.doctorSchedule['Date']), + // isProgrammatic: true), + // // _onDaySelected( + // // DateUtil.convertStringToDate(widget.doctorSchedule['Date']), + // // List()) + // } + }); + GifLoaderDialogUtils.hideDialog(context); + }); } void _onCalendarCreated( @@ -256,9 +275,11 @@ class _DocAvailableAppointmentsState extends State DateTime dateStartObj = new DateTime( dateStart.year, dateStart.month, dateStart.day, 0, 0, 0, 0, 0); - freeSlots.forEach((v) { - if (v.start == dateStartObj) dayEvents.add(v); - }); + //freeSlots.forEach((v) { + for (var x = 0; x < freeSlots.length; x++) { + if (freeSlots[x].start == dateStartObj) dayEvents.add(freeSlots[x]); + } + //}); setState(() { if (dayEvents.length != 0) @@ -281,6 +302,7 @@ class _DocAvailableAppointmentsState extends State DateTime date; final DateFormat formatter = DateFormat('HH:mm'); final DateFormat dateFormatter = DateFormat('yyyy-MM-dd'); + docFreeSlots = []; for (var i = 0; i < freeSlotsResponse.length; i++) { date = DateUtil.convertStringToDate(freeSlotsResponse[i]); slotsList.add(FreeSlot(date, ['slot'])); @@ -348,9 +370,8 @@ class _DocAvailableAppointmentsState extends State if (res['MessageStatus'] == 1) { if (res['FreeTimeSlots'].length != 0) { DocAvailableAppointments.areAppointmentsAvailable = true; - freeSlotsResponse = res['FreeTimeSlots']; - print("res['FreeTimeSlots']"); - print(res['FreeTimeSlots'].length); + + filterByMonths(res['FreeTimeSlots']); _getJSONSlots().then((value) { setState(() => { _events.clear(), @@ -442,4 +463,11 @@ class _DocAvailableAppointmentsState extends State ), ); } + + filterByMonths(freeSlots) { + freeSlotMap = + groupBy(freeSlots, (obj) => DateUtil.convertStringToDate(obj).month); + + freeSlotsResponse = freeSlotMap[DateTime.now().month]; + } } diff --git a/lib/pages/MyAppointments/SchedulePage.dart b/lib/pages/MyAppointments/SchedulePage.dart index 6f6376dd..90ac8ae3 100644 --- a/lib/pages/MyAppointments/SchedulePage.dart +++ b/lib/pages/MyAppointments/SchedulePage.dart @@ -248,7 +248,7 @@ class _SchedulePageState extends State { context, FadePage( page: AppointmentDetails( - appo: widget.appo, + appo: widget.appo, doctorSchedule: selectedDate, ), ),