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:
co-authored by
Claude Sonnet 4.6
parent
842a67cdea
commit
9c61a35747
@@ -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: [...]}]}
|
||||
|
||||
Reference in New Issue
Block a user