Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts). Signed-off-by: lions dev Team
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
/// Use Case: Créer une nouvelle organisation
|
||||
library create_organization;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/organization_model.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Crée une nouvelle organisation (SuperAdmin uniquement)
|
||||
@injectable
|
||||
class CreateOrganization {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
CreateOrganization(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [organization] : Modèle de l'organisation à créer
|
||||
/// Retourne l'organisation créée avec son ID
|
||||
/// Lève une exception en cas d'erreur (données invalides, conflit)
|
||||
Future<OrganizationModel> call(OrganizationModel organization) async {
|
||||
return _repository.createOrganization(organization);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Use Case: Supprimer une organisation
|
||||
library delete_organization;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Supprime une organisation (SuperAdmin uniquement)
|
||||
@injectable
|
||||
class DeleteOrganization {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
DeleteOrganization(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [id] : Identifiant de l'organisation à supprimer
|
||||
/// Lève une exception si organisation non trouvée ou suppression impossible
|
||||
/// Note: Peut être un soft delete selon l'implémentation backend
|
||||
Future<void> call(String id) async {
|
||||
return _repository.deleteOrganization(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Use Case: Récupérer une organisation par ID
|
||||
library get_organization_by_id;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/organization_model.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Récupère le détail d'une organisation par son identifiant
|
||||
@injectable
|
||||
class GetOrganizationById {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
GetOrganizationById(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [id] : Identifiant de l'organisation
|
||||
/// Retourne l'organisation ou null si non trouvée
|
||||
Future<OrganizationModel?> call(String id) async {
|
||||
return _repository.getOrganizationById(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Use Case: Récupérer les membres d'une organisation
|
||||
library get_organization_members;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Récupère la liste des membres d'une organisation
|
||||
@injectable
|
||||
class GetOrganizationMembers {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
GetOrganizationMembers(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [organizationId] : Identifiant de l'organisation
|
||||
/// Retourne une liste de membres (Map avec id, nom, prenom, role, etc.)
|
||||
/// Endpoint: GET /api/organisations/{id}/membres
|
||||
Future<List<Map<String, dynamic>>> call(String organizationId) async {
|
||||
return _repository.getOrganizationMembers(organizationId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/// Use Case: Récupérer la liste des organisations
|
||||
library get_organizations;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/organization_model.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Récupère la liste paginée des organisations
|
||||
@injectable
|
||||
class GetOrganizations {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
GetOrganizations(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [page] : Numéro de page (défaut: 0)
|
||||
/// [size] : Taille de la page (défaut: 20)
|
||||
/// [recherche] : Terme de recherche optionnel
|
||||
/// Retourne une liste d'organisations
|
||||
Future<List<OrganizationModel>> call({
|
||||
int page = 0,
|
||||
int size = 20,
|
||||
String? recherche,
|
||||
}) async {
|
||||
return _repository.getOrganizations(
|
||||
page: page,
|
||||
size: size,
|
||||
recherche: recherche,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/// Use Case: Mettre à jour une organisation
|
||||
library update_organization;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/organization_model.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Met à jour une organisation existante (OrgAdmin ou SuperAdmin)
|
||||
@injectable
|
||||
class UpdateOrganization {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
UpdateOrganization(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [id] : Identifiant de l'organisation
|
||||
/// [organization] : Modèle avec les données mises à jour
|
||||
/// Retourne l'organisation mise à jour
|
||||
/// Lève une exception si organisation non trouvée ou données invalides
|
||||
Future<OrganizationModel> call(String id, OrganizationModel organization) async {
|
||||
return _repository.updateOrganization(id, organization);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/// Use Case: Mettre à jour la configuration d'une organisation
|
||||
library update_organization_config;
|
||||
|
||||
import 'package:injectable/injectable.dart';
|
||||
import '../../data/models/organization_model.dart';
|
||||
import '../repositories/organization_repository.dart';
|
||||
|
||||
/// Met à jour la configuration spécifique d'une organisation
|
||||
/// (logo, couleurs, modules activés, préférences, etc.)
|
||||
@injectable
|
||||
class UpdateOrganizationConfig {
|
||||
final IOrganizationRepository _repository;
|
||||
|
||||
UpdateOrganizationConfig(this._repository);
|
||||
|
||||
/// Exécute le use case
|
||||
/// [id] : Identifiant de l'organisation
|
||||
/// [config] : Configuration à mettre à jour
|
||||
/// Exemple: { "logo": "url", "couleurPrimaire": "#FF5733", "modulesActifs": ["finance", "events"] }
|
||||
/// Retourne l'organisation avec la configuration mise à jour
|
||||
/// Endpoint: PUT /api/organisations/{id}/configuration
|
||||
Future<OrganizationModel> call(String id, Map<String, dynamic> config) async {
|
||||
return _repository.updateOrganizationConfig(id, config);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user