import 'dart:convert'; import 'package:unit2/utils/request.dart'; import '../../model/profile/references.dart'; import '../../utils/urls.dart'; import 'package:http/http.dart' as http; class ReferencesServices{ static final ReferencesServices _instance = ReferencesServices(); static ReferencesServices get instace => _instance; Future> getRefences(int profileId, String token)async{ List references = []; String authToken = "Token $token"; String path = "${Url.instance.reference()}$profileId/"; Map headers = { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': authToken }; 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 ref){ PersonalReference reference = PersonalReference.fromJson(ref); references.add(reference); }); } } }catch(e){ throw e.toString(); } return references; } Future>addReference({required PersonalReference ref, required String token, required int profileId})async{ String authToken = "Token $token"; String path = "${Url.instance.reference()}$profileId/"; Map headers = { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': authToken }; Map responseStatus ={}; bool overseas = ref.address!.country !=null?true:false; Map body = { "first_name": ref.firstName, "middle_name": ref.middleName, "last_name": ref.lastName, "contact_no":ref.contactNo, "_addressCatId": ref.address!.addressCategory!.id, "_areaClass": "Village", "_citymunCode": overseas?null: ref.address?.cityMunicipality?.code, "_brgyCode": overseas?null:ref.address?.barangay?.code, "_countryId": overseas?ref.address!.country!.id:175 }; try{ http.Response response = await Request.instance.postRequest(path: path,body: body,param: {},headers: headers); if(response.statusCode == 201){ Map data = jsonDecode(response.body); responseStatus = data; }else{ responseStatus.addAll({'success':false}); } return responseStatus; }catch(e){ throw e.toString(); } } Future> update({required PersonalReference ref,required String token, required int profileId})async{ String authToken = "Token $token"; String path = "${Url.instance.reference()}$profileId/"; Map headers = { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': authToken }; Map responseStatus ={}; bool overseas = ref.address!.country!.id != 175; Map body = { "id":ref.id, "related_person_id": profileId, "first_name": ref.firstName, "middle_name": ref.middleName, "last_name": ref.lastName, "contact_no":ref.contactNo, "_addressCatId": ref.address!.addressCategory!.id, "_areaClass": "Village", "_citymunCode": overseas?null: ref.address?.cityMunicipality?.code, "_brgyCode": overseas?null:ref.address?.barangay?.code, "_countryId": overseas?ref.address!.country!.id:175 }; try{ http.Response response = await Request.instance.putRequest(path: path,body: body,param: {},headers: headers); if(response.statusCode == 200){ Map data = jsonDecode(response.body); responseStatus = data; }else{ responseStatus.addAll({'success':false}); } return responseStatus; }catch(e){ throw e.toString(); } } Futuredelete({required int profileId, required String token, required int id })async{ bool? success; String authtoken = "Token $token"; String path = "${Url.instance.reference()}$profileId/"; Map params = {"force_mode": "true"}; Map headers = { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': authtoken }; try{ http.Response response = await Request.instance.deleteRequest(path: path, headers: headers, body: {"id":id}, param: params); if(response.statusCode == 200){ Map data = jsonDecode(response.body); success=data['success']; }else{ success = false; } return success!; }catch(e){ throw e.toString(); } } }