mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Display Forez presence
This commit is contained in:
30
lib/lists/base_set.dart
Normal file
30
lib/lists/base_set.dart
Normal file
@ -0,0 +1,30 @@
|
||||
import 'dart:collection';
|
||||
|
||||
/// Base set
|
||||
///
|
||||
/// @author pierre Hubert
|
||||
|
||||
class BaseSet<T> extends SetBase<T> {
|
||||
final _set = new Set<T>();
|
||||
|
||||
@override
|
||||
bool add(T value) => _set.add(value);
|
||||
|
||||
@override
|
||||
bool contains(Object element) => _set.contains(element);
|
||||
|
||||
@override
|
||||
Iterator<T> get iterator => _set.iterator;
|
||||
|
||||
@override
|
||||
int get length => _set.length;
|
||||
|
||||
@override
|
||||
T lookup(Object element) => _set.lookup(element);
|
||||
|
||||
@override
|
||||
bool remove(Object value) => _set.remove(value);
|
||||
|
||||
@override
|
||||
Set<T> toSet() => _set.toSet();
|
||||
}
|
51
lib/lists/forez_presences_set.dart
Normal file
51
lib/lists/forez_presences_set.dart
Normal file
@ -0,0 +1,51 @@
|
||||
import 'package:comunic/lists/base_set.dart';
|
||||
import 'package:comunic/models/forez_presence.dart';
|
||||
|
||||
/// Forez presence set
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
class PresenceSet extends BaseSet<Presence> {
|
||||
/// Get the presence of a specific user
|
||||
PresenceSet getForUser(int userID) =>
|
||||
PresenceSet()..addAll(where((element) => element.userID == userID));
|
||||
|
||||
bool containsDate(DateTime dt) => any(
|
||||
(element) =>
|
||||
element.year == dt.year &&
|
||||
element.month == dt.month &&
|
||||
element.day == dt.day,
|
||||
);
|
||||
|
||||
void removeDate(DateTime dt) => removeWhere(
|
||||
(element) =>
|
||||
element.year == dt.year &&
|
||||
element.month == dt.month &&
|
||||
element.day == dt.day,
|
||||
);
|
||||
|
||||
void toggleDate(DateTime dt, int userID) {
|
||||
if (containsDate(dt))
|
||||
removeDate(dt);
|
||||
else
|
||||
add(Presence.fromDateTime(dt, userID));
|
||||
}
|
||||
|
||||
int countAtDate(DateTime dt) => where(
|
||||
(element) =>
|
||||
element.year == dt.year &&
|
||||
element.month == dt.month &&
|
||||
element.day == dt.day,
|
||||
).length;
|
||||
|
||||
/// Get the list of users present at a specified date
|
||||
List<int> getUsersAtDate(DateTime dt) => where(
|
||||
(element) =>
|
||||
element.year == dt.year &&
|
||||
element.month == dt.month &&
|
||||
element.day == dt.day,
|
||||
).map((e) => e.userID).toList();
|
||||
|
||||
/// Get the ID of all the users referenced in this set
|
||||
Set<int> get usersID => map((element) => element.userID).toSet();
|
||||
}
|
Reference in New Issue
Block a user