Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions lib/phonebook/class/association.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ class Association {
required this.id,
required this.name,
required this.description,
required this.kind,
required this.groupementId,
required this.mandateYear,
required this.deactivated,
required this.associatedGroups,
Expand All @@ -12,7 +12,7 @@ class Association {
late final String id;
late final String name;
late final String description;
late final String kind;
late final String groupementId;
late final int mandateYear;
late final bool deactivated;
late final List<String> associatedGroups;
Expand All @@ -21,7 +21,7 @@ class Association {
id = json['id'];
name = json['name'];
description = json['description'];
kind = json['kind'];
groupementId = json['groupement_id'];
mandateYear = json['mandate_year'];
deactivated = json['deactivated'];
associatedGroups = List<String>.from(json['associated_groups']);
Expand All @@ -32,7 +32,7 @@ class Association {
'id': id,
'name': name,
'description': description,
'kind': kind,
'groupement_id': groupementId,
'mandate_year': mandateYear,
'deactivated': deactivated,
'associated_groups': associatedGroups,
Expand All @@ -44,7 +44,7 @@ class Association {
String? id,
String? name,
String? description,
String? kind,
String? groupementId,
int? mandateYear,
bool? deactivated,
List<String>? associatedGroups,
Expand All @@ -53,7 +53,7 @@ class Association {
id: id ?? this.id,
name: name ?? this.name,
description: description ?? this.description,
kind: kind ?? this.kind,
groupementId: groupementId ?? this.groupementId,
mandateYear: mandateYear ?? this.mandateYear,
deactivated: deactivated ?? this.deactivated,
associatedGroups: associatedGroups ?? this.associatedGroups,
Expand All @@ -64,7 +64,7 @@ class Association {
id = "";
name = "";
description = "";
kind = "";
groupementId = "";
mandateYear = 0;
deactivated = false;
associatedGroups = [];
Expand All @@ -76,6 +76,6 @@ class Association {

@override
String toString() {
return "Association(Nom : $name, id : $id, description : $description, kind : $kind, mandate_year : $mandateYear, deactivated : $deactivated, associated_groups : $associatedGroups)";
return "Association(Nom : $name, id : $id, description : $description, groupement_id : $groupementId, mandate_year : $mandateYear, deactivated : $deactivated, associated_groups : $associatedGroups)";
}
}
26 changes: 26 additions & 0 deletions lib/phonebook/class/association_groupement.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
class AssociationGroupement {
AssociationGroupement({required this.id, required this.name});

late final String id;
late final String name;

AssociationGroupement.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}

Map<String, dynamic> toJson() {
final data = <String, dynamic>{'id': id, 'name': name};
return data;
}

AssociationGroupement.empty() {
id = "";
name = "";
}

@override
String toString() {
return 'AssociationGroupement(kinds: $id, name: $name)';
}
}
23 changes: 0 additions & 23 deletions lib/phonebook/class/association_kinds.dart

This file was deleted.

17 changes: 10 additions & 7 deletions lib/phonebook/providers/association_filtered_list_provider.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/phonebook/class/association.dart';
import 'package:titan/phonebook/providers/association_kind_provider.dart';
import 'package:titan/phonebook/providers/association_kinds_provider.dart';
import 'package:titan/phonebook/providers/association_groupement_provider.dart';
import 'package:titan/phonebook/providers/association_groupement_list_provider.dart';
import 'package:titan/phonebook/providers/association_list_provider.dart';
import 'package:titan/phonebook/providers/research_filter_provider.dart';
import 'package:titan/phonebook/tools/function.dart';
import 'package:diacritic/diacritic.dart';

final associationFilteredListProvider = Provider<List<Association>>((ref) {
final associationsProvider = ref.watch(associationListProvider);
final associationKinds = ref.watch(associationKindsProvider);
final kindFilter = ref.watch(associationKindProvider);
final associationGroupements = ref.watch(associationGroupementListProvider);
final associationGroupement = ref.watch(associationGroupementProvider);
final searchFilter = ref.watch(filterProvider);
return associationsProvider.maybeWhen(
data: (associations) {
Expand All @@ -21,12 +21,15 @@ final associationFilteredListProvider = Provider<List<Association>>((ref) {
).contains(removeDiacritics(searchFilter.toLowerCase())),
)
.toList();
if (kindFilter != "") {
if (associationGroupement.id != "") {
filteredAssociations = filteredAssociations
.where((association) => association.kind == kindFilter)
.where(
(association) =>
association.groupementId == associationGroupement.id,
)
.toList();
}
return associationKinds.maybeWhen(
return associationGroupements.maybeWhen(
data: (kinds) => sortedAssociationByKind(filteredAssociations, kinds),
orElse: () => filteredAssociations,
);
Expand Down
37 changes: 37 additions & 0 deletions lib/phonebook/providers/association_groupement_list_provider.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/auth/providers/openid_provider.dart';
import 'package:titan/phonebook/class/association_groupement.dart';
import 'package:titan/phonebook/repositories/association_groupement_repository.dart';
import 'package:titan/tools/providers/list_notifier.dart';
import 'package:titan/tools/token_expire_wrapper.dart';

class AssociationGroupementListNotifier
extends ListNotifier<AssociationGroupement> {
final AssociationGroupementRepository associationGroupementRepository =
AssociationGroupementRepository();
AssociationGroupementListNotifier({required String token})
: super(const AsyncValue.loading()) {
associationGroupementRepository.setToken(token);
}

Future<AsyncValue<List<AssociationGroupement>>>
loadAssociationGroupement() async {
return await loadList(
associationGroupementRepository.getAssociationGroupements,
);
}
}

final associationGroupementListProvider =
StateNotifierProvider<
AssociationGroupementListNotifier,
AsyncValue<List<AssociationGroupement>>
>((ref) {
final token = ref.watch(tokenProvider);
AssociationGroupementListNotifier notifier =
AssociationGroupementListNotifier(token: token);
tokenExpireWrapperAuth(ref, () async {
await notifier.loadAssociationGroupement();
});
return notifier;
});
22 changes: 22 additions & 0 deletions lib/phonebook/providers/association_groupement_provider.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/phonebook/class/association_groupement.dart';

final associationGroupementProvider =
StateNotifierProvider<AssociationGroupementNotifier, AssociationGroupement>(
(ref) {
return AssociationGroupementNotifier();
},
);

class AssociationGroupementNotifier
extends StateNotifier<AssociationGroupement> {
AssociationGroupementNotifier() : super(AssociationGroupement.empty());

void setAssociationGroupement(AssociationGroupement i) {
state = i;
}

void resetAssociationGroupement() {
state = AssociationGroupement.empty();
}
}
14 changes: 0 additions & 14 deletions lib/phonebook/providers/association_kind_provider.dart

This file was deleted.

37 changes: 0 additions & 37 deletions lib/phonebook/providers/association_kinds_provider.dart

This file was deleted.

39 changes: 39 additions & 0 deletions lib/phonebook/repositories/association_groupement_repository.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import 'package:titan/phonebook/class/association_groupement.dart';
import 'package:titan/tools/repository/repository.dart';

class AssociationGroupementRepository extends Repository {
@override
// ignore: overridden_fields
final ext = "phonebook/groupements/";

Future<List<AssociationGroupement>> getAssociationGroupements() async {
return List<AssociationGroupement>.from(
(await getList()).map((x) => AssociationGroupement.fromJson(x)),
);
}

Future<AssociationGroupement> getAssociationGroupementById(String id) async {
return AssociationGroupement.fromJson(await getOne(id));
}

Future<bool> updateAssociationGroupement(
AssociationGroupement associationGroupement,
) async {
return await update(
associationGroupement.toJson(),
associationGroupement.id,
);
}

Future<AssociationGroupement> createAssociationGroupement(
AssociationGroupement associationGroupement,
) async {
return AssociationGroupement.fromJson(
await create(associationGroupement.toJson()),
);
}

Future<bool> deleteAssociationGroupement(String id) async {
return await delete(id);
}
}
5 changes: 0 additions & 5 deletions lib/phonebook/repositories/association_repository.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:titan/phonebook/class/association.dart';
import 'package:titan/phonebook/class/association_kinds.dart';
import 'package:titan/tools/repository/repository.dart';

class AssociationRepository extends Repository {
Expand All @@ -25,10 +24,6 @@ class AssociationRepository extends Repository {
return Association.fromJson(await create(association.toJson()));
}

Future<AssociationKinds> getAssociationKinds() async {
return AssociationKinds.fromJson(await getOne("kinds"));
}

Future<bool> deactivateAssociation(Association association) async {
return await update(null, association.id, suffix: "/deactivate");
}
Expand Down
20 changes: 9 additions & 11 deletions lib/phonebook/tools/function.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:diacritic/diacritic.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:titan/phonebook/class/association.dart';
import 'package:titan/phonebook/class/association_kinds.dart';
import 'package:titan/phonebook/class/association_groupement.dart';
import 'package:titan/phonebook/class/complete_member.dart';
import 'package:titan/phonebook/class/membership.dart';
import 'package:titan/phonebook/providers/roles_tags_provider.dart';
Expand All @@ -26,25 +26,23 @@ List<CompleteMember> sortedMembers(

List<Association> sortedAssociationByKind(
List<Association> associations,
AssociationKinds kinds,
List<AssociationGroupement> groupements,
) {
List<Association> sorted = [];
List<List<Association>> sortedByKind = List.generate(
kinds.kinds.length,
(index) => [],
);
Map<String, List<Association>> sortedByGroupement = {
for (var groupement in groupements) groupement.id: [],
};
for (Association association in associations) {
sortedByKind[kinds.kinds.indexOf(association.kind)].add(association);
sortedByGroupement[association.groupementId]!.add(association);
}
for (List<Association> list in sortedByKind) {
for (List<Association> list in sortedByGroupement.values) {
list.sort(
(a, b) => removeDiacritics(
a.name,
).toLowerCase().compareTo(removeDiacritics(b.name).toLowerCase()),
);
sorted.addAll(list);
}
return sorted;
// Flatten the sorted map values into a single list
return sortedByGroupement.values.expand((list) => list).toList();
}

Color getColorFromTagList(WidgetRef ref, List<String> tags) {
Expand Down
Loading