Kaynağa Gözat

all dutytype

fares 9 ay önce
ebeveyn
işleme
7f5f997f6f
2 değiştirilmiş dosya ile 112 ekleme ve 15 silme
  1. 83 0
      lib/calendar_handler.dart
  2. 29 15
      lib/icalendar.dart

+ 83 - 0
lib/calendar_handler.dart

@@ -118,10 +118,93 @@ $crewlistdisplay
             );
             break;
           case "dhflight":
+            ical.addEvent(
+              summary: "DH ${pnleg.dep}-${pnleg.arr}",
+              description: """
+DH Flight from ${pnleg.dep} to ${pnleg.arr}
+Flight number: ${pnleg.al}${pnleg.fnum}
+Aircraft type: ${pnleg.actype}
+
+Departure time: ${pnleg.jdep?.Hm}
+Arrival time: ${pnleg.jarr?.Hm}
+
+Crew: 
+$crewlistdisplay
+"""
+                  .replaceAll("\n", "\\n"),
+              startTime: pnleg.jdep!.dateTime,
+              endTime: pnleg.jarr!.dateTime,
+              attendees: event['crew'],
+            );
+            break;
           case "dhlimo":
+            ical.addEvent(
+              summary: "${pnleg.dep}-${pnleg.arr}",
+              description: """
+DH Limo from ${pnleg.dep} to ${pnleg.arr}
+
+Departure time: ${pnleg.jdep?.Hm}
+Arrival time: ${pnleg.jarr?.Hm}
+
+Crew: 
+$crewlistdisplay
+"""
+                  .replaceAll("\n", "\\n"),
+              startTime: pnleg.jdep!.dateTime,
+              endTime: pnleg.jarr!.dateTime,
+              attendees: event['crew'],
+            );
+            break;
           case "standby":
+            ical.addEvent(
+              summary: "STDBY ${pnleg.label}",
+              description: """
+Stand By ${pnleg.label} at ${pnleg.dep}
+
+Start time: ${pnleg.jdep?.Hm}
+End time: ${pnleg.jarr?.Hm}
+"""
+                  .replaceAll("\n", "\\n"),
+              startTime: pnleg.jdep!.dateTime,
+              endTime: pnleg.jarr!.dateTime,
+              attendees: event['crew'],
+            );
+            break;
           case "ground":
+            ical.addEvent(
+              summary: "${pnleg.label}",
+              description: """
+${pnleg.label} at ${pnleg.dep}
+
+Start time: ${pnleg.jdep?.Hm}
+End time: ${pnleg.jarr?.Hm}
+
+Attendee: 
+$crewlistdisplay
+
+"""
+                  .replaceAll("\n", "\\n"),
+              startTime: pnleg.jdep!.dateTime,
+              endTime: pnleg.jarr!.dateTime,
+              attendees: event['crew'],
+            );
+            break;
           case "day":
+            ical.addEvent(
+                summary: "${pnleg.label}",
+                description: """
+${pnleg.label} at ${pnleg.dep}
+
+Attendee: 
+$crewlistdisplay
+
+"""
+                    .replaceAll("\n", "\\n"),
+                startTime: pnleg.jdep!.dateTime,
+                endTime: pnleg.jarr!.dateTime,
+                attendees: event['crew'],
+                allday: true);
+            break;
           default:
         }
       }

+ 29 - 15
lib/icalendar.dart

@@ -1,21 +1,21 @@
 class ICalendar {
   final List<ICalendarEvent> _events = [];
 
-  void addEvent({
-    required String summary,
-    required String description,
-    required DateTime startTime,
-    required DateTime endTime,
-    required List<dynamic> attendees,
-  }) {
+  void addEvent(
+      {required String summary,
+      required String description,
+      required DateTime startTime,
+      required DateTime endTime,
+      required List<dynamic> attendees,
+      bool allday = false}) {
     _events.add(
       ICalendarEvent(
-        summary: summary,
-        description: description,
-        startTime: startTime,
-        endTime: endTime,
-        attendees: attendees,
-      ),
+          summary: summary,
+          description: description,
+          startTime: startTime,
+          endTime: endTime,
+          attendees: attendees,
+          allday: allday),
     );
   }
 
@@ -31,8 +31,10 @@ class ICalendar {
       buffer.writeln(
           'UID:${DateTime.now().millisecondsSinceEpoch}-${event.hashCode}');
       buffer.writeln('DTSTAMP:${_formatDateTime(dtstamp)}');
-      buffer.writeln('DTSTART:${_formatDateTime(event.startTime)}');
-      buffer.writeln('DTEND:${_formatDateTime(event.endTime)}');
+      buffer.writeln(
+          'DTSTART:${event.allday ? _formatDate(event.startTime) : _formatDateTime(event.startTime)}');
+      buffer.writeln(
+          'DTEND:${event.allday ? _formatDate(event.startTime.add(Duration(days: 1))) : _formatDateTime(event.endTime)}');
       buffer.writeln('SUMMARY:${event.summary}');
       buffer.writeln('DESCRIPTION:${event.description}');
 
@@ -51,6 +53,16 @@ class ICalendar {
   String _formatDateTime(DateTime dt) {
     return '${dt.toUtc().toString().replaceAll('-', '').replaceAll(':', '').replaceAll(' ', 'T').split('.')[0]}Z';
   }
+
+  String _formatDate(DateTime dateTime) {
+    // Extract year, month, and day from the DateTime object
+    String year = dateTime.year.toString().padLeft(4, '0');
+    String month = dateTime.month.toString().padLeft(2, '0');
+    String day = dateTime.day.toString().padLeft(2, '0');
+
+    // Combine into the YYYYMMDD format
+    return '$year$month$day';
+  }
 }
 
 class ICalendarEvent {
@@ -59,6 +71,7 @@ class ICalendarEvent {
   final DateTime startTime;
   final DateTime endTime;
   final List<dynamic> attendees;
+  final bool allday;
 
   ICalendarEvent({
     required this.summary,
@@ -66,5 +79,6 @@ class ICalendarEvent {
     required this.startTime,
     required this.endTime,
     required this.attendees,
+    this.allday = false,
   });
 }