Merge branch 'development' into replay-design

pull/179/head
mosazaid 5 years ago
commit a55b605a6c

@ -223,10 +223,10 @@ const Map<String, Map<String, String>> localizedValues = {
'endcall': {'en': 'End Call', 'ar': 'إنهاء المكالمة'}, 'endcall': {'en': 'End Call', 'ar': 'إنهاء المكالمة'},
'transfertoadmin': {'en': 'Transfer to admin', 'ar': 'نقل إلى المسؤول'}, 'transfertoadmin': {'en': 'Transfer to admin', 'ar': 'نقل إلى المسؤول'},
"searchMedicineImageCaption": { "searchMedicineImageCaption": {
'en': 'Type or speak the medicine name to search', 'en': 'Type the medicine name to search',
'ar': ' اكتب أو انطق اسم الدواء للبحث' 'ar': ' اكتب اسم الدواء للبحث'
}, },
"type": {'en': 'Type or Speak', 'ar': 'اكتب أو تحدث '}, "type": {'en': 'Type ', 'ar': 'اكتب'},
"fromDate": {'en': 'From Date', 'ar': 'من تاريخ'}, "fromDate": {'en': 'From Date', 'ar': 'من تاريخ'},
"toDate": {'en': 'To Date', 'ar': 'الى تاريخ'}, "toDate": {'en': 'To Date', 'ar': 'الى تاريخ'},
"searchPatientImageCaptionTitle": { "searchPatientImageCaptionTitle": {

@ -0,0 +1,49 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/request_schedule.dart';
import 'package:doctor_app_flutter/models/pharmacies/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/models/pharmacies/pharmacies_items_request_model.dart';
class MedicineService extends BaseService {
var _pharmacyItemsList = [];
var _pharmaciesList = [];
get pharmacyItemsList => _pharmacyItemsList;
get pharmaciesList => _pharmaciesList;
PharmaciesItemsRequestModel _itemsRequestModel =
PharmaciesItemsRequestModel();
PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel();
Future getMedicineItem(String itemName) async {
_itemsRequestModel.pHRItemName = itemName;
await baseAppClient.post(
PHARMACY_ITEMS_URL,
onSuccess: (dynamic response, int statusCode) {
_pharmacyItemsList.clear();
_pharmacyItemsList = response['ListPharmcy_Region_enh'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _itemsRequestModel.toJson(),
);
}
Future getPharmaciesList(int itemId) async {
_listRequestModel.itemID = itemId;
await baseAppClient.post(
PHARMACY_LIST_URL,
onSuccess: (dynamic response, int statusCode) {
_pharmaciesList.clear();
_pharmaciesList = response['PharmList'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _listRequestModel.toJson(),
);
}
}

@ -0,0 +1,65 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/verify_referral_doctor_remarks.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
class ReferredPatientService extends BaseService {
List<MyReferredPatientModel> _listMyReferredPatientModel = [];
List<MyReferredPatientModel> get listMyReferredPatientModel =>
_listMyReferredPatientModel;
Helpers helpers = Helpers();
RequestMyReferralPatientModel _requestMyReferralPatient =
RequestMyReferralPatientModel();
VerifyReferralDoctorRemarks _verifyreferraldoctorremarks =
VerifyReferralDoctorRemarks();
Future getMyReferredPatient() async {
await baseAppClient.post(
GET_MY_REFERRED_PATIENT,
onSuccess: (dynamic response, int statusCode) {
_listMyReferredPatientModel.clear();
response['List_MyReferredPatient'].forEach((v) {
listMyReferredPatientModel.add(MyReferredPatientModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _requestMyReferralPatient.toJson(),
);
}
Future verify(MyReferredPatientModel model) async {
_verifyreferraldoctorremarks.patientID = model.projectId;
_verifyreferraldoctorremarks.admissionNo = model.admissionNo;
_verifyreferraldoctorremarks.lineItemNo = model.lineItemNo;
_verifyreferraldoctorremarks.referredDoctorRemarks =
model.referredDoctorRemarks;
_verifyreferraldoctorremarks.referringDoctor = model.referringDoctor;
_verifyreferraldoctorremarks.firstName = model.firstName;
_verifyreferraldoctorremarks.middleName = model.middleName;
_verifyreferraldoctorremarks.lastName = model.lastName;
_verifyreferraldoctorremarks.patientMobileNumber = model.mobileNumber;
_verifyreferraldoctorremarks.patientIdentificationID =
model.patientIdentificationNo;
await baseAppClient.post(
GET_MY_REFERRED_PATIENT,
onSuccess: (dynamic response, int statusCode) {
listMyReferredPatientModel[listMyReferredPatientModel.indexOf(model)] =
model;
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _verifyreferraldoctorremarks.toJson(),
);
}
}

@ -0,0 +1,38 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/hospitals_model.dart';
import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart';
import 'package:doctor_app_flutter/core/service/hospital/hospitals_service.dart';
import 'package:doctor_app_flutter/core/service/medicine_service.dart';
import 'package:doctor_app_flutter/core/service/schedule_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_doctor_working_hours_table_model.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class MedicineViewModel extends BaseViewModel {
MedicineService _medicineService = locator<MedicineService>();
get pharmacyItemsList => _medicineService.pharmacyItemsList;
get pharmaciesList => _medicineService.pharmaciesList;
Future getMedicineItem(String itemName) async {
setState(ViewState.Busy);
await _medicineService.getMedicineItem(itemName);
if (_medicineService.hasError) {
error = _medicineService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getPharmaciesList(int itemId) async {
setState(ViewState.Busy);
await _medicineService.getPharmaciesList(itemId);
if (_medicineService.hasError) {
error = _medicineService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
}

@ -0,0 +1,40 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/hospitals_model.dart';
import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart';
import 'package:doctor_app_flutter/core/service/hospital/hospitals_service.dart';
import 'package:doctor_app_flutter/core/service/referral_patient_service.dart';
import 'package:doctor_app_flutter/core/service/referred_patient_service.dart';
import 'package:doctor_app_flutter/core/service/schedule_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_doctor_working_hours_table_model.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class ReferredPatientViewModel extends BaseViewModel {
ReferredPatientService _referralPatientService = locator<ReferredPatientService>();
List<MyReferredPatientModel> get listMyReferredPatientModel => _referralPatientService.listMyReferredPatientModel;
Future getMyReferredPatient() async {
setState(ViewState.Busy);
await _referralPatientService.getMyReferredPatient();
if (_referralPatientService.hasError) {
error = _referralPatientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future verify(MyReferredPatientModel model) async {
setState(ViewState.BusyLocal);
await _referralPatientService.verify(model);
if (_referralPatientService.hasError) {
error = _referralPatientService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
}

@ -2,11 +2,15 @@ import 'package:get_it/get_it.dart';
import 'core/service/doctor_reply_service.dart'; import 'core/service/doctor_reply_service.dart';
import 'core/service/hospital/hospitals_service.dart'; import 'core/service/hospital/hospitals_service.dart';
import 'core/service/medicine_service.dart';
import 'core/service/referral_patient_service.dart'; import 'core/service/referral_patient_service.dart';
import 'core/service/referred_patient_service.dart';
import 'core/service/schedule_service.dart'; import 'core/service/schedule_service.dart';
import 'core/viewModel/doctor_replay_view_model.dart'; import 'core/viewModel/doctor_replay_view_model.dart';
import 'core/viewModel/hospital_view_model.dart'; import 'core/viewModel/hospital_view_model.dart';
import 'core/viewModel/medicine_view_model.dart';
import 'core/viewModel/referral_view_model.dart'; import 'core/viewModel/referral_view_model.dart';
import 'core/viewModel/referred_view_model.dart';
import 'core/viewModel/schedule_view_model.dart'; import 'core/viewModel/schedule_view_model.dart';
GetIt locator = GetIt.instance; GetIt locator = GetIt.instance;
@ -18,10 +22,14 @@ void setupLocator() {
locator.registerLazySingleton(() => DoctorReplyService()); locator.registerLazySingleton(() => DoctorReplyService());
locator.registerLazySingleton(() => ScheduleService()); locator.registerLazySingleton(() => ScheduleService());
locator.registerLazySingleton(() => ReferralPatientService()); locator.registerLazySingleton(() => ReferralPatientService());
locator.registerLazySingleton(() => ReferredPatientService());
locator.registerLazySingleton(() => MedicineService());
/// View Model /// View Model
locator.registerFactory(() => HospitalViewModel()); locator.registerFactory(() => HospitalViewModel());
locator.registerFactory(() => DoctorReplayViewModel()); locator.registerFactory(() => DoctorReplayViewModel());
locator.registerFactory(() => ScheduleViewModel()); locator.registerFactory(() => ScheduleViewModel());
locator.registerFactory(() => ReferralPatientViewModel()); locator.registerFactory(() => ReferralPatientViewModel());
locator.registerFactory(() => ReferredPatientViewModel());
locator.registerFactory(() => MedicineViewModel());
} }

@ -1,5 +1,4 @@
import 'package:doctor_app_flutter/providers/livecare_provider.dart'; import 'package:doctor_app_flutter/providers/livecare_provider.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/project_provider.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -9,8 +8,8 @@ import 'package:provider/provider.dart';
import './config/size_config.dart'; import './config/size_config.dart';
import './providers/auth_provider.dart'; import './providers/auth_provider.dart';
import './providers/patients_provider.dart';
import './providers/hospital_provider.dart'; import './providers/hospital_provider.dart';
import './providers/patients_provider.dart';
import './routes.dart'; import './routes.dart';
import 'config/config.dart'; import 'config/config.dart';
import 'locator.dart'; import 'locator.dart';
@ -43,7 +42,6 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider<LiveCareProvider>( ChangeNotifierProvider<LiveCareProvider>(
create: (context) => LiveCareProvider(), create: (context) => LiveCareProvider(),
), ),
ChangeNotifierProvider<MedicineProvider>(create: (context) => MedicineProvider(),),
], ],
child: Consumer<ProjectProvider>( child: Consumer<ProjectProvider>(
builder: (context,projectProvider,child) => MaterialApp( builder: (context,projectProvider,child) => MaterialApp(

@ -1,78 +0,0 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/pharmacies/pharmacies_List_request_model.dart';
import 'package:doctor_app_flutter/models/pharmacies/pharmacies_items_request_model.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart';
class MedicineProvider with ChangeNotifier {
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
var pharmacyItemsList = [];
var pharmaciesList = [];
bool isFinished = true;
bool hasError = false;
String errorMsg = '';
BaseAppClient baseAppClient = BaseAppClient();
PharmaciesItemsRequestModel _itemsRequestModel =
PharmaciesItemsRequestModel();
PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel();
clearPharmacyItemsList() {
pharmacyItemsList.clear();
notifyListeners();
}
getMedicineItem(String itemName) async {
_itemsRequestModel.pHRItemName = itemName;
resetDefaultValues();
pharmacyItemsList.clear();
notifyListeners();
try {
await baseAppClient.post(PHARMACY_ITEMS_URL,
onSuccess: (dynamic response, int statusCode) {
pharmacyItemsList = response['ListPharmcy_Region_enh'];
hasError = false;
isFinished = true;
errorMsg = "Done";
}, onFailure: (String error, int statusCode) {
isFinished = true;
hasError = true;
errorMsg = error;
}, body: _itemsRequestModel.toJson());
notifyListeners();
} catch (error) {
throw error;
}
}
getPharmaciesList(int itemId) async {
resetDefaultValues();
try {
_listRequestModel.itemID = itemId;
isFinished = false;
await baseAppClient.post(PHARMACY_LIST_URL,
onSuccess: (dynamic response, int statusCode) {
pharmaciesList = response['PharmList'];
hasError = false;
isFinished = true;
errorMsg = "Done";
}, onFailure: (String error, int statusCode) {
isFinished = true;
hasError = true;
errorMsg = error;
}, body: _listRequestModel.toJson());
notifyListeners();
} catch (error) {
throw error;
}
}
resetDefaultValues() {
isFinished = false;
hasError = false;
errorMsg = '';
notifyListeners();
}
}

@ -1,77 +0,0 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/cupertino.dart';
class MyReferralPatientProvider with ChangeNotifier {
List<MyReferralPatientModel> listMyReferralPatientModel = [];
bool isLoading = true;
bool isError = false;
String error = '';
Helpers helpers = Helpers();
BaseAppClient baseAppClient = BaseAppClient();
RequestMyReferralPatientModel _requestMyReferralPatient = RequestMyReferralPatientModel();
RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks = RequestAddReferredDoctorRemarks();
MyReferralPatientProvider() {
getMyReferralPatient();
}
getMyReferralPatient() async {
try {
await baseAppClient.post(GET_MY_REFERRAL_PATIENT,
body: _requestMyReferralPatient.toJson(),
onSuccess: (dynamic response, int statusCode) {
response['List_MyReferralPatient'].forEach((v) {
listMyReferralPatientModel.add(MyReferralPatientModel.fromJson(v));
});
isError = false;
isLoading = false;
},
onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
},
);
notifyListeners();
} catch (error) {
isLoading = false;
isError = true;
this.error = 'Something wrong happened, please contact the admin';
notifyListeners();
}
}
Future replay(
String referredDoctorRemarks, MyReferralPatientModel model) async {
try {
_requestAddReferredDoctorRemarks.admissionNo = model.admissionNo;
_requestAddReferredDoctorRemarks.patientID = model.patientID;
_requestAddReferredDoctorRemarks.referredDoctorRemarks = referredDoctorRemarks;
_requestAddReferredDoctorRemarks.lineItemNo = model.lineItemNo;
_requestAddReferredDoctorRemarks.referringDoctor = model.referringDoctor;
await baseAppClient.post(ADD_REFERRED_DOCTOR_REMARKS,
body: _requestAddReferredDoctorRemarks.toJson(),
onSuccess: (dynamic body, int statusCode) {
model.referredDoctorRemarks = referredDoctorRemarks;
listMyReferralPatientModel[
listMyReferralPatientModel.indexOf(model)] = model;
notifyListeners();
},
onFailure: (String error, int statusCode) {
throw (error);
},
);
} catch (error) {
throw error;
}
}
}

@ -1,83 +0,0 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/doctor/verify_referral_doctor_remarks.dart';
import 'package:flutter/cupertino.dart';
import '../util/helpers.dart';
class MyReferredPatientProvider with ChangeNotifier {
List<MyReferredPatientModel> listMyReferredPatientModel = [];
bool isLoading = true;
bool isError = false;
String error = '';
Helpers helpers = Helpers();
RequestMyReferralPatientModel _requestMyReferralPatient = RequestMyReferralPatientModel();
VerifyReferralDoctorRemarks _verifyreferraldoctorremarks = VerifyReferralDoctorRemarks();
MyReferredPatientProvider() {
getMyReferralPatient();
}
BaseAppClient baseAppClient = BaseAppClient();
getMyReferralPatient() async {
try {
await baseAppClient.post(GET_MY_REFERRED_PATIENT,
body: _requestMyReferralPatient.toJson(),
onSuccess: (dynamic response, int statusCode) {
response['List_MyReferredPatient'].forEach((v) {
listMyReferredPatientModel.add(MyReferredPatientModel.fromJson(v));
});
isError = false;
isLoading = false;
},
onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
},
);
notifyListeners();
} catch (error) {
isLoading = false;
isError = true;
this.error = 'Something wrong happened, please contact the admin';
notifyListeners();
}
}
Future verify(
MyReferredPatientModel model) async {
try {
_verifyreferraldoctorremarks.patientID=model.projectId;
_verifyreferraldoctorremarks.admissionNo =model.admissionNo;
_verifyreferraldoctorremarks.lineItemNo = model.lineItemNo;
_verifyreferraldoctorremarks.referredDoctorRemarks=model.referredDoctorRemarks;
_verifyreferraldoctorremarks.referringDoctor=model.referringDoctor;
_verifyreferraldoctorremarks.firstName=model.firstName;
_verifyreferraldoctorremarks.middleName=model.middleName;
_verifyreferraldoctorremarks.lastName=model.lastName;
_verifyreferraldoctorremarks.patientMobileNumber=model.mobileNumber;
_verifyreferraldoctorremarks.patientIdentificationID=model.patientIdentificationNo;
await baseAppClient.post(GET_MY_REFERRED_PATIENT,
body: _verifyreferraldoctorremarks.toJson(),
onSuccess: (dynamic body, int statusCode) {
listMyReferredPatientModel[
listMyReferredPatientModel.indexOf(model)] = model;
notifyListeners();
},
onFailure: (String error, int statusCode) {
throw(error);
},
);
} catch (error) {
throw(error);
}
}
}

@ -6,9 +6,7 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart'; import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart';
import 'package:doctor_app_flutter/providers/auth_provider.dart'; import 'package:doctor_app_flutter/providers/auth_provider.dart';
import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/providers/hospital_provider.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/project_provider.dart';
import 'package:doctor_app_flutter/providers/referred_patient_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@ -745,10 +743,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
ChangeNotifierProvider( MedicineSearchScreen(),
create: (_) => MedicineProvider(),
child: MedicineSearchScreen(),
),
), ),
); );
}, },
@ -854,11 +849,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
ChangeNotifierProvider( MyReferredPatient(),
create: (_) =>
MyReferredPatientProvider(),
child: MyReferredPatient(),
),
), ),
); );
}, },

@ -1,42 +1,33 @@
import 'package:doctor_app_flutter/providers/referred_patient_provider.dart'; import 'package:doctor_app_flutter/core/viewModel/referred_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/doctor/my_referred_patient_widget.dart'; import 'package:doctor_app_flutter/widgets/doctor/my_referred_patient_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../widgets/shared/app_scaffold_widget.dart'; import '../../widgets/shared/app_scaffold_widget.dart';
class MyReferredPatient extends StatelessWidget { class MyReferredPatient extends StatelessWidget {
MyReferredPatientProvider referredPatientProvider;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
referredPatientProvider = Provider.of(context); return BaseView<ReferredPatientViewModel>(
return AppScaffold( onModelReady: (model) => model.getMyReferredPatient(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).myReferredPatient, appBarTitle: TranslationBase.of(context).myReferredPatient,
body: referredPatientProvider.isLoading body: model.listMyReferredPatientModel.length == 0
? DrAppCircularProgressIndeicator() ? Center(
: referredPatientProvider.isError child: AppText(
? Center( TranslationBase.of(context).errorNoSchedule,
child: AppText( color: Theme.of(context).errorColor,
referredPatientProvider.error, ),
color: Theme.of(context).errorColor, )
), : Container(
) padding: EdgeInsetsDirectional.fromSTEB(20, 0, 20, 0),
: referredPatientProvider.listMyReferredPatientModel.length == 0 child: ListView(
? Center( children: <Widget>[
child: AppText( Column(
TranslationBase.of(context).errorNoSchedule,
color: Theme.of(context).errorColor,
),
)
: Container(
padding: EdgeInsetsDirectional.fromSTEB(20, 0, 20, 0),
child: ListView(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
@ -45,11 +36,12 @@ class MyReferredPatient extends StatelessWidget {
Container( Container(
child: Column( child: Column(
//children: referredPatientProvider.listMyReferralPatientModel.map((item) { //children: referredPatientProvider.listMyReferralPatientModel.map((item) {
children: referredPatientProvider children: model
.listMyReferredPatientModel .listMyReferredPatientModel
.map((item) { .map((item) {
return MyReferredPatientWidget( return MyReferredPatientWidget(
myReferredPatientModel: item, myReferredPatientModel: item,
model:model
); );
}).toList(), }).toList(),
), ),
@ -59,6 +51,6 @@ class MyReferredPatient extends StatelessWidget {
], ],
), ),
), ),
); ));
} }
} }

@ -2,8 +2,9 @@ import 'dart:math';
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart'; import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
@ -14,10 +15,9 @@ import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_error.dart';
import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_recognition_result.dart';
import 'package:speech_to_text/speech_to_text.dart'; import 'package:speech_to_text/speech_to_text.dart';
@ -40,7 +40,6 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
final myController = TextEditingController(); final myController = TextEditingController();
Helpers helpers = new Helpers(); Helpers helpers = new Helpers();
bool _hasSpeech = false; bool _hasSpeech = false;
MedicineProvider _medicineProvider;
String _currentLocaleId = ""; String _currentLocaleId = "";
bool _isInit = true; bool _isInit = true;
final SpeechToText speech = SpeechToText(); final SpeechToText speech = SpeechToText();
@ -57,12 +56,6 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
if (_isInit) {
_medicineProvider = Provider.of<MedicineProvider>(context);
// requestPermissions();
// initSpeechState();
}
_isInit = false;
} }
void requestPermissions() async { void requestPermissions() async {
@ -92,7 +85,8 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<MedicineViewModel>(
builder: (_, model, w) => AppScaffold(
appBarTitle: TranslationBase.of(context).searchMedicine, appBarTitle: TranslationBase.of(context).searchMedicine,
body: FractionallySizedBox( body: FractionallySizedBox(
widthFactor: 0.97, widthFactor: 0.97,
@ -140,7 +134,7 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
controller: myController, controller: myController,
onSaved: (value) {}, onSaved: (value) {},
onFieldSubmitted: (value) { onFieldSubmitted: (value) {
searchMedicine(context); searchMedicine(context, model);
}, },
textInputAction: TextInputAction.search, textInputAction: TextInputAction.search,
// TODO return it back when it needed // TODO return it back when it needed
@ -165,109 +159,115 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
child: Wrap( child: Wrap(
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
// TODO change it secondary button and add loading
AppButton( AppButton(
title: TranslationBase.of(context).search, title: TranslationBase.of(context).search,
onPressed: () { onPressed: () {
searchMedicine(context); searchMedicine(context, model);
}, },
), ),
], ],
), ),
), ),
Container(
margin: EdgeInsets.only( NetworkBaseView(
left: SizeConfig.heightMultiplier * 2), baseViewModel: model,
child: Row( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: <Widget>[ Container(
AppText( margin: EdgeInsets.only(
TranslationBase.of(context).youCanFind + left: SizeConfig.heightMultiplier * 2),
_medicineProvider.pharmacyItemsList.length child: Row(
.toString() + crossAxisAlignment: CrossAxisAlignment.start,
" " + children: <Widget>[
TranslationBase.of(context).itemsInSearch, AppText(
fontWeight: FontWeight.bold, TranslationBase
), .of(context)
], .youCanFind +
), model.pharmacyItemsList.length
), .toString() +
Container( " " +
height: MediaQuery.of(context).size.height * 0.35, TranslationBase
child: Container( .of(context)
child: !_medicineProvider.isFinished .itemsInSearch,
? DrAppCircularProgressIndeicator() fontWeight: FontWeight.bold,
: _medicineProvider.hasError ),
? Center( ],
child: Text( ),
_medicineProvider.errorMsg, ),
style: TextStyle( Container(
color: height: MediaQuery
Theme.of(context).errorColor), .of(context)
), .size
) .height * 0.35,
: ListView.builder( child: Container(
scrollDirection: Axis.vertical, child: ListView.builder(
shrinkWrap: true, scrollDirection: Axis.vertical,
itemCount: shrinkWrap: true,
_medicineProvider.pharmacyItemsList == itemCount:
null model.pharmacyItemsList ==
? 0 null
: _medicineProvider ? 0
.pharmacyItemsList.length, : model
itemBuilder: .pharmacyItemsList.length,
(BuildContext context, int index) { itemBuilder:
return InkWell( (BuildContext context, int index) {
child: MedicineItemWidget( return InkWell(
label: _medicineProvider child: MedicineItemWidget(
.pharmacyItemsList[index] label: model
["ItemDescription"], .pharmacyItemsList[index]
url: _medicineProvider ["ItemDescription"],
.pharmacyItemsList[index] url: model
["ImageSRCUrl"], .pharmacyItemsList[index]
), ["ImageSRCUrl"],
onTap: () { ),
Navigator.push( onTap: () {
context, Navigator.push(
MaterialPageRoute( context,
builder: (context) => MaterialPageRoute(
PharmaciesListScreen( builder: (context) =>
itemID: _medicineProvider PharmaciesListScreen(
itemID: model
.pharmacyItemsList[ .pharmacyItemsList[
index]["ItemID"], index]["ItemID"],
url: _medicineProvider url: model
.pharmacyItemsList[ .pharmacyItemsList[
index]["ImageSRCUrl"]), index]["ImageSRCUrl"]),
), ),
);
},
); );
}, },
); ),
}, ),
), ),
), ],
), )),
], ],
), ),
), ),
], ],
), ),
), ),
)); ),),);
} }
searchMedicine(context) { searchMedicine(context, MedicineViewModel model) {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
if (myController.text.isNullOrEmpty()) { if (myController.text.isNullOrEmpty()) {
_medicineProvider.clearPharmacyItemsList(); helpers.showErrorToast(TranslationBase
helpers.showErrorToast(TranslationBase.of(context).typeMedicineName) ; .of(context)
.typeMedicineName);
//"Type Medicine Name") //"Type Medicine Name")
return; return;
} }
if (myController.text.length < 3) { if (myController.text.length < 3) {
_medicineProvider.clearPharmacyItemsList(); helpers.showErrorToast(TranslationBase
helpers.showErrorToast(TranslationBase.of(context).moreThan3Letter); .of(context)
.moreThan3Letter);
return; return;
} }
_medicineProvider.getMedicineItem(myController.text); model.getMedicineItem(myController.text);
} }
startVoiceSearch() { startVoiceSearch() {
@ -292,7 +292,7 @@ class _MedicineSearchState extends State<MedicineSearchScreen> {
lastStatus = ''; lastStatus = '';
myController.text = reconizedWord; myController.text = reconizedWord;
Future.delayed(const Duration(seconds: 2), () { Future.delayed(const Duration(seconds: 2), () {
searchMedicine(context); // searchMedicine(context);
}); });
}); });
} }

@ -2,14 +2,14 @@ import 'dart:convert';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart';
import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/project_provider.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart'; import 'package:maps_launcher/maps_launcher.dart';
@ -34,7 +34,6 @@ class PharmaciesListScreen extends StatefulWidget {
class _PharmaciesListState extends State<PharmaciesListScreen> { class _PharmaciesListState extends State<PharmaciesListScreen> {
var _data; var _data;
Helpers helpers = new Helpers(); Helpers helpers = new Helpers();
MedicineProvider _medicineProvider;
ProjectProvider projectsProvider; ProjectProvider projectsProvider;
bool _isInit = true; bool _isInit = true;
@ -43,47 +42,38 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
if (_isInit) {
_medicineProvider = Provider.of<MedicineProvider>(context);
pharmaciesList();
}
_isInit = false; _isInit = false;
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectsProvider = Provider.of(context); projectsProvider = Provider.of(context);
return AppScaffold( return BaseView<MedicineViewModel>(
onModelReady: (model) => model.getPharmaciesList(widget.itemID),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).pharmaciesList, appBarTitle: TranslationBase.of(context).pharmaciesList,
body: !_medicineProvider.isFinished body: Container(
? DrAppCircularProgressIndeicator()
: _medicineProvider.hasError
? Center(
child: Text(
_medicineProvider.errorMsg,
style: TextStyle(
color: Theme.of(context).errorColor),
),
)
:Container(
height: SizeConfig.screenHeight, height: SizeConfig.screenHeight,
child: ListView( child: ListView(
shrinkWrap: true, shrinkWrap: true,
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),
children: <Widget>[ children: <Widget>[
_medicineProvider.pharmaciesList.length >0 ?RoundedContainer( model.pharmaciesList.length > 0
child: Row( ? RoundedContainer(
children: <Widget>[ child: Row(
Expanded( children: <Widget>[
flex: 1, Expanded(
child: ClipRRect( flex: 1,
borderRadius: BorderRadius.all( child: ClipRRect(
Radius.circular(7)), borderRadius:
child: widget.url != null ?Image.network( BorderRadius.all(Radius.circular(7)),
widget.url, child: widget.url != null
height: ? Image.network(
SizeConfig.imageSizeMultiplier * widget.url,
height:
SizeConfig.imageSizeMultiplier *
21, 21,
width: width:
SizeConfig.imageSizeMultiplier * SizeConfig.imageSizeMultiplier *
@ -110,7 +100,7 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
AppText( AppText(
_medicineProvider.pharmaciesList[0]["ItemDescription"], model.pharmaciesList[0]["ItemDescription"],
marginLeft: 10, marginLeft: 10,
marginTop: 0, marginTop: 0,
marginRight: 10, marginRight: 10,
@ -125,7 +115,7 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
AppText( AppText(
_medicineProvider.pharmaciesList[0]["SellingPrice"] model.pharmaciesList[0]["SellingPrice"]
.toString(), .toString(),
marginLeft: 10, marginLeft: 10,
marginTop: 0, marginTop: 0,
@ -161,7 +151,8 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
itemCount: _medicineProvider.pharmaciesList == null ? 0 : _medicineProvider.pharmaciesList.length, itemCount: model.pharmaciesList == null ? 0 : model
.pharmaciesList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return RoundedContainer( return RoundedContainer(
child: Row( child: Row(
@ -170,13 +161,14 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
flex: 1, flex: 1,
child: ClipRRect( child: ClipRRect(
borderRadius: borderRadius:
BorderRadius.all(Radius.circular(7)), BorderRadius.all(Radius.circular(7)),
child: Image.network( child: Image.network(
_medicineProvider.pharmaciesList[index]["ProjectImageURL"], model
.pharmaciesList[index]["ProjectImageURL"],
height: height:
SizeConfig.imageSizeMultiplier * 15, SizeConfig.imageSizeMultiplier * 15,
width: width:
SizeConfig.imageSizeMultiplier * 15, SizeConfig.imageSizeMultiplier * 15,
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
@ -184,7 +176,8 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
Expanded( Expanded(
flex: 4, flex: 4,
child: AppText( child: AppText(
_medicineProvider.pharmaciesList[index]["LocationDescription"], model
.pharmaciesList[index]["LocationDescription"],
margin: 10, margin: 10,
), ),
), ),
@ -202,8 +195,10 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
Icons.call, Icons.call,
color: Colors.red, color: Colors.red,
), ),
onTap: () => launch("tel://" + onTap: () =>
_medicineProvider.pharmaciesList[index]["PhoneNumber"]), launch("tel://" +
model
.pharmaciesList[index]["PhoneNumber"]),
), ),
), ),
Padding( Padding(
@ -216,11 +211,13 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
onTap: () { onTap: () {
MapsLauncher.launchCoordinates( MapsLauncher.launchCoordinates(
double.parse( double.parse(
_medicineProvider.pharmaciesList[index]["Latitude"]), model
.pharmaciesList[index]["Latitude"]),
double.parse( double.parse(
_medicineProvider.pharmaciesList[index]["Longitude"]), model
_medicineProvider.pharmaciesList[index] .pharmaciesList[index]["Longitude"]),
["LocationDescription"]); model.pharmaciesList[index]
["LocationDescription"]);
}, },
), ),
), ),
@ -233,13 +230,10 @@ class _PharmaciesListState extends State<PharmaciesListScreen> {
}), }),
), ),
) )
]), ]),
)); ),),);
} }
pharmaciesList() async {
_medicineProvider.getPharmaciesList(widget.itemID);
}
Image imageFromBase64String(String base64String) { Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String)); return Image.memory(base64Decode(base64String));

@ -1,27 +1,22 @@
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/referred_view_model.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart'; import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/providers/referred_patient_provider.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart'; import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class MyReferredPatientWidget extends StatefulWidget { class MyReferredPatientWidget extends StatefulWidget {
final MyReferredPatientModel myReferredPatientModel; final MyReferredPatientModel myReferredPatientModel;
final ReferredPatientViewModel model;
MyReferredPatientWidget({Key key, this.myReferredPatientModel}); MyReferredPatientWidget({Key key, this.myReferredPatientModel, this.model});
@override @override
_MyReferredPatientWidgetState createState() => _MyReferredPatientWidgetState createState() =>
@ -293,23 +288,17 @@ class _MyReferredPatientWidgetState extends State<MyReferredPatientWidget> {
child: Button( child: Button(
onTap: () async { onTap: () async {
try { try {
setState(() {
_isLoading = true; await widget.model.verify(widget.myReferredPatientModel);
});
await Provider.of<MyReferredPatientProvider>(context, listen: false).verify(widget.myReferredPatientModel);
setState(() {
_isLoading = false;
});
DrAppToastMsg.showSuccesToast('Verify Successfully'); DrAppToastMsg.showSuccesToast('Verify Successfully');
} catch (e) { } catch (e) {
setState(() {
_isLoading = false;
});
DrAppToastMsg.showErrorToast(e); DrAppToastMsg.showErrorToast(e);
} }
}, },
title: TranslationBase.of(context).verify, title: TranslationBase.of(context).verify,
loading: _isLoading, loading: widget.model.state == ViewState.BusyLocal,
), ),
) )
], ],

Loading…
Cancel
Save