feat: Implement group management with BLoC pattern; add GroupBloc, GroupRepository, and related models

NOT FUNCTIONNAL
This commit is contained in:
Dayron
2025-10-14 23:53:20 +02:00
parent 2eedb26778
commit fc403e5d26
10 changed files with 708 additions and 185 deletions

View File

@@ -1,5 +1,6 @@
import 'package:equatable/equatable.dart';
import '../../data/models/group.dart';
import '../../data/models/group_member.dart';
abstract class GroupEvent extends Equatable {
const GroupEvent();
@@ -8,64 +9,89 @@ abstract class GroupEvent extends Equatable {
List<Object?> get props => [];
}
class GroupLoadRequested extends GroupEvent {
// NOUVEAU : Charger les groupes par userId
class LoadGroupsByUserId extends GroupEvent {
final String userId;
const GroupLoadRequested({required this.userId});
const LoadGroupsByUserId(this.userId);
@override
List<Object?> get props => [userId];
}
class GroupCreateRequested extends GroupEvent {
// Charger les groupes d'un voyage (conservé pour compatibilité)
class LoadGroupsByTrip extends GroupEvent {
final String tripId;
const LoadGroupsByTrip(this.tripId);
@override
List<Object?> get props => [tripId];
}
// Créer un groupe simple
class CreateGroup extends GroupEvent {
final Group group;
const GroupCreateRequested({required this.group});
const CreateGroup(this.group);
@override
List<Object?> get props => [group];
}
class GroupUpdateRequested extends GroupEvent {
// Créer un groupe avec ses membres
class CreateGroupWithMembers extends GroupEvent {
final Group group;
final List<GroupMember> members;
const GroupUpdateRequested({required this.group});
const CreateGroupWithMembers({
required this.group,
required this.members,
});
@override
List<Object?> get props => [group];
List<Object?> get props => [group, members];
}
class GroupDeleteRequested extends GroupEvent {
// Ajouter un membre
class AddMemberToGroup extends GroupEvent {
final String groupId;
final GroupMember member;
const AddMemberToGroup(this.groupId, this.member);
@override
List<Object?> get props => [groupId, member];
}
// Supprimer un membre
class RemoveMemberFromGroup extends GroupEvent {
final String groupId;
final String userId;
const RemoveMemberFromGroup(this.groupId, this.userId);
@override
List<Object?> get props => [groupId, userId];
}
// Mettre à jour un groupe
class UpdateGroup extends GroupEvent {
final String groupId;
final Group group;
const UpdateGroup(this.groupId, this.group);
@override
List<Object?> get props => [groupId, group];
}
// Supprimer un groupe
class DeleteGroup extends GroupEvent {
final String groupId;
const GroupDeleteRequested({required this.groupId});
const DeleteGroup(this.groupId);
@override
List<Object?> get props => [groupId];
}
class GroupMemberAddRequested extends GroupEvent {
final String groupId;
final String memberId;
const GroupMemberAddRequested({
required this.groupId,
required this.memberId,
});
@override
List<Object?> get props => [groupId, memberId];
}
class GroupMemberRemoveRequested extends GroupEvent {
final String groupId;
final String memberId;
const GroupMemberRemoveRequested({
required this.groupId,
required this.memberId,
});
@override
List<Object?> get props => [groupId, memberId];
}
}