feat: integrate persona D (recycling guide) and routes modules

This commit is contained in:
Alan Alonso
2026-05-23 01:00:02 -06:00
parent a38ca14f38
commit 6d1845c09d
21 changed files with 2074 additions and 99 deletions

View File

@@ -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);
},
);