import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:http/http.dart' as http; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); Helpers helpers = new Helpers(); //ProjectProvider projectsProvider = new ProjectProvider(); /* *@author: Mohammad Aljammal *@Date:28/5/2020 *@param: url, onSuccess callBack, onFailure callBack *@return: *@desc: */ ///Example /* await BaseAppClient.post('', onSuccess: (dynamic response, int statusCode) {}, onFailure: (String error, int statusCode) {}, body: null); * */ class BaseAppClient { //TODO change the post fun to nun static when you change all service post( String endPoint, { Map body, Function(dynamic response, int statusCode) onSuccess, Function(String error, int statusCode) onFailure, }) async { String url = BASE_URL + endPoint; try { Map profile = await sharedPref.getObj(DOCTOR_PROFILE); String token = await sharedPref.getString(TOKEN); if (profile != null) { DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); if (body['DoctorID'] == null) body['DoctorID'] = doctorProfile?.doctorID; body['EditedBy'] = doctorProfile?.doctorID; if (body['ProjectID'] == null) { body['ProjectID'] = doctorProfile?.projectID; } if (body['ClinicID'] == null) body['ClinicID'] = doctorProfile?.clinicID; } body['TokenID'] = token ?? ''; String lang = await sharedPref.getString(APP_Language); if (lang != null && lang == 'ar') body['LanguageID'] = 1; else body['LanguageID'] = 2; body['stamp'] = STAMP; body['IPAdress'] = IP_ADDRESS; body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; body['SessionID'] = SESSION_ID; body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP; body['PatientOutSA'] = 0; // PATIENT_OUT_SA; body['VidaAuthTokenID'] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxNDg1IiwianRpIjoiYjVlYzA0MDgtZWE3ZC00YmFhLWJkY2UtOTE2YzUzOTg5MDJhIiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMTQ4NSIsIk5hbWUiOiJTSEFLRVJBIFBBUlZFRU4gKFVTRUQgQlkgRVNFUlZJQ0VTKSIsIkVtcGxveWVlSWQiOiIxNDg1IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiIxNDg1IiwiU0VTU0lPTklEIjoiMjE1OTU3MDMiLCJDbGluaWNJZCI6IjMiLCJyb2xlIjpbIlNFQ1VSSVRZIEFETUlOSVNUUkFUT1JTIiwiRVhFQ1VUSVZFIERJUkVDVE9SUyIsIkRJUkVDVE9SUyIsIkRPQ1RPUlMiLCJFUiBOVVJTRSIsIkVSIFJFQ0VQVElPTklTVCIsIklOUEFUSUVOVCBQSEFSTUFDSVNUIiwiQURNSVNTSU9OIFNUQUZGIiwiSU5QQVRJRU5UIFBIQVJNQUNZIE1BTkFHRVIiLCJBUFBST1ZBTCBTVEFGRiIsIlBIWVNJT1RIRVJBUElTVCIsIklOUEFUSUVOVCBCSUxMSU5HIENPT1JESU5BVE9SIiwiTUVESUNBTCBSRUNPUkRTIFNUQUZGIiwiQklMTElORyBTVEFGRiIsIkNPTlNFTlQgIiwiTUVESUNBTCBSRVBPUlQgLSBTSUNLIExFQVZFIE1BTkFHRVIiXSwibmJmIjoxNjA4ODAzOTkyLCJleHAiOjE2MDk2Njc5OTIsImlhdCI6MTYwODgwMzk5Mn0.ytgJv2bgjfwDN-Cq3PGqrOyyzrrr7f2_GRHzeVzqkKA"; print("URL : $url"); print("Body : ${json.encode(body)}"); if (await Helpers.checkConnection()) { final response = await http.post(url, body: json.encode(body), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }); final int statusCode = response.statusCode; print("status: $statusCode}"); if (statusCode < 200 || statusCode >= 400 || json == null) { onFailure('Error While Fetching data', statusCode); } else { var parsed = json.decode(response.body.toString()); print("IsAuthenticated? ${parsed['IsAuthenticated']}"); if (!parsed['IsAuthenticated']) { await helpers.logout(); helpers.showErrorToast('Your session expired Please login again'); } else if (parsed['MessageStatus'] == 1) { onSuccess(parsed, statusCode); } else { String error = parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage']; if (parsed["ValidationErrors"] != null) { if (parsed["ValidationErrors"]["ValidationErrors"] != null && parsed["ValidationErrors"]["ValidationErrors"].length != 0) { error = ''; for (var i = 0; i < parsed["ValidationErrors"]["ValidationErrors"].length; i++) { error = error + parsed["ValidationErrors"]["ValidationErrors"][i] ["Messages"][0] + "\n"; } } } onFailure(error, statusCode); } } } else { onFailure('Please Check The Internet Connection', -1); } } catch (e) { print(e); onFailure(e.toString(), -1); } } }