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
31 changes: 30 additions & 1 deletion lib/admin/class/association_membership_simple.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,72 @@ class AssociationMembership {
required this.id,
required this.name,
required this.managerGroupId,
required this.templateId,
});
late final String id;
late final String name;
late final String managerGroupId;
late final String? templateId;

AssociationMembership.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
managerGroupId = json['manager_group_id'];
templateId = json['template_id'];
}

Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['id'] = id;
data['name'] = name;
data['manager_group_id'] = managerGroupId;
data['template_id'] = templateId;
return data;
}

AssociationMembership copyWith({
String? id,
String? name,
String? managerGroupId,
String? templateId,
}) => AssociationMembership(
id: id ?? this.id,
name: name ?? this.name,
managerGroupId: managerGroupId ?? this.managerGroupId,
templateId: templateId ?? this.templateId,
);

AssociationMembership.empty() {
id = '';
name = "Pas d'adhésion";
managerGroupId = '';
templateId = '';
}

@override
String toString() {
return 'AssociationMembership(id: $id, name: $name, groupId: $managerGroupId)';
return 'AssociationMembership(id: $id, name: $name, groupId: $managerGroupId, templateId: $templateId)';
}
}

class AssociationMembershipRenewDocumentsReturn {
AssociationMembershipRenewDocumentsReturn({required this.errors});
late final Map<String, String> errors;

AssociationMembershipRenewDocumentsReturn.fromJson(
Map<String, dynamic> json,
) {
errors = Map<String, String>.from(json['errors'] ?? {});
}

Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['errors'] = errors;
return data;
}

@override
String toString() {
return 'AssociationMembershipRenewDocumentsReturn(errors: $errors)';
}
}
8 changes: 7 additions & 1 deletion lib/admin/class/user_association_membership.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ class UserAssociationMembership extends UserAssociationMembershipBase {
required super.startDate,
required super.endDate,
required this.user,
required super.documentId,
required super.documentStatus,
});
late final SimpleUser user;

Expand All @@ -32,6 +34,8 @@ class UserAssociationMembership extends UserAssociationMembershipBase {
String? userId,
DateTime? startDate,
DateTime? endDate,
String? documentId,
DocumentStatus? documentStatus,
SimpleUser? user,
}) {
return UserAssociationMembership(
Expand All @@ -41,12 +45,14 @@ class UserAssociationMembership extends UserAssociationMembershipBase {
userId: userId ?? this.userId,
startDate: startDate ?? this.startDate,
endDate: endDate ?? this.endDate,
documentId: documentId ?? this.documentId,
documentStatus: documentStatus ?? this.documentStatus,
user: user ?? this.user,
);
}

@override
String toString() {
return "UserAssociationMembership {id: $id, associationMembershipId: $associationMembershipId, userId: $userId, startDate: $startDate, endDate: $endDate}";
return "UserAssociationMembership {id: $id, associationMembershipId: $associationMembershipId, userId: $userId, startDate: $startDate, endDate: $endDate, documentId: $documentId, documentStatus: $documentStatus, user: $user}";
}
}
21 changes: 19 additions & 2 deletions lib/admin/class/user_association_membership_base.dart
Original file line number Diff line number Diff line change
@@ -1,25 +1,37 @@
import 'package:titan/tools/functions.dart';

enum DocumentStatus { pending, approved, rejected }

