From e54ae9c2fffdfee7a0eceaf07dce5a9df6ffd4a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Wed, 15 Feb 2023 20:41:09 +0100 Subject: [PATCH] Added getHolidays.dart webuntis method --- .../queries/getHolidays/getHolidays.dart | 17 ++++++++ .../queries/getHolidays/getHolidaysCache.dart | 21 ++++++++++ .../getHolidays/getHolidaysResponse.dart | 28 +++++++++++++ .../getHolidays/getHolidaysResponse.g.dart | 41 +++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 lib/api/webuntis/queries/getHolidays/getHolidays.dart create mode 100644 lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart create mode 100644 lib/api/webuntis/queries/getHolidays/getHolidaysResponse.dart create mode 100644 lib/api/webuntis/queries/getHolidays/getHolidaysResponse.g.dart diff --git a/lib/api/webuntis/queries/getHolidays/getHolidays.dart b/lib/api/webuntis/queries/getHolidays/getHolidays.dart new file mode 100644 index 0000000..37dabc6 --- /dev/null +++ b/lib/api/webuntis/queries/getHolidays/getHolidays.dart @@ -0,0 +1,17 @@ +import 'dart:convert'; + +import 'package:marianum_mobile/api/webuntis/apiResponse.dart'; +import 'package:marianum_mobile/api/webuntis/webuntisApi.dart'; + +import 'getHolidaysResponse.dart'; + +class GetHolidays extends WebuntisApi { + GetHolidays() : super("getHolidays", null); + + @override + Future run() async { + String rawAnswer = await query(this); + return finalize(GetHolidaysResponse.fromJson(jsonDecode(rawAnswer))); + } + +} \ No newline at end of file diff --git a/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart b/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart new file mode 100644 index 0000000..88c20a1 --- /dev/null +++ b/lib/api/webuntis/queries/getHolidays/getHolidaysCache.dart @@ -0,0 +1,21 @@ +import 'dart:convert'; + +import 'package:marianum_mobile/api/requestCache.dart'; +import 'package:marianum_mobile/api/webuntis/queries/getHolidays/getHolidays.dart'; +import 'package:marianum_mobile/api/webuntis/queries/getHolidays/getHolidaysResponse.dart'; + +class GetHolidaysCache extends RequestCache { + GetHolidaysCache({onUpdate}) : super(60 * 60, onUpdate) { + start("holidays", "data"); + } + + @override + Future onLoad() { + return GetHolidays().run(); + } + + @override + GetHolidaysResponse onLocalData(String json) { + return GetHolidaysResponse.fromJson(jsonDecode(json)); + } +} \ No newline at end of file diff --git a/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.dart b/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.dart new file mode 100644 index 0000000..a991c8f --- /dev/null +++ b/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.dart @@ -0,0 +1,28 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:marianum_mobile/api/webuntis/apiResponse.dart'; + +part 'getHolidaysResponse.g.dart'; + +@JsonSerializable(explicitToJson: true) +class GetHolidaysResponse extends ApiResponse { + Set result; + + GetHolidaysResponse(this.result); + + factory GetHolidaysResponse.fromJson(Map json) => _$GetHolidaysResponseFromJson(json); + Map toJson() => _$GetHolidaysResponseToJson(this); +} + +@JsonSerializable(explicitToJson: true) +class GetHolidaysResponseObject { + int id; + String name; + String longName; + int startDate; + int endDate; + + GetHolidaysResponseObject(this.id, this.name, this.longName, this.startDate, this.endDate); + + factory GetHolidaysResponseObject.fromJson(Map json) => _$GetHolidaysResponseObjectFromJson(json); + Map toJson() => _$GetHolidaysResponseObjectToJson(this); +} \ No newline at end of file diff --git a/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.g.dart b/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.g.dart new file mode 100644 index 0000000..c43767f --- /dev/null +++ b/lib/api/webuntis/queries/getHolidays/getHolidaysResponse.g.dart @@ -0,0 +1,41 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'getHolidaysResponse.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +GetHolidaysResponse _$GetHolidaysResponseFromJson(Map json) => + GetHolidaysResponse( + (json['result'] as List) + .map((e) => + GetHolidaysResponseObject.fromJson(e as Map)) + .toSet(), + ); + +Map _$GetHolidaysResponseToJson( + GetHolidaysResponse instance) => + { + 'result': instance.result.map((e) => e.toJson()).toList(), + }; + +GetHolidaysResponseObject _$GetHolidaysResponseObjectFromJson( + Map json) => + GetHolidaysResponseObject( + json['id'] as int, + json['name'] as String, + json['longName'] as String, + json['startDate'] as int, + json['endDate'] as int, + ); + +Map _$GetHolidaysResponseObjectToJson( + GetHolidaysResponseObject instance) => + { + 'id': instance.id, + 'name': instance.name, + 'longName': instance.longName, + 'startDate': instance.startDate, + 'endDate': instance.endDate, + };