feat: integrate persona D (recycling guide) and routes modules
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// lib/features/routes/presentation/providers/routes_provider.dart
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../data/repositories/routes_repository.dart';
|
||||
import '../../domain/entities/route_entities.dart';
|
||||
import '../../domain/entities/haversine.dart';
|
||||
|
||||
// ── Repositorio singleton ─────────────────────────────────────────────
|
||||
final routesRepositoryProvider = Provider<RoutesRepository>(
|
||||
(ref) => RoutesRepository(),
|
||||
);
|
||||
|
||||
// ── Todas las rutas ───────────────────────────────────────────────────
|
||||
final allRoutesProvider = FutureProvider<List<TruckRoute>>((ref) {
|
||||
return ref.watch(routesRepositoryProvider).obtenerRutas();
|
||||
});
|
||||
|
||||
// ── Ruta por ID ───────────────────────────────────────────────────────
|
||||
final routeByIdProvider =
|
||||
FutureProvider.family<TruckRoute?, String>((ref, routeId) {
|
||||
return ref.watch(routesRepositoryProvider).obtenerRutaPorId(routeId);
|
||||
});
|
||||
|
||||
// ── Asignación de ruta por coordenadas (Haversine) ────────────────────
|
||||
final routeAssignmentProvider =
|
||||
FutureProvider.family<RouteAssignmentResult, ({double lat, double lng})>(
|
||||
(ref, coords) {
|
||||
return ref
|
||||
.watch(routesRepositoryProvider)
|
||||
.asignarRuta(coords.lat, coords.lng);
|
||||
},
|
||||
);
|
||||
|
||||
// ── ETA para un domicilio ─────────────────────────────────────────────
|
||||
final etaProvider = FutureProvider.family<
|
||||
ETAResult,
|
||||
({String routeId, double lat, double lng})>(
|
||||
(ref, params) {
|
||||
return ref
|
||||
.watch(routesRepositoryProvider)
|
||||
.calcularETA(params.routeId, params.lat, params.lng);
|
||||
},
|
||||
);
|
||||
Reference in New Issue
Block a user