This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
LocalSpend-Tracker/lib/common/apifunctions/find_organisations.dart

104 lines
2.4 KiB
Dart
Raw Normal View History

import 'dart:convert';
import 'dart:async';
import 'package:http/http.dart' as http;
import 'package:local_spend/common/functions/get_token.dart';
class Organisation {
var id = 0;
var name = "";
var postcode = "";
2019-07-08 14:03:11 +00:00
var streetName = ""; //street_name
var town = "";
2019-07-08 14:03:11 +00:00
Organisation(int id, String name, String postcode, String streetName, String town) {
this.id = id;
this.name = name;
this.postcode = postcode;
this.streetName = streetName; //street_name
this.town = town;
}
}
List<Organisation> jsonToOrganisations(String json) {
Map decoded = jsonDecode(json);
2019-07-08 14:03:11 +00:00
// print(decoded);
2019-07-08 14:03:11 +00:00
List<dynamic> validated = decoded['unvalidated'];
// Map organisation = validated[0];
//
// print("");
// print("Response:");
// for (var i = 0; i < validated.length; i++) {
// print(validated[i]);
// }
2019-07-08 14:03:11 +00:00
List<Map> organisationsMaps = new List<Map>();
validated.forEach((element) => organisationsMaps.add(element));
// print("");
// print("organisationsMaps:");
// print(organisationsMaps);
List<Organisation> organisations = new List<Organisation>();
// organisationsMaps[0].forEach((k,v) => print('${k}: ${v}'));
for (var i = 0; i < organisationsMaps.length; i++) {
final params = organisationsMaps[i].values.toList();
var newOrganisation = new Organisation(
params[0].toInt(),
params[1].toString(),
params[2].toString(), // oof
params[3].toString(), // this could be improved...
params[4].toString(),
);
organisations.add(newOrganisation);
}
// the reason some organizations do not show up is because they are not all validated
// option to 'show unvalidated' should be added along with maybe a settings section
//
// print("");
// print("Local:");
// for (var i = 0; i < organisations.length; i++)
// {
// print(organisations[i].name);
// }
// print("");
2019-07-08 14:03:11 +00:00
return organisations;
}
Future<List<Organisation>> findOrganisations(String search) async {
final url = "https://dev.peartrade.org/api/search";
var token;
await getToken().then((result) {
token = result;
});
Map<String, String> body = {
"search_name":search,
"session_key":token,
};
final response = await http.post (
url,
body: json.encode(body),
);
2019-07-08 14:03:11 +00:00
// print(response.body);
if (response.statusCode == 200) {
//request successful
return jsonToOrganisations(response.body);
} else {
// not successful
return null;
}
}