implemented search by doctor list

find_us
haroon amjad 5 years ago
parent 13adb46319
commit 35cd02494c

@ -363,7 +363,7 @@ const Map<String, Map<String, String>> localizedValues = {
"consultation": {"en": "Consultation", "ar": "استشارة"},
"logs": {"en": "Logs", "ar": "السجلات"},
"textToSpeech": {"en": "How May I Help You?", "ar": "كيف يمكنني مساعدتك؟"},
"locationDialogMessage": {"en": "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.", "ar": "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك."}
"locationDialogMessage": {"en": "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.", "ar": "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك."},
"parking":{"en":"Parking","ar":"مواقف"},
"alhabiServices":{"en":"HMG Service","ar":"خدمات الحبيب"},
"parkingTitle":{"en":"Car service, car service, service to save parking information, return to it later, 1- By clicking on (Read the code), save the parking data. 2- By clicking on the button (view my car park), it shows you the cars location in Google Maps. 3- Read another position by pressing the Clear Position Data button.","ar":" خدمة المواقف، تتيح هذه الخدمة للمستخدم معلومات عن موقف السيارة ليسهل عليه العودة لها لاحقاً ، 1- بالضغط على زر(قراءة الكود) تستطيع حفظ البيانات الخاصة بالموقف. 2-بالضغط على زر(عرض موقف سيارتي) يعرض لك موقع السيارة في خرائط قوقل. 3- لإعادة قراءة موقف آخرعن طريق الضغط على زر(مسح بيانات الموقف). "},
@ -374,6 +374,5 @@ const Map<String, Map<String, String>> localizedValues = {
"gate":{"en":"Gate:","ar":"بوابة"},
"building":{"en":"Building:","ar":"المبنى"},
"branch":{"en":"Branch:","ar":"الفرع"},
"emergencyServices":{"en":"Emergency Services:","ar":"خدمات الطوارئ"},
"textToSpeech": {"en": "How May I Help You?", "ar": "كيف يمكنني مساعدتك؟"}
"emergencyServices":{"en":"Emergency Services:","ar":"خدمات الطوارئ"}
};

@ -41,44 +41,44 @@ class DoctorList {
DoctorList(
{this.clinicID,
this.clinicName,
this.doctorTitle,
this.iD,
this.name,
this.projectID,
this.projectName,
this.actualDoctorRate,
this.clinicRoomNo,
this.date,
this.dayName,
this.doctorID,
this.doctorImageURL,
this.doctorProfile,
this.doctorProfileInfo,
this.doctorRate,
this.gender,
this.genderDescription,
this.isAppointmentAllowed,
this.isDoctorAllowVedioCall,
this.isDoctorDummy,
this.isLiveCare,
this.latitude,
this.longitude,
this.nationalityFlagURL,
this.nationalityID,
this.nationalityName,
this.nearestFreeSlot,
this.noOfPatientsRate,
this.originalClinicID,
this.personRate,
this.projectDistanceInKiloMeters,
this.qR,
this.qRString,
this.rateNumber,
this.serviceID,
this.setupID,
this.speciality,
this.workingHours});
this.clinicName,
this.doctorTitle,
this.iD,
this.name,
this.projectID,
this.projectName,
this.actualDoctorRate,
this.clinicRoomNo,
this.date,
this.dayName,
this.doctorID,
this.doctorImageURL,
this.doctorProfile,
this.doctorProfileInfo,
this.doctorRate,
this.gender,
this.genderDescription,
this.isAppointmentAllowed,
this.isDoctorAllowVedioCall,
this.isDoctorDummy,
this.isLiveCare,
this.latitude,
this.longitude,
this.nationalityFlagURL,
this.nationalityID,
this.nationalityName,
this.nearestFreeSlot,
this.noOfPatientsRate,
this.originalClinicID,
this.personRate,
this.projectDistanceInKiloMeters,
this.qR,
this.qRString,
this.rateNumber,
this.serviceID,
this.setupID,
this.speciality,
this.workingHours});
DoctorList.fromJson(Map<String, dynamic> json) {
clinicID = json['ClinicID'];
@ -166,3 +166,13 @@ class DoctorList {
return data;
}
}
class PatientDoctorAppointmentList {
String filterName = "";
List<DoctorList> patientDoctorAppointmentList = List();
PatientDoctorAppointmentList(
{this.filterName, DoctorList patientDoctorAppointment}) {
patientDoctorAppointmentList.add(patientDoctorAppointment);
}
}

