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
@@ -1,3 +1,4 @@
import '../../../../../api/marianumconnect/models/mc_holiday.dart';
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc.dart';
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
import '../repository/holidays_repository.dart';
@@ -24,12 +25,12 @@ class HolidaysBloc
bool showPastHolidays() => innerState?.showPastHolidays ?? false;
bool showDisclaimerOnEntry() => innerState?.showDisclaimer ?? false;
List<Holiday>? getHolidays() =>
List<McHoliday>? getHolidays() =>
innerState?.holidays
.where(
(element) =>
showPastHolidays() ||
DateTime.parse(element.end).isAfter(DateTime.now()),
element.endDate.isAfter(DateTime.now()),
)
.toList() ??
[];
@@ -1,6 +1,8 @@
import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import '../../../../../api/marianumconnect/models/mc_holiday.dart';
part 'holidays_state.freezed.dart';
part 'holidays_state.g.dart';
@@ -9,24 +11,9 @@ abstract class HolidaysState with _$HolidaysState {
const factory HolidaysState({
required bool showPastHolidays,
required bool showDisclaimer,
required List<Holiday> holidays,
required List<McHoliday> holidays,
}) = _HolidaysState;
factory HolidaysState.fromJson(Map<String, Object?> json) =>
_$HolidaysStateFromJson(json);
}
@freezed
abstract class Holiday with _$Holiday {
const factory Holiday({
required String start,
required String end,
required int year,
required String stateCode,
required String name,
required String slug,
}) = _Holiday;
factory Holiday.fromJson(Map<String, Object?> json) =>
_$HolidayFromJson(json);
}
@@ -15,7 +15,7 @@ T _$identity<T>(T value) => value;
/// @nodoc
mixin _$HolidaysState implements DiagnosticableTreeMixin {
bool get showPastHolidays; bool get showDisclaimer; List<Holiday> get holidays;
bool get showPastHolidays; bool get showDisclaimer; List<McHoliday> get holidays;
/// Create a copy of HolidaysState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@@ -54,7 +54,7 @@ abstract mixin class $HolidaysStateCopyWith<$Res> {
factory $HolidaysStateCopyWith(HolidaysState value, $Res Function(HolidaysState) _then) = _$HolidaysStateCopyWithImpl;
@useResult
$Res call({
bool showPastHolidays, bool showDisclaimer, List<Holiday> holidays
bool showPastHolidays, bool showDisclaimer, List<McHoliday> holidays
});
@@ -76,7 +76,7 @@ class _$HolidaysStateCopyWithImpl<$Res>
showPastHolidays: null == showPastHolidays ? _self.showPastHolidays : showPastHolidays // ignore: cast_nullable_to_non_nullable
as bool,showDisclaimer: null == showDisclaimer ? _self.showDisclaimer : showDisclaimer // ignore: cast_nullable_to_non_nullable
as bool,holidays: null == holidays ? _self.holidays : holidays // ignore: cast_nullable_to_non_nullable
as List<Holiday>,
as List<McHoliday>,
));
}
@@ -161,7 +161,7 @@ return $default(_that);case _:
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool showPastHolidays, bool showDisclaimer, List<Holiday> holidays)? $default,{required TResult orElse(),}) {final _that = this;
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool showPastHolidays, bool showDisclaimer, List<McHoliday> holidays)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _HolidaysState() when $default != null:
return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case _:
@@ -182,7 +182,7 @@ return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool showPastHolidays, bool showDisclaimer, List<Holiday> holidays) $default,) {final _that = this;
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool showPastHolidays, bool showDisclaimer, List<McHoliday> holidays) $default,) {final _that = this;
switch (_that) {
case _HolidaysState():
return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case _:
@@ -202,7 +202,7 @@ return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool showPastHolidays, bool showDisclaimer, List<Holiday> holidays)? $default,) {final _that = this;
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool showPastHolidays, bool showDisclaimer, List<McHoliday> holidays)? $default,) {final _that = this;
switch (_that) {
case _HolidaysState() when $default != null:
return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case _:
@@ -217,13 +217,13 @@ return $default(_that.showPastHolidays,_that.showDisclaimer,_that.holidays);case
@JsonSerializable()
class _HolidaysState with DiagnosticableTreeMixin implements HolidaysState {
const _HolidaysState({required this.showPastHolidays, required this.showDisclaimer, required final List<Holiday> holidays}): _holidays = holidays;
const _HolidaysState({required this.showPastHolidays, required this.showDisclaimer, required final List<McHoliday> holidays}): _holidays = holidays;
factory _HolidaysState.fromJson(Map<String, dynamic> json) => _$HolidaysStateFromJson(json);
@override final bool showPastHolidays;
@override final bool showDisclaimer;
final List<Holiday> _holidays;
@override List<Holiday> get holidays {
final List<McHoliday> _holidays;
@override List<McHoliday> get holidays {
if (_holidays is EqualUnmodifiableListView) return _holidays;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_holidays);
@@ -269,7 +269,7 @@ abstract mixin class _$HolidaysStateCopyWith<$Res> implements $HolidaysStateCopy
factory _$HolidaysStateCopyWith(_HolidaysState value, $Res Function(_HolidaysState) _then) = __$HolidaysStateCopyWithImpl;
@override @useResult
$Res call({
bool showPastHolidays, bool showDisclaimer, List<Holiday> holidays
bool showPastHolidays, bool showDisclaimer, List<McHoliday> holidays
});
@@ -291,297 +291,7 @@ class __$HolidaysStateCopyWithImpl<$Res>
showPastHolidays: null == showPastHolidays ? _self.showPastHolidays : showPastHolidays // ignore: cast_nullable_to_non_nullable
as bool,showDisclaimer: null == showDisclaimer ? _self.showDisclaimer : showDisclaimer // ignore: cast_nullable_to_non_nullable
as bool,holidays: null == holidays ? _self._holidays : holidays // ignore: cast_nullable_to_non_nullable
as List<Holiday>,
));
}
}
/// @nodoc
mixin _$Holiday implements DiagnosticableTreeMixin {
String get start; String get end; int get year; String get stateCode; String get name; String get slug;
/// Create a copy of Holiday
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$HolidayCopyWith<Holiday> get copyWith => _$HolidayCopyWithImpl<Holiday>(this as Holiday, _$identity);
/// Serializes this Holiday to a JSON map.
Map<String, dynamic> toJson();
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
properties
..add(DiagnosticsProperty('type', 'Holiday'))
..add(DiagnosticsProperty('start', start))..add(DiagnosticsProperty('end', end))..add(DiagnosticsProperty('year', year))..add(DiagnosticsProperty('stateCode', stateCode))..add(DiagnosticsProperty('name', name))..add(DiagnosticsProperty('slug', slug));
}
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is Holiday&&(identical(other.start, start) || other.start == start)&&(identical(other.end, end) || other.end == end)&&(identical(other.year, year) || other.year == year)&&(identical(other.stateCode, stateCode) || other.stateCode == stateCode)&&(identical(other.name, name) || other.name == name)&&(identical(other.slug, slug) || other.slug == slug));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType,start,end,year,stateCode,name,slug);
@override
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) {
return 'Holiday(start: $start, end: $end, year: $year, stateCode: $stateCode, name: $name, slug: $slug)';
}
}
/// @nodoc
abstract mixin class $HolidayCopyWith<$Res> {
factory $HolidayCopyWith(Holiday value, $Res Function(Holiday) _then) = _$HolidayCopyWithImpl;
@useResult
$Res call({
String start, String end, int year, String stateCode, String name, String slug
});
}
/// @nodoc
class _$HolidayCopyWithImpl<$Res>
implements $HolidayCopyWith<$Res> {
_$HolidayCopyWithImpl(this._self, this._then);
final Holiday _self;
final $Res Function(Holiday) _then;
/// Create a copy of Holiday
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? start = null,Object? end = null,Object? year = null,Object? stateCode = null,Object? name = null,Object? slug = null,}) {
return _then(_self.copyWith(
start: null == start ? _self.start : start // ignore: cast_nullable_to_non_nullable
as String,end: null == end ? _self.end : end // ignore: cast_nullable_to_non_nullable
as String,year: null == year ? _self.year : year // ignore: cast_nullable_to_non_nullable
as int,stateCode: null == stateCode ? _self.stateCode : stateCode // ignore: cast_nullable_to_non_nullable
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// Adds pattern-matching-related methods to [Holiday].
extension HolidayPatterns on Holiday {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _Holiday value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _Holiday() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _Holiday value) $default,){
final _that = this;
switch (_that) {
case _Holiday():
return $default(_that);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _Holiday value)? $default,){
final _that = this;
switch (_that) {
case _Holiday() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String start, String end, int year, String stateCode, String name, String slug)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _Holiday() when $default != null:
return $default(_that.start,_that.end,_that.year,_that.stateCode,_that.name,_that.slug);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String start, String end, int year, String stateCode, String name, String slug) $default,) {final _that = this;
switch (_that) {
case _Holiday():
return $default(_that.start,_that.end,_that.year,_that.stateCode,_that.name,_that.slug);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String start, String end, int year, String stateCode, String name, String slug)? $default,) {final _that = this;
switch (_that) {
case _Holiday() when $default != null:
return $default(_that.start,_that.end,_that.year,_that.stateCode,_that.name,_that.slug);case _:
return null;
}
}
}
/// @nodoc
@JsonSerializable()
class _Holiday with DiagnosticableTreeMixin implements Holiday {
const _Holiday({required this.start, required this.end, required this.year, required this.stateCode, required this.name, required this.slug});
factory _Holiday.fromJson(Map<String, dynamic> json) => _$HolidayFromJson(json);
@override final String start;
@override final String end;
@override final int year;
@override final String stateCode;
@override final String name;
@override final String slug;
/// Create a copy of Holiday
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$HolidayCopyWith<_Holiday> get copyWith => __$HolidayCopyWithImpl<_Holiday>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$HolidayToJson(this, );
}
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
properties
..add(DiagnosticsProperty('type', 'Holiday'))
..add(DiagnosticsProperty('start', start))..add(DiagnosticsProperty('end', end))..add(DiagnosticsProperty('year', year))..add(DiagnosticsProperty('stateCode', stateCode))..add(DiagnosticsProperty('name', name))..add(DiagnosticsProperty('slug', slug));
}
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Holiday&&(identical(other.start, start) || other.start == start)&&(identical(other.end, end) || other.end == end)&&(identical(other.year, year) || other.year == year)&&(identical(other.stateCode, stateCode) || other.stateCode == stateCode)&&(identical(other.name, name) || other.name == name)&&(identical(other.slug, slug) || other.slug == slug));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType,start,end,year,stateCode,name,slug);
@override
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) {
return 'Holiday(start: $start, end: $end, year: $year, stateCode: $stateCode, name: $name, slug: $slug)';
}
}
/// @nodoc
abstract mixin class _$HolidayCopyWith<$Res> implements $HolidayCopyWith<$Res> {
factory _$HolidayCopyWith(_Holiday value, $Res Function(_Holiday) _then) = __$HolidayCopyWithImpl;
@override @useResult
$Res call({
String start, String end, int year, String stateCode, String name, String slug
});
}
/// @nodoc
class __$HolidayCopyWithImpl<$Res>
implements _$HolidayCopyWith<$Res> {
__$HolidayCopyWithImpl(this._self, this._then);
final _Holiday _self;
final $Res Function(_Holiday) _then;
/// Create a copy of Holiday
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? start = null,Object? end = null,Object? year = null,Object? stateCode = null,Object? name = null,Object? slug = null,}) {
return _then(_Holiday(
start: null == start ? _self.start : start // ignore: cast_nullable_to_non_nullable
as String,end: null == end ? _self.end : end // ignore: cast_nullable_to_non_nullable
as String,year: null == year ? _self.year : year // ignore: cast_nullable_to_non_nullable
as int,stateCode: null == stateCode ? _self.stateCode : stateCode // ignore: cast_nullable_to_non_nullable
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
as String,
as List<McHoliday>,
));
}
@@ -11,7 +11,7 @@ _HolidaysState _$HolidaysStateFromJson(Map<String, dynamic> json) =>
showPastHolidays: json['showPastHolidays'] as bool,
showDisclaimer: json['showDisclaimer'] as bool,
holidays: (json['holidays'] as List<dynamic>)
.map((e) => Holiday.fromJson(e as Map<String, dynamic>))
.map((e) => McHoliday.fromJson(e as Map<String, dynamic>))
.toList(),
);
@@ -21,21 +21,3 @@ Map<String, dynamic> _$HolidaysStateToJson(_HolidaysState instance) =>
'showDisclaimer': instance.showDisclaimer,
'holidays': instance.holidays,
};
_Holiday _$HolidayFromJson(Map<String, dynamic> json) => _Holiday(
start: json['start'] as String,
end: json['end'] as String,
year: (json['year'] as num).toInt(),
stateCode: json['stateCode'] as String,
name: json['name'] as String,
slug: json['slug'] as String,
);
Map<String, dynamic> _$HolidayToJson(_Holiday instance) => <String, dynamic>{
'start': instance.start,
'end': instance.end,
'year': instance.year,
'stateCode': instance.stateCode,
'name': instance.name,
'slug': instance.slug,
};
@@ -1,14 +0,0 @@
import 'package:dio/dio.dart';
import '../../../basis/dataloader/holiday_data_loader.dart';
import '../../../infrastructure/data_loader/data_loader.dart';
import '../bloc/holidays_state.dart';
class HolidaysGetHolidays extends HolidayDataLoader<List<Holiday>> {
@override
List<Holiday> assemble(DataLoaderResult data) =>
data.asListOfMaps().map(Holiday.fromJson).toList();
@override
Future<Response<String>> fetch() => dio.get('/holidays/HE');
}
@@ -1,7 +1,8 @@
import '../../../../../api/marianumconnect/models/mc_holiday.dart';
import '../../../../../api/marianumconnect/queries/get_holidays/get_holidays.dart';
import '../../../infrastructure/repository/repository.dart';
import '../bloc/holidays_state.dart';
import '../data_provider/holidays_get_holidays.dart';
class HolidaysRepository extends Repository<HolidaysState> {
Future<List<Holiday>> getHolidays() => HolidaysGetHolidays().run();
Future<List<McHoliday>> getHolidays() => GetHolidays().run();
}