getDiseasesByVector method

Future<List<Disease>> getDiseasesByVector(
  1. String speciesName,
  2. String languageCode
)

Retrieves diseases associated with a specific mosquito species.

Returns all diseases that can be transmitted by the specified mosquito species for the given language.

@param speciesName The scientific name of the mosquito species @param languageCode The language code (e.g., 'en', 'es') @return A Future that completes with a list of Disease objects

Implementation

Future<List<Disease>> getDiseasesByVector(String speciesName, String languageCode) async {
  final db = await database;
  final List<Map<String, dynamic>> mosquitoMaps = await db.query('mosquito_species', where: 'name = ?', whereArgs: [speciesName]);
  if (mosquitoMaps.isEmpty) return [];

  final String mosquitoId = mosquitoMaps.first['id'];
  final List<Map<String, dynamic>> relationMaps = await db.query('mosquito_disease_relation', where: 'mosquito_id = ?', whereArgs: [mosquitoId]);
  final List<String> diseaseIds = relationMaps.map((r) => r['disease_id'] as String).toList();

  final List<Disease> diseases = [];
  for (var diseaseId in diseaseIds) {
    final disease = await getDiseaseById(diseaseId, languageCode);
    if (disease != null) {
      diseases.add(disease);
    }
  }
  return diseases;
}