getListOfAmendements function

Future<List<AmendementFromJson>> getListOfAmendements({
  1. required Directory mainDirectory,
})

Get the Amendements JSON files in designated directory and convert to AmendementFromJson:

mainDirectory is the required Directory where Open Data ZIP was extracted. You can use App Support directory for instance.

Implementation

Future<List<AmendementFromJson>> getListOfAmendements(
    {required Directory mainDirectory}) async {
  List<AmendementFromJson> _listToReturn = [];
  Directory theDirectory = Directory(
      mainDirectory.path + amendementsDirectory + jsonIntermediaryDirectory);
  List<FileSystemEntity> _initialListOfFiles =
      await theDirectory.list(recursive: true).toList();

  for (FileSystemEntity entityLevelOne in _initialListOfFiles) {
    if (entityLevelOne.path.split("/").last.substring(0, 1) != ".") {
      // to exclude any system file

      ///
      ///
      /// LIST OF DOSSIERS LEGISLATIFS
      ///
      ///

      if (entityLevelOne is Directory) {
        List<FileSystemEntity> _listOfDossiers =
            await entityLevelOne.list(recursive: true).toList();

        for (FileSystemEntity entityLevelTwo in _listOfDossiers) {
          if (entityLevelTwo.path.split("/").last.substring(0, 1) != ".") {
            // to exclude any system file

            ///
            ///
            /// LIST OF PROJETS LOIS
            ///
            ///

            if (entityLevelTwo is Directory) {
              List<FileSystemEntity> _listOfProjets =
                  await entityLevelTwo.list(recursive: true).toList();

              for (FileSystemEntity entityLevelThree in _listOfProjets) {
                if (entityLevelThree.path.split("/").last.substring(0, 1) !=
                    ".") {
                  // to exclude any system file

                  ///
                  ///
                  /// LIST OF AMENDEMENTS
                  ///
                  ///

                  File _theFile = File(entityLevelThree.path);
                  dynamic response = await _theFile.readAsString();

                  if (response != null) {
                    Map<String, dynamic> _map = json.decode(response);
                    AmendementFromJson _toReturn =
                        AmendementFromJson.fromFrenchNationalAssemblyJson(_map);
                    _listToReturn.add(_toReturn);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return _listToReturn;
}