import 'dart:convert'; import 'package:unit2/model/location/address_category.dart'; import 'package:unit2/model/location/barangay.dart'; import 'package:unit2/model/location/city.dart'; import 'package:unit2/model/location/country.dart'; import 'package:http/http.dart' as http; import 'package:unit2/model/location/provinces.dart'; import 'package:unit2/model/location/purok.dart'; import 'package:unit2/utils/request.dart'; import 'package:unit2/utils/urls.dart'; import '../model/location/region.dart'; class LocationUtils { static final LocationUtils _instance = LocationUtils(); static LocationUtils get instance => _instance; Map headers = { 'Content-Type': 'application/json; charset=UTF-8', }; Future> getCountries() async { List countries = []; String path = Url.instance.getCounties(); try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var country) { Country newCOuntry = Country.fromJson(country); countries.add(newCOuntry); }); } } } catch (e) { throw (e.toString()); } return countries; } Future> getRegions() async { List regions = []; String path = Url.instance.getRegions(); try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var region) { Region newRegion = Region.fromJson(region); regions.add(newRegion); }); } } } catch (e) { throw (e.toString()); } return regions; } Future> getProvinces({required String regionCode}) async { List provinces = []; String path = Url.instance.getProvinces() + regionCode; try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var province) { Province newProvince = Province.fromJson(province); provinces.add(newProvince); }); } } } catch (e) { throw (e.toString()); } return provinces; } Future> getCities({required String code}) async { List cities = []; String path = Url.instance.getCities() + code; try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var city) { CityMunicipality cityMun = CityMunicipality.fromJson(city); cities.add(cityMun); }); } } } catch (e) { throw (e.toString()); } return cities; } Future> getBarangay({required String code}) async { List barangays = []; String path = Url.instance.getBarangays() + code; try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var city) { Barangay barangay = Barangay.fromJson(city); barangays.add(barangay); }); } } } catch (e) { throw (e.toString()); } return barangays; } Future> getPurok({required String barangay}) async { List puroks = []; String path = Url.instance.getPurok() + barangay; try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); if (response.statusCode == 200) { Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var purok) { Purok newPurok = Purok.fromJson(purok); puroks.add(newPurok); }); } } } catch (e) { throw (e.toString()); } return puroks; } Future> getAddressCategory() async { List categories = []; String path = Url.instance.getAddressCategory(); try { http.Response response = await Request.instance .getRequest(path: path, param: {}, headers: headers); Map data = jsonDecode(response.body); if (data['data'] != null) { data['data'].forEach((var cat) { categories.add(AddressCategory.fromJson(cat)); }); } categories; return categories; } catch (e) { throw e.toString(); } } }