calender reminder added
parent
9ca0a985a3
commit
fc0f98da1d
File diff suppressed because one or more lines are too long
@ -0,0 +1,94 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:device_calendar_plus/device_calendar_plus.dart';
|
||||
import 'package:jiffy/jiffy.dart' show Jiffy;
|
||||
|
||||
class CalenderUtilsNew {
|
||||
final DeviceCalendar calender = DeviceCalendar.instance;
|
||||
List<Calendar> writableCalender = [];
|
||||
|
||||
CalenderUtilsNew._instance() {
|
||||
getCalenders();
|
||||
}
|
||||
|
||||
static final CalenderUtilsNew instance = CalenderUtilsNew._instance();
|
||||
|
||||
Future<void> getCalenders() async {
|
||||
CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions();
|
||||
if(result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions();
|
||||
var calenders = await calender.listCalendars();
|
||||
calenders.forEach((calender) {
|
||||
if (!calender.readOnly) {
|
||||
writableCalender.add(calender);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
FutureOr<bool> createOrUpdateEvent({required String title, required String description, required String location, DateTime? scheduleDateTime, String? eventId, int? reminderMinutes}) async {
|
||||
print("the reminder minutes are $reminderMinutes");
|
||||
if (writableCalender.isEmpty) {
|
||||
await getCalenders();
|
||||
}
|
||||
var writableCalendars = writableCalender.first;
|
||||
|
||||
print("writableCalendars-name: " + writableCalendars.name);
|
||||
print("writableCalendars-Id: " + writableCalendars.id);
|
||||
print("writableCalendarsToString: " + writableCalendars.toString());
|
||||
print("writableCalendarsToString: " + writableCalendars!.id!);
|
||||
|
||||
CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions();
|
||||
if(result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions();
|
||||
print(result);
|
||||
String eventResult = await DeviceCalendar.instance.createEvent(
|
||||
calendarId: writableCalendars!.id,
|
||||
title: title,
|
||||
description: description,
|
||||
startDate: scheduleDateTime!,
|
||||
endDate: scheduleDateTime!.add(Duration(minutes: 30)),
|
||||
reminderMinutes: reminderMinutes
|
||||
);
|
||||
|
||||
print("the event Result is ${eventResult}");
|
||||
return eventResult.isNotEmpty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
FutureOr<List<Event>> getEvents() async {
|
||||
var availableCalender = writableCalender.first;
|
||||
DateTime startEventsDate = Jiffy.parseFromDateTime(DateTime.now()).subtract(days: 30).dateTime;
|
||||
DateTime endEventsDate = Jiffy.parseFromDateTime(DateTime.now()).add(days: 120).dateTime;
|
||||
return await calender.listEvents(startEventsDate, endEventsDate, calendarIds: [availableCalender.id]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
FutureOr<bool> checkIfEventExist(String admissionId) async {
|
||||
if(writableCalender.isEmpty)return false;
|
||||
List<Event> events = await getEvents();
|
||||
if(events.isEmpty) return false;
|
||||
for(var event in events){
|
||||
List<String> title = event.title!.split("#");
|
||||
print("the splitted admission id is ${title}");
|
||||
if(title.contains(admissionId)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
FutureOr<bool> checkAndRemove({required String id}) async {
|
||||
if(writableCalender.isEmpty)return false;
|
||||
List<Event> events = await getEvents();
|
||||
if(events.isEmpty) return false;
|
||||
for(var event in events){
|
||||
List<String> title = event.title!.split("#");
|
||||
print("the splitted admission id is ${title}");
|
||||
if(title.contains(id)) {
|
||||
calender.deleteEvent(eventId: event.eventId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue