feat(communication): module messagerie unifié + contact policies + blocages
Aligné avec le backend MessagingResource : - Nouveau module communication (conversations, messages, participants) - Respect des ContactPolicy (qui peut parler à qui par rôle) - Gestion MemberBlock (blocages individuels) - UI : conversations list, conversation detail, broadcast, tiles - BLoC : MessagingBloc avec events (envoyer, démarrer conversation rôle, etc.)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
/// Entité métier ContactPolicy v4
|
||||
///
|
||||
/// Correspond au DTO backend : ContactPolicyResponse
|
||||
library contact_policy;
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
/// Politique de communication d'une organisation
|
||||
class ContactPolicy extends Equatable {
|
||||
final String? id;
|
||||
final String? organisationId;
|
||||
final String typePolitique; // OUVERT | BUREAU_SEULEMENT | GROUPES_INTERNES
|
||||
final bool autoriserMembreVersMembre;
|
||||
final bool autoriserMembreVersRole;
|
||||
final bool autoriserNotesVocales;
|
||||
|
||||
const ContactPolicy({
|
||||
this.id,
|
||||
this.organisationId,
|
||||
required this.typePolitique,
|
||||
this.autoriserMembreVersMembre = true,
|
||||
this.autoriserMembreVersRole = true,
|
||||
this.autoriserNotesVocales = true,
|
||||
});
|
||||
|
||||
bool get isOuvert => typePolitique == 'OUVERT';
|
||||
bool get isBureauSeulement => typePolitique == 'BUREAU_SEULEMENT';
|
||||
bool get isGroupesInternes => typePolitique == 'GROUPES_INTERNES';
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
id, organisationId, typePolitique,
|
||||
autoriserMembreVersMembre, autoriserMembreVersRole, autoriserNotesVocales,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user