105 lines
3.0 KiB
Dart
105 lines
3.0 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:p_tits_pas/services/api/api_config.dart';
|
|
import 'package:p_tits_pas/services/api/tokenService.dart';
|
|
import 'package:http/http.dart' as http;
|
|
|
|
|
|
class UserService {
|
|
final String baseUrl = ApiConfig.baseUrl;
|
|
|
|
//Recuperer tous les utilisateurs
|
|
Future<List<Map<String, dynamic>>> getAllUsers() async {
|
|
try {
|
|
final token = await TokenService.getToken();
|
|
if (token == null) {
|
|
throw Exception('Token non disponible');
|
|
}
|
|
|
|
final response = await http.get(
|
|
Uri.parse('$baseUrl${ApiConfig.users}'),
|
|
headers: ApiConfig.authHeaders(token),
|
|
);
|
|
|
|
if (response.statusCode == 200) {
|
|
final List<dynamic> data = jsonDecode(response.body);
|
|
return data.cast<Map<String, dynamic>>();
|
|
} else {
|
|
throw Exception('Erreur lors de la récupération des utilisateurs: ${response.statusCode}');
|
|
}
|
|
} catch (e) {
|
|
throw Exception('Erreur de connexion: $e');
|
|
}
|
|
}
|
|
|
|
//Récuperer les utilisateurs en fonction du role
|
|
Future<List<Map<String, dynamic>>> getUsersByRole(String role) async {
|
|
try {
|
|
final allUsers = await getAllUsers();
|
|
return allUsers.where((user) =>
|
|
user['role']?.toString().toLowerCase() == role.toLowerCase()
|
|
).toList();
|
|
} catch (e) {
|
|
throw Exception('Erreur lors de la récupération des utilisateurs par rôle: $e');
|
|
}
|
|
}
|
|
|
|
// Filtrer les utilisateurs par statut
|
|
Future<List<Map<String, dynamic>>> filterUsersByStatus(String? status) async {
|
|
try {
|
|
final allUsers = await getAllUsers();
|
|
if (status == null || status.isEmpty) return allUsers;
|
|
|
|
return allUsers
|
|
.where((user) =>
|
|
user['status']?.toString().toLowerCase() == status.toLowerCase())
|
|
.toList();
|
|
} catch (e) {
|
|
throw Exception('Erreur lors du filtrage: $e');
|
|
}
|
|
}
|
|
|
|
/// Supprimer un utilisateur
|
|
Future<bool> deleteUser(String userId) async {
|
|
try {
|
|
final token = await TokenService.getToken();
|
|
if (token == null) {
|
|
throw Exception('Token non disponible');
|
|
}
|
|
|
|
final response = await http.delete(
|
|
Uri.parse('$baseUrl${ApiConfig.users}/$userId'),
|
|
headers: ApiConfig.authHeaders(token),
|
|
);
|
|
|
|
return response.statusCode == 200 || response.statusCode == 204;
|
|
} catch (e) {
|
|
throw Exception('Erreur lors de la suppression: $e');
|
|
}
|
|
}
|
|
|
|
/// Récupérer les détails d'un utilisateur
|
|
Future<Map<String, dynamic>?> getUserById(String userId) async {
|
|
try {
|
|
final token = await TokenService.getToken();
|
|
if (token == null) {
|
|
throw Exception('Token non disponible');
|
|
}
|
|
|
|
final response = await http.get(
|
|
Uri.parse('$baseUrl${ApiConfig.users}/$userId'),
|
|
headers: ApiConfig.authHeaders(token),
|
|
);
|
|
|
|
if (response.statusCode == 200) {
|
|
return jsonDecode(response.body);
|
|
} else {
|
|
return null;
|
|
}
|
|
} catch (e) {
|
|
throw Exception('Erreur lors de la récupération de l\'utilisateur: $e');
|
|
}
|
|
}
|
|
|
|
} |