Integration fonctionnalités V1 ( resas + gestion machines
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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/machine_detail.dart';
|
||||
|
||||
/// Dépôt de données machines (lookup, détail, créneaux).
|
||||
class MachineRepository {
|
||||
MachineRepository(this._apiClient);
|
||||
|
||||
final ApiClient _apiClient;
|
||||
|
||||
Future<MachineDetail> lookup({String? qrCode, String? machineUuid}) async {
|
||||
final response = await _apiClient.get(
|
||||
ApiEndpoints.machineLookup,
|
||||
queryParameters: {
|
||||
if (qrCode != null) 'qr_code': qrCode,
|
||||
if (machineUuid != null) 'machine_uuid': machineUuid,
|
||||
},
|
||||
);
|
||||
return MachineDetail.fromJson(ApiResponse.payload(response.data));
|
||||
}
|
||||
|
||||
Future<MachineDetail> fetchDetail(String uuid) async {
|
||||
final response = await _apiClient.get(ApiEndpoints.machine(uuid));
|
||||
return MachineDetail.fromJson(ApiResponse.payload(response.data));
|
||||
}
|
||||
|
||||
Future<List<TimeSlot>> fetchAvailability(String uuid, DateTime date) async {
|
||||
final response = await _apiClient.get(
|
||||
ApiEndpoints.machineAvailability(uuid),
|
||||
queryParameters: {'date': date.toIso8601String().split('T').first},
|
||||
);
|
||||
final slots = ApiResponse.payload(response.data)['slots'] as List<dynamic>? ?? [];
|
||||
return slots.map((s) => TimeSlot.fromJson(s as Map<String, dynamic>)).toList();
|
||||
}
|
||||
}
|
||||
|
||||
final machineRepositoryProvider = Provider<MachineRepository>((ref) {
|
||||
return MachineRepository(ref.watch(apiClientProvider));
|
||||
});
|
||||
|
||||
final machineDetailProvider = FutureProvider.family<MachineDetail, String>((ref, uuid) async {
|
||||
return ref.watch(machineRepositoryProvider).fetchDetail(uuid);
|
||||
});
|
||||
|
||||
final machineAvailabilityProvider =
|
||||
FutureProvider.family<List<TimeSlot>, ({String uuid, DateTime date})>((ref, params) async {
|
||||
return ref.watch(machineRepositoryProvider).fetchAvailability(params.uuid, params.date);
|
||||
});
|
||||
Reference in New Issue
Block a user