feat: validacion ciudad disponible en dashboard

- CitiesProvider.isCityAvailable() y findMatchingCity() con comparacion flexible
- Al mover el mapa extrae la ciudad del geocodificado inverso
- Si la ciudad no esta en la lista muestra aviso amarillo y bloquea solicitud
- Boton de solicitar deshabilitado cuando ciudad no esta disponible

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-27 08:38:01 -05:00
co-authored by Claude Sonnet 4.6
parent 842a67cdea
commit 9c61a35747
2 changed files with 80 additions and 1 deletions
+18
View File
@@ -18,6 +18,24 @@ class CitiesProvider extends ChangeNotifier {
return null;
}
// Busca una ciudad que coincida con el nombre geocodificado (comparación flexible)
City? findMatchingCity(String geocodedName) {
if (geocodedName.isEmpty || cities.isEmpty) return null;
final normalized = geocodedName.toLowerCase().trim();
// Intento exacto primero
for (final c in cities) {
if (c.cityName.toLowerCase() == normalized) return c;
}
// Coincidencia parcial: el nombre geocodificado contiene el nombre de ciudad
for (final c in cities) {
final cn = c.cityName.toLowerCase();
if (normalized.contains(cn) || cn.contains(normalized.split(',').first.trim())) return c;
}
return null;
}
bool isCityAvailable(String geocodedName) => findMatchingCity(geocodedName) != null;
getCities() async {
try {
// GET /locations/countries returns nested {regions: [{cities: [...]}]}