class UserAssociationMembershipBase {
UserAssociationMembershipBase({
required this.id,
required this.associationMembershipId,
required this.userId,
required this.startDate,
required this.endDate,
required this.documentId,
required this.documentStatus,
});
late final String id;
late final String associationMembershipId;
late final String userId;
late final DateTime startDate;
late final DateTime endDate;
late final String? documentId;
late final DocumentStatus? documentStatus;

UserAssociationMembershipBase.fromJson(Map<String, dynamic> json) {
id = json['id'];
associationMembershipId = json['association_membership_id'];
userId = json['user_id'];
startDate = processDateFromAPI(json['start_date']);
endDate = processDateFromAPI(json['end_date']);
documentId = json['document_id'];
documentStatus = json['document_status'] != null
? DocumentStatus.values.firstWhere(
(e) => e.name == json['document_status'].toString().toLowerCase(),
)
: null;
}

Map<String, dynamic> toJson() {
Expand All @@ -34,6 +46,9 @@ class UserAssociationMembershipBase {
userAssociationMembership['end_date'] = processDateToAPIWithoutHour(
endDate,
);
userAssociationMembership['document_id'] = documentId;
userAssociationMembership['document_status'] = documentStatus?.name
.toUpperCase();
return userAssociationMembership;
}

Expand All @@ -42,10 +57,12 @@ class UserAssociationMembershipBase {
associationMembershipId = '',
userId = '',
startDate = DateTime(0),
endDate = DateTime(0);
endDate = DateTime(0),
documentId = null,
documentStatus = null;

@override
String toString() {
return "UserAssociationMembership {id: $id, associationMembershipId: $associationMembershipId, userId: $userId, startDate: $startDate, endDate: $endDate}";
return "UserAssociationMembership {id: $id, associationMembershipId: $associationMembershipId, userId: $userId, startDate: $startDate, endDate: $endDate, documentId: $documentId, documentStatus: $documentStatus}";
}
}
2 changes: 1 addition & 1 deletion lib/admin/notification_service.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/providers/group_list_provider.dart';
import 'package:titan/admin/providers/groups/group_list_provider.dart';
import 'package:titan/admin/router.dart';
import 'package:titan/router.dart';
import 'package:titan/user/providers/user_provider.dart';
Expand Down
9 changes: 0 additions & 9 deletions lib/admin/providers/all_account_types_list_provider.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/class/simple_group.dart';
import 'package:titan/admin/providers/group_list_provider.dart';
import 'package:titan/admin/providers/groups/group_list_provider.dart';

final allGroupList = Provider<List<SimpleGroup>>((ref) {
return ref
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/class/group.dart';
import 'package:titan/admin/providers/group_list_provider.dart';
import 'package:titan/admin/providers/groups/group_list_provider.dart';
import 'package:titan/tools/providers/map_provider.dart';
import 'package:titan/tools/token_expire_wrapper.dart';

Expand Down
24 changes: 0 additions & 24 deletions lib/admin/providers/is_expanded_list_provider.dart

This file was deleted.

19 changes: 0 additions & 19 deletions lib/admin/providers/members_provider.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/class/user_association_membership.dart';
import 'package:titan/admin/providers/association_membership_members_list_provider.dart';
import 'package:titan/admin/providers/memberships/association_membership_members_list_provider.dart';
import 'package:titan/admin/providers/research_filter_provider.dart';
import 'package:diacritic/diacritic.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:titan/admin/class/association_membership_simple.dart';
import 'package:titan/admin/class/user_association_membership.dart';
import 'package:titan/admin/class/user_association_membership_base.dart';
import 'package:titan/admin/repositories/association_membership_repository.dart';
Expand Down Expand Up @@ -35,6 +36,34 @@ class AssociationMembershipMembersNotifier
);
}

Future<AssociationMembershipRenewDocumentsReturn>
renewAssociationMembershipDocuments(
String associationMembershipId,
DateTime activeDate,
) async {
final errors = await associationMembershipRepository
.renewAssociationMembershipDocuments(
associationMembershipId,
activeDate,
);
await loadList(
() async => associationMembershipRepository
.getAssociationMembershipMembers(associationMembershipId),
);
return errors;
}

Future<AssociationMembershipRenewDocumentsReturn>
renewUserMembershipDocuments(String userAssociationMembershipId) async {
final errors = await associationMembershipUserRepository
.renewUserMembershipDocument(userAssociationMembershipId);
await loadList(
() async => associationMembershipRepository
.getAssociationMembershipMembers(userAssociationMembershipId),
);
return errors;
}

Future<bool> addMember(
UserAssociationMembershipBase userAssociationMembership,
SimpleUser user,
Expand All @@ -49,6 +78,8 @@ class AssociationMembershipMembersNotifier
userId: userAssociationMembership.userId,
startDate: userAssociationMembership.startDate,
endDate: userAssociationMembership.endDate,
documentId: userAssociationMembership.documentId,
documentStatus: userAssociationMembership.documentStatus,
user: user,
),
);
Expand Down
17 changes: 17 additions & 0 deletions lib/admin/providers/memberships/is_membership_admin.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:titan/admin/providers/memberships/association_membership_list_provider.dart';
import 'package:titan/user/providers/user_provider.dart';

final isMembershipAdminProvider = Provider<bool>((ref) {
final me = ref.watch(userProvider);
final memberships = ref.watch(allAssociationMembershipListProvider);
return memberships.maybeWhen(
data: (memberships) {
return memberships.any(
(membership) =>
me.groups.any((group) => group.id == membership.managerGroupId),
);
},
orElse: () => false,
);
});
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/class/permissions.dart';
import 'package:titan/admin/providers/permission_name_list_provider.dart';
import 'package:titan/admin/providers/permissions/permission_name_list_provider.dart';
import 'package:titan/admin/repositories/permission_repository.dart';
import 'package:titan/auth/providers/openid_provider.dart';
import 'package:titan/tools/providers/list_notifier.dart';
Expand Down
18 changes: 0 additions & 18 deletions lib/admin/providers/section_logo_provider.dart

This file was deleted.

12 changes: 12 additions & 0 deletions lib/admin/repositories/association_membership_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@ class AssociationMembershipRepository extends Repository {
);
}

Future<AssociationMembershipRenewDocumentsReturn>
renewAssociationMembershipDocuments(
String associationMembershipId,
DateTime activeDate,
) async {
return AssociationMembershipRenewDocumentsReturn.fromJson(
await create({
"active_date": processDateToAPIWithoutHour(activeDate),
}, suffix: "$associationMembershipId/renew-documents"),
);
}

Future<AssociationMembership> createAssociationMembership(
AssociationMembership associationMembership,
) async {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:titan/admin/class/association_membership_simple.dart';
import 'package:titan/admin/class/user_association_membership.dart';
import 'package:titan/admin/class/user_association_membership_base.dart';
import 'package:titan/auth/providers/openid_provider.dart';
Expand Down Expand Up @@ -48,6 +49,14 @@ class AssociationMembershipUserRepository extends Repository {
);
}

Future<AssociationMembershipRenewDocumentsReturn> renewUserMembershipDocument(
String userAssociationMembershipId,
) async {
return AssociationMembershipRenewDocumentsReturn.fromJson(
await create({}, suffix: "$userAssociationMembershipId/renew-documents"),
);
}

Future<bool> deleteUserMembership(String userAssociationMembershipId) async {
return await delete(userAssociationMembershipId);
}
Expand Down
Loading
Loading