migrated holidays module to MarianumConnect API, replaced local Holiday model.

This commit is contained in:
2026-05-24 17:49:25 +02:00
parent 93b9929f8f
commit 01b4b44010
15 changed files with 161 additions and 456 deletions
@@ -0,0 +1,25 @@
import 'package:dio/dio.dart';
import '../../errors/marianumconnect_error.dart';
import '../../marianumconnect_api.dart';
import '../../marianumconnect_endpoint.dart';
import '../../models/mc_holiday.dart';
class GetHolidays {
final Dio _dio;
GetHolidays({Dio? dio}) : _dio = dio ?? MarianumConnectApi.dio();
Future<List<McHoliday>> run() async {
try {
final response = await _dio.get<List<dynamic>>(
MarianumConnectEndpoint.resolve('holidays'),
);
return response.data!
.map((e) => McHoliday.fromJson(e as Map<String, dynamic>))
.toList();
} on DioException catch (e) {
throw mapMarianumConnectError(e);
}
}
}
@@ -1,36 +1,12 @@
import 'package:json_annotation/json_annotation.dart';
import '../../../api_response.dart';
import '../../models/mc_holiday.dart';
export '../../models/mc_holiday.dart';
part 'timetable_get_holidays_response.g.dart';
@JsonSerializable(explicitToJson: true)
class McHoliday {
final String shortName;
final String longName;
@JsonKey(fromJson: _dateFromJson, toJson: _dateToJson)
final DateTime startDate;
@JsonKey(fromJson: _dateFromJson, toJson: _dateToJson)
final DateTime endDate;
McHoliday({
required this.shortName,
required this.longName,
required this.startDate,
required this.endDate,
});
factory McHoliday.fromJson(Map<String, dynamic> json) =>
_$McHolidayFromJson(json);
Map<String, dynamic> toJson() => _$McHolidayToJson(this);
static DateTime _dateFromJson(String raw) => DateTime.parse(raw);
static String _dateToJson(DateTime d) =>
'${d.year.toString().padLeft(4, '0')}-${d.month.toString().padLeft(2, '0')}-${d.day.toString().padLeft(2, '0')}';
}
@JsonSerializable(explicitToJson: true)
class TimetableGetHolidaysResponse extends ApiResponse {
final List<McHoliday> result;
@@ -6,20 +6,6 @@ part of 'timetable_get_holidays_response.dart';
// JsonSerializableGenerator
// **************************************************************************
McHoliday _$McHolidayFromJson(Map<String, dynamic> json) => McHoliday(
shortName: json['shortName'] as String,
longName: json['longName'] as String,
startDate: McHoliday._dateFromJson(json['startDate'] as String),
endDate: McHoliday._dateFromJson(json['endDate'] as String),
);
Map<String, dynamic> _$McHolidayToJson(McHoliday instance) => <String, dynamic>{
'shortName': instance.shortName,
'longName': instance.longName,
'startDate': McHoliday._dateToJson(instance.startDate),
'endDate': McHoliday._dateToJson(instance.endDate),
};
TimetableGetHolidaysResponse _$TimetableGetHolidaysResponseFromJson(
Map<String, dynamic> json,
) =>