|
|
@ -10,7 +10,7 @@ import 'package:flutter/cupertino.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
import 'package:table_calendar/table_calendar.dart';
|
|
|
|
import 'package:table_calendar/table_calendar.dart';
|
|
|
|
|
|
|
|
import "package:collection/collection.dart";
|
|
|
|
import '../../../uitl/date_uitl.dart';
|
|
|
|
import '../../../uitl/date_uitl.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class DocAvailableAppointments extends StatefulWidget {
|
|
|
|
class DocAvailableAppointments extends StatefulWidget {
|
|
|
@ -22,6 +22,7 @@ class DocAvailableAppointments extends StatefulWidget {
|
|
|
|
static String selectedTime;
|
|
|
|
static String selectedTime;
|
|
|
|
bool isLiveCareAppointment;
|
|
|
|
bool isLiveCareAppointment;
|
|
|
|
final dynamic doctorSchedule;
|
|
|
|
final dynamic doctorSchedule;
|
|
|
|
|
|
|
|
|
|
|
|
DocAvailableAppointments(
|
|
|
|
DocAvailableAppointments(
|
|
|
|
{@required this.doctor,
|
|
|
|
{@required this.doctor,
|
|
|
|
this.doctorSchedule,
|
|
|
|
this.doctorSchedule,
|
|
|
@ -52,7 +53,7 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
dynamic freeSlotsResponse;
|
|
|
|
dynamic freeSlotsResponse;
|
|
|
|
|
|
|
|
|
|
|
|
ScrollController _scrollController;
|
|
|
|
ScrollController _scrollController;
|
|
|
|
|
|
|
|
Map freeSlotMap;
|
|
|
|
var language;
|
|
|
|
var language;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
@ -107,6 +108,24 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
void _onVisibleDaysChanged(
|
|
|
|
void _onVisibleDaysChanged(
|
|
|
|
DateTime first, DateTime last, CalendarFormat format) {
|
|
|
|
DateTime first, DateTime last, CalendarFormat format) {
|
|
|
|
print('CALLBACK: _onVisibleDaysChanged');
|
|
|
|
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(
|
|
|
|
void _onCalendarCreated(
|
|
|
@ -256,9 +275,11 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
DateTime dateStartObj = new DateTime(
|
|
|
|
DateTime dateStartObj = new DateTime(
|
|
|
|
dateStart.year, dateStart.month, dateStart.day, 0, 0, 0, 0, 0);
|
|
|
|
dateStart.year, dateStart.month, dateStart.day, 0, 0, 0, 0, 0);
|
|
|
|
|
|
|
|
|
|
|
|
freeSlots.forEach((v) {
|
|
|
|
//freeSlots.forEach((v) {
|
|
|
|
if (v.start == dateStartObj) dayEvents.add(v);
|
|
|
|
for (var x = 0; x < freeSlots.length; x++) {
|
|
|
|
});
|
|
|
|
if (freeSlots[x].start == dateStartObj) dayEvents.add(freeSlots[x]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//});
|
|
|
|
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
if (dayEvents.length != 0)
|
|
|
|
if (dayEvents.length != 0)
|
|
|
@ -281,6 +302,7 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
DateTime date;
|
|
|
|
DateTime date;
|
|
|
|
final DateFormat formatter = DateFormat('HH:mm');
|
|
|
|
final DateFormat formatter = DateFormat('HH:mm');
|
|
|
|
final DateFormat dateFormatter = DateFormat('yyyy-MM-dd');
|
|
|
|
final DateFormat dateFormatter = DateFormat('yyyy-MM-dd');
|
|
|
|
|
|
|
|
docFreeSlots = [];
|
|
|
|
for (var i = 0; i < freeSlotsResponse.length; i++) {
|
|
|
|
for (var i = 0; i < freeSlotsResponse.length; i++) {
|
|
|
|
date = DateUtil.convertStringToDate(freeSlotsResponse[i]);
|
|
|
|
date = DateUtil.convertStringToDate(freeSlotsResponse[i]);
|
|
|
|
slotsList.add(FreeSlot(date, ['slot']));
|
|
|
|
slotsList.add(FreeSlot(date, ['slot']));
|
|
|
@ -348,9 +370,8 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
if (res['MessageStatus'] == 1) {
|
|
|
|
if (res['MessageStatus'] == 1) {
|
|
|
|
if (res['FreeTimeSlots'].length != 0) {
|
|
|
|
if (res['FreeTimeSlots'].length != 0) {
|
|
|
|
DocAvailableAppointments.areAppointmentsAvailable = true;
|
|
|
|
DocAvailableAppointments.areAppointmentsAvailable = true;
|
|
|
|
freeSlotsResponse = res['FreeTimeSlots'];
|
|
|
|
|
|
|
|
print("res['FreeTimeSlots']");
|
|
|
|
filterByMonths(res['FreeTimeSlots']);
|
|
|
|
print(res['FreeTimeSlots'].length);
|
|
|
|
|
|
|
|
_getJSONSlots().then((value) {
|
|
|
|
_getJSONSlots().then((value) {
|
|
|
|
setState(() => {
|
|
|
|
setState(() => {
|
|
|
|
_events.clear(),
|
|
|
|
_events.clear(),
|
|
|
@ -442,4 +463,11 @@ class _DocAvailableAppointmentsState extends State<DocAvailableAppointments>
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
filterByMonths(freeSlots) {
|
|
|
|
|
|
|
|
freeSlotMap =
|
|
|
|
|
|
|
|
groupBy(freeSlots, (obj) => DateUtil.convertStringToDate(obj).month);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freeSlotsResponse = freeSlotMap[DateTime.now().month];
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|