@ -8,8 +8,10 @@ import 'package:flutter/material.dart';
class SearchResults extends StatefulWidget {
List<DoctorList> doctorsList = [];
List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital;
SearchResults({@required this.doctorsList});
SearchResults(
{@required this.doctorsList, this.patientDoctorAppointmentListHospital});
@override
_SearchResultsState createState() => _SearchResultsState();
@ -21,23 +23,7 @@ class _SearchResultsState extends State<SearchResults> {
@override
void initState() {
event.controller.stream.listen((p) {
// if (p['project_id'] != null) {
// tempList = [];
// widget.doctorsList.forEach((e) => {
// if (e.projectID == int.parse(p['project_id'])) {tempList.add(e)}
// });
// } else if (p['doctor_id'] != null) {
// tempList = [];
// widget.doctorsList.forEach((e) => {
// if (e.doctorID == int.parse(p['doctor_id'])) {tempList.add(e)}
// });
// DoctorView().getDoctorsProfile(context, tempList[0], isAppo: true);
// }
// setState(() {
// widget.doctorsList = tempList;
// });
});
event.controller.stream.listen((p) {});
super.initState();
}
@ -50,50 +36,28 @@ class _SearchResultsState extends State<SearchResults> {
margin: EdgeInsets.only(bottom: 10.0),
child: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: FractionallySizedBox(
widthFactor: 1.0,
child: Column(
children: <Widget>[
...List.generate(
widget.doctorsList.length,
(index) => AppExpandableNotifier(
title: widget.doctorsList[index].projectName,
child: Column(
children: <Widget>[
...List.generate(
widget.patientDoctorAppointmentListHospital.length,
(index) => AppExpandableNotifier(
title: widget
.patientDoctorAppointmentListHospital[index].filterName,
bodyWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: widget.doctorsList.map((doctorObj) {
children: widget
.patientDoctorAppointmentListHospital[index]
.patientDoctorAppointmentList
.map((doctor) {
return DoctorView(
doctor: doctorObj,
doctor: doctor,
);
}).toList(),
),
),
)
],
),
)),
)
],
),
// ListView.builder(
// scrollDirection: Axis.vertical,
// shrinkWrap: true,
// physics: ScrollPhysics(),
// padding: EdgeInsets.all(0.0),
// itemCount: widget.doctorsList.length,
// itemBuilder: (context, index) {
// return AppExpandableNotifier(
// title: widget.doctorsList[index].projectName,
// bodyWidget: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: widget.doctorsList.map((labOrder) {
// return DoctorView(
// doctor: widget.doctorsList[index],
// );
// }).toList(),
// ),
// );
// },
// ),
),
),
);

@ -125,14 +125,6 @@ class _SearchByClinicState extends State<SearchByClinic> {
arrDistance.add(new DoctorList.fromJson(v)
.projectDistanceInKiloMeters
.toString());
// print(DoctorList
// .fromJson(v)
// .projectName);
// print(DoctorList
// .fromJson(v)
// .projectDistanceInKiloMeters);
// distinctIds = result.toSet().toList();
});
} else {}
});

@ -84,6 +84,10 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
getDoctorsList(BuildContext context) {
List<DoctorList> doctorsList = [];
DoctorsListService service = new DoctorsListService();
List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital =
List();
service
.getDoctorsListByName(doctorNameController.text, context)
.then((res) {
@ -93,9 +97,34 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
res['DoctorList'].forEach((v) {
doctorsList.add(new DoctorList.fromJson(v));
});
doctorsList.forEach((element) {
List<PatientDoctorAppointmentList> doctorByHospital =
_patientDoctorAppointmentListHospital
.where(
(elementClinic) =>
elementClinic.filterName == element.projectName,
)
.toList();
if (doctorByHospital.length != 0) {
_patientDoctorAppointmentListHospital[
_patientDoctorAppointmentListHospital
.indexOf(doctorByHospital[0])]
.patientDoctorAppointmentList
.add(element);
} else {
_patientDoctorAppointmentListHospital.add(
PatientDoctorAppointmentList(
filterName: element.projectName,
patientDoctorAppointment: element));
}
});
} else {}
});
navigateToSearchResults(context, doctorsList);
navigateToSearchResults(
context, doctorsList, _patientDoctorAppointmentListHospital);
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
@ -107,7 +136,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
_onDocTextChanged(content) {
print(content);
if (content.length >= 4) {
if (content.length >= 3) {
setState(() {
_isButtonDisabled = false;
});
@ -123,10 +152,17 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
getDoctorsList(context);
}
Future navigateToSearchResults(context, List<DoctorList> docList) async {
Future navigateToSearchResults(
context,
List<DoctorList> docList,
List<PatientDoctorAppointmentList>
patientDoctorAppointmentListHospital) async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SearchResults(doctorsList: docList)));
builder: (context) => SearchResults(
doctorsList: docList,
patientDoctorAppointmentListHospital:
patientDoctorAppointmentListHospital)));
}
}

@ -82,13 +82,9 @@ class _ExpandableListViewState extends State<ExpandableListView> {
children: <Widget>[
new Text(
widget.result2[widget.val].toString() +
" " +
widget.resultDistance[widget.val]
.toString() !=
"0"
? getProjectDistance(
widget.resultDistance[widget.val].toString())
: "",
" " +
getProjectDistance(
widget.resultDistance[widget.val].toString()),
style: new TextStyle(
fontWeight: FontWeight.bold, color: Colors.black),
),
@ -148,7 +144,11 @@ class _ExpandableListViewState extends State<ExpandableListView> {
}
String getProjectDistance(String distance) {
return " - " + distance + " KM";
if (distance != "0")
return " - " + distance + " KMs";
else {
return "";
}
}
}

Loading…
Cancel
Save