Co-authored-by: MENDOZA BALLARDO GAEL RICARDO <gael-meb123@users.noreply.github.com>

Co-authored-by: Azareth-Tr <Azareth-Tr@users.noreply.github.com>
Co-authored-by: eddgranados12 <eddgranados12@users.noreply.github.com>

implementacion de login, vistas, correcion de errores en vista registro, domicilios
This commit is contained in:
shinra32
2026-05-22 23:07:24 -06:00
parent b4ee3e7b49
commit c91b6e2091
52 changed files with 3940 additions and 4368 deletions

73
views_v2/eta_model.dart Normal file
View File

@@ -0,0 +1,73 @@
// lib/features/eta/eta_model.dart
// Modelo de respuesta del endpoint GET /eta?address_id=X
// El backend NUNCA devuelve coordenadas; solo texto y status.
enum RouteStatus {
pendiente,
enRuta,
completada,
diferida,
reasignada,
}
RouteStatus routeStatusFromString(String s) {
switch (s) {
case 'en_ruta':
return RouteStatus.enRuta;
case 'completada':
return RouteStatus.completada;
case 'diferida':
return RouteStatus.diferida;
case 'reasignada':
return RouteStatus.reasignada;
default:
return RouteStatus.pendiente;
}
}
class EtaResponse {
/// Texto accionable que muestra el ciudadano.
/// Ejemplos: "Llega en aproximadamente 15 minutos"
/// "Servicio del día finalizado"
final String mensaje;
/// Estado de la ruta para mostrar el badge correcto.
final RouteStatus status;
/// Ventana horaria opcional, ej. "7:207:35 p.m."
/// Solo presente cuando positionId == 4 (TRUCK_PROXIMITY).
final String? ventanaHoraria;
const EtaResponse({
required this.mensaje,
required this.status,
this.ventanaHoraria,
});
factory EtaResponse.fromJson(Map<String, dynamic> json) {
return EtaResponse(
mensaje: json['mensaje'] as String,
status: routeStatusFromString(json['status'] as String),
ventanaHoraria: json['ventana_horaria'] as String?,
);
}
/// Estado de progreso local (0-3) mapeado al positionId del backend.
/// Útil para la barra de 4 pasos en la UI.
int get stepIndex {
switch (status) {
case RouteStatus.pendiente:
return 0;
case RouteStatus.enRuta:
return 1;
case RouteStatus.completada:
return 3;
default:
return 2;
}
}
bool get isCompleted => status == RouteStatus.completada;
bool get isNearby =>
ventanaHoraria != null && status == RouteStatus.enRuta;
}