42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../../../core/api/api_client.dart';
|
|
import '../../../core/api/api_endpoints.dart';
|
|
import '../../../core/api/api_response.dart';
|
|
import '../domain/establishment.dart';
|
|
|
|
/// Dépôt de données pour les établissements et machines.
|
|
class EstablishmentRepository {
|
|
EstablishmentRepository(this._apiClient);
|
|
|
|
final ApiClient _apiClient;
|
|
|
|
Future<List<Establishment>> fetchEstablishments() async {
|
|
final response = await _apiClient.get(ApiEndpoints.establishments);
|
|
final data = ApiResponse.list(response.data, 'establishments');
|
|
|
|
return data
|
|
.map((json) => Establishment.fromJson(json as Map<String, dynamic>))
|
|
.toList();
|
|
}
|
|
|
|
Future<Establishment> fetchEstablishment(String uuid) async {
|
|
final response = await _apiClient.get(ApiEndpoints.establishment(uuid));
|
|
final json = ApiResponse.object(response.data, 'establishment');
|
|
return Establishment.fromJson(json);
|
|
}
|
|
}
|
|
|
|
final establishmentRepositoryProvider = Provider<EstablishmentRepository>((ref) {
|
|
return EstablishmentRepository(ref.watch(apiClientProvider));
|
|
});
|
|
|
|
final establishmentsProvider = FutureProvider<List<Establishment>>((ref) async {
|
|
return ref.watch(establishmentRepositoryProvider).fetchEstablishments();
|
|
});
|
|
|
|
final establishmentDetailProvider =
|
|
FutureProvider.family<Establishment, String>((ref, uuid) async {
|
|
return ref.watch(establishmentRepositoryProvider).fetchEstablishment(uuid);
|
|
});
|