You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
5.8 KiB
Dart
124 lines
5.8 KiB
Dart
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<String, dynamic> 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);
|
|
// body["VidaAuthTokenID"] =
|
|
// "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyODA0IiwianRpIjoiYzNhYWM3NTEtYjdlNS00NTBmLWI2N2ItMTYyNjA2MTJhOGM3IiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMjgwNCIsIk5hbWUiOiJNVUhBTU1BRCBBWkFNIiwiRW1wbG95ZWVJZCI6IjE0ODUiLCJGYWNpbGl0eUdyb3VwSWQiOiIwMTAyNjYiLCJGYWNpbGl0eUlkIjoiMTUiLCJQaGFyYW1jeUZhY2lsaXR5SWQiOiI1NSIsIklTX1BIQVJNQUNZX0NPTk5FQ1RFRCI6IlRydWUiLCJEb2N0b3JJZCI6IjE0ODUiLCJTRVNTSU9OSUQiOiIyMTU3NjA3NSIsIkNsaW5pY0lkIjoiMyIsInJvbGUiOlsiU0VDVVJJVFkgQURNSU5JU1RSQVRPUlMiLCJTRVRVUCBBRE1JTklTVFJBVE9SUyIsIkNFTydTIiwiRVhFQ1VUSVZFIERJUkVDVE9SUyIsIk1BTkFHRVJTIiwiU1VQRVJWSVNPUlMiLCJDTElFTlQgU0VSVklDRVMgQ09PUkRJTkFUT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIFNVUEVSVklTT1JTIiwiQ0xJRU5UIFNFUlZJQ0VTIE1BTkdFUlMiLCJIRUFEIE5VUlNFUyIsIkRPQ1RPUlMiLCJDSElFRiBPRiBNRURJQ0FMIFNUQUZGUyIsIkJJTy1NRURJQ0FMIFRFQ0hOSUNJQU5TIiwiQklPLU1FRElDQUwgRU5HSU5FRVJTIiwiQklPLU1FRElDQUwgREVQQVJUTUVOVCBIRUFEUyIsIklUIEhFTFAgREVTSyIsIkFETUlOSVNUUkFUT1JTIiwiTEFCIEFETUlOSVNUUkFUT1IiLCJMQUIgVEVDSE5JQ0lBTiIsIkJVU0lORVNTIE9GRklDRSBTVEFGRiIsIkZJTkFOQ0UgQUNDT1VOVEFOVFMiLCJQSEFSTUFDWSBTVEFGRiIsIkFDQ09VTlRTIFNUQUZGIiwiTEFCIFJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiSU5QQVRJRU5UIEJJTExJTkcgU1VQRVJWSVNPUiIsIkxEUi1PUiBOVVJTRVMiLCJBRE1JU1NJT04gU1RBRkYiLCJIRUxQIERFU0sgQURNSU4iLCJBUFBST1ZBTCBTVEFGRiIsIklOUEFUSUVOVCBCSUxMSU5HIENPT1JESU5BVE9SIiwiQklMTElORyBTVEFGRiIsIkNPTlNFTlQgIiwiQ29uc2VudCAtIERlbnRhbCIsIldFQkVNUiJdLCJuYmYiOjE2MDgxMzY3ODMsImV4cCI6MTYwOTAwMDc4MywiaWF0IjoxNjA4MTM2NzgzfQ.8cb7axSSZUwbdzQ9AdTDaahtyhoVvAiDCXIGz4F-FuQ";
|
|
// body["VidaRefreshTokenID"] =
|
|
// "hapR/0V/AljCVq/j49o4T7Bnee7hN295Xks54jo3ATEKZMqa8k9pXmbwDGycnz0Do6jk1W7YWFl6oy6aKfIjDA==";
|
|
body['DoctorID'] = doctorProfile?.doctorID;
|
|
body['EditedBy'] = doctorProfile?.doctorID;
|
|
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'] = await sharedPref.getString(VIDA_AUTH_TOKEN_ID);
|
|
body['VidaRefreshTokenID'] =
|
|
await sharedPref.getString(VIDA_REFRESH_TOKEN_ID);
|
|
|
|
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;
|
|
if (statusCode < 200 || statusCode >= 400 || json == null) {
|
|
onFailure('Error While Fetching data', statusCode);
|
|
} else {
|
|
var parsed = json.decode(response.body.toString());
|
|
if (!parsed['IsAuthenticated']) {
|
|
//need to uncomment
|
|
// await helpers.logout();
|
|
onSuccess(parsed, statusCode);
|
|
helpers.showErrorToast('Your session expired Please login agian');
|
|
} 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);
|
|
}
|
|
}
|
|
}
|