2019-07-08 11:53:10 +01:00
import ' dart:convert ' ;
import ' dart:async ' ;
import ' package:http/http.dart ' as http ;
2019-07-16 11:28:36 +01:00
import ' package:flutter/material.dart ' ;
2019-07-08 11:53:10 +01:00
import ' package:local_spend/common/functions/get_token.dart ' ;
2019-08-07 13:15:15 +01:00
2019-07-08 11:53:10 +01:00
class Organisation {
var id = 0 ;
var name = " " ;
var postcode = " " ;
2019-07-08 15:03:11 +01:00
var streetName = " " ; //street_name
2019-07-08 11:53:10 +01:00
var town = " " ;
2019-07-08 15:03:11 +01:00
2019-08-07 13:15:15 +01:00
Organisation (
this . id ,
this . name ,
this . postcode ,
this . streetName ,
this . town ,
) ;
2019-07-08 15:03:11 +01:00
2019-07-08 11:53:10 +01:00
}
List < Organisation > jsonToOrganisations ( String json ) {
Map decoded = jsonDecode ( json ) ;
2019-07-16 11:28:36 +01:00
List < dynamic > validated = decoded [ ' validated ' ] ;
2019-07-08 15:03:11 +01:00
List < Map > organisationsMaps = new List < Map > ( ) ;
validated . forEach ( ( element ) = > organisationsMaps . add ( element ) ) ;
List < Organisation > organisations = new List < Organisation > ( ) ;
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 ) ;
}
return organisations ;
2019-07-08 11:53:10 +01:00
}
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 ) ,
) ;
if ( response . statusCode = = 200 ) {
//request successful
return jsonToOrganisations ( response . body ) ;
} else {
// not successful
return null ;
}
2019-07-16 11:28:36 +01:00
}
class OrganizationController extends TextEditingController {
Organisation organisation ;
2019-07-08 11:53:10 +01:00
}