add filtration on level of clinic

merge-requests/829/head
Elham Rababh 5 years ago
parent 8fc4b1596b
commit 9317173c05

@ -186,30 +186,48 @@ class PatientSearchViewModel extends BaseViewModel {
}
} else {
setDefaultInPatientList();
generateMyInpatientClinicList();
setState(ViewState.Idle);
}
}
sortInPatient({bool isDes = false}) {
if (isDes)
filteredInPatientItems.sort((PatiantInformtion a, PatiantInformtion b) =>
b.admissionDateWithDateTimeForm
.compareTo(a.admissionDateWithDateTimeForm));
else
filteredInPatientItems.sort((PatiantInformtion a, PatiantInformtion b) =>
a.admissionDateWithDateTimeForm
.compareTo(b.admissionDateWithDateTimeForm));
sortInPatient({bool isDes = false, bool isAllClinic}) {
if (isAllClinic
? inPatientList.length > 0
: filteredInPatientItems.length > 0) {
List<PatiantInformtion> localInPatient =
isAllClinic ? [...inPatientList] : [...filteredInPatientItems];
if (isDes)
localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => b
.admissionDateWithDateTimeForm
.compareTo(a.admissionDateWithDateTimeForm));
else
localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => a
.admissionDateWithDateTimeForm
.compareTo(b.admissionDateWithDateTimeForm));
if (isAllClinic) {
resetInPatientPagination();
filteredInPatientItems
.addAll(localInPatient.sublist(firstSubsetIndex, lastSubsetIndex));
} else {
filteredInPatientItems.clear();
filteredInPatientItems.addAll(localInPatient);
}
}
setState(ViewState.Idle);
}
Future setDefaultInPatientList() async {
setState(ViewState.BusyLocal);
await getDoctorProfile();
resetInPatientPagination() {
filteredInPatientItems.clear();
firstSubsetIndex = 0;
lastSubsetIndex = inPatientPageSize - 1;
}
Future setDefaultInPatientList() async {
setState(ViewState.BusyLocal);
await getDoctorProfile();
resetInPatientPagination();
if (inPatientList.length > 0)
filteredInPatientItems
.addAll(inPatientList.sublist(firstSubsetIndex, lastSubsetIndex));
@ -218,7 +236,7 @@ class PatientSearchViewModel extends BaseViewModel {
generateMyInpatientClinicList() {
inPatientList.forEach((element) {
if(!myInpatientClinicList.contains(element.clinicDescription)) {
if (!myInpatientClinicList.contains(element.clinicDescription)) {
myInpatientClinicList.add(element.clinicDescription);
}
});
@ -240,8 +258,7 @@ class PatientSearchViewModel extends BaseViewModel {
}
}
filterByHospital({ int hospitalId}) {
filterByHospital({int hospitalId}) {
filteredInPatientItems = [];
for (var i = 0; i < inPatientList.length; i++) {
if (inPatientList[i].projectId == hospitalId) {
@ -251,7 +268,7 @@ class PatientSearchViewModel extends BaseViewModel {
notifyListeners();
}
filterByClinic({ String clinicName}) {
filterByClinic({String clinicName}) {
filteredInPatientItems = [];
for (var i = 0; i < inPatientList.length; i++) {
if (inPatientList[i].clinicDescription == clinicName) {
@ -266,28 +283,61 @@ class PatientSearchViewModel extends BaseViewModel {
_inPatientService.myInPatientList = [];
}
void filterSearchResults(String query) {
void filterSearchResults(String query, {bool isAllClinic}) {
var strExist = query.length > 0 ? true : false;
if (strExist) {
filteredInPatientItems = [];
for (var i = 0; i < inPatientList.length; i++) {
String firstName = inPatientList[i].firstName.toUpperCase();
String lastName = inPatientList[i].lastName.toUpperCase();
String mobile = inPatientList[i].mobileNumber.toUpperCase();
String patientID = inPatientList[i].patientId.toString();
if (firstName.contains(query.toUpperCase()) ||
lastName.contains(query.toUpperCase()) ||
mobile.contains(query) ||
patientID.contains(query)) {
filteredInPatientItems.add(inPatientList[i]);
if (isAllClinic) {
if (strExist) {
filteredInPatientItems = [];
for (var i = 0; i < inPatientList.length; i++) {
String firstName = inPatientList[i].firstName.toUpperCase();
String lastName = inPatientList[i].lastName.toUpperCase();
String mobile = inPatientList[i].mobileNumber.toUpperCase();
String patientID = inPatientList[i].patientId.toString();
if (firstName.contains(query.toUpperCase()) ||
lastName.contains(query.toUpperCase()) ||
mobile.contains(query) ||
patientID.contains(query)) {
filteredInPatientItems.add(inPatientList[i]);
}
}
notifyListeners();
} else {
if (inPatientList.length > 0) filteredInPatientItems.clear();
filteredInPatientItems.addAll(inPatientList);
notifyListeners();
}
notifyListeners();
} else {
if (inPatientList.length > 0) filteredInPatientItems.clear();
filteredInPatientItems.addAll(inPatientList);
notifyListeners();
List<PatiantInformtion> localFilteredInPatientItems = [
...filteredInPatientItems
];
if (strExist) {
filteredInPatientItems.clear();
for (var i = 0; i < localFilteredInPatientItems.length; i++) {
String firstName =
localFilteredInPatientItems[i].firstName.toUpperCase();
String lastName =
localFilteredInPatientItems[i].lastName.toUpperCase();
String mobile =
localFilteredInPatientItems[i].mobileNumber.toUpperCase();
String patientID =
localFilteredInPatientItems[i].patientId.toString();
if (firstName.contains(query.toUpperCase()) ||
lastName.contains(query.toUpperCase()) ||
mobile.contains(query) ||
patientID.contains(query)) {
filteredInPatientItems.add(localFilteredInPatientItems[i]);
}
}
notifyListeners();
} else {
if (localFilteredInPatientItems.length > 0)
filteredInPatientItems.clear();
filteredInPatientItems.addAll(localFilteredInPatientItems);
notifyListeners();
}
}
}

@ -30,6 +30,7 @@ class _InPatientListPageState extends State<InPatientListPage> {
bool isSortDes = false;
bool isAllClinic = true;
bool hasQuery = false;
bool showBottomSheet = false;
String selectedClinicName;
@ -47,11 +48,8 @@ class _InPatientListPageState extends State<InPatientListPage> {
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Container(
// height: MediaQuery.of(context).size.height * 0.070,
// ),
Container(
margin: EdgeInsets.symmetric(horizontal: 14.0, vertical: 10),
margin: EdgeInsets.only(left: 10.0,right: 10, top: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -73,7 +71,10 @@ class _InPatientListPageState extends State<InPatientListPage> {
},
activeColor: Colors.red,
),
AppText("All Clinic", fontSize: 15,),
AppText(
"All Clinic",
fontSize: 15,
),
],
),
onTap: () {
@ -106,7 +107,10 @@ class _InPatientListPageState extends State<InPatientListPage> {
},
activeColor: Colors.red,
),
AppText(selectedClinicName ?? "Select Clinic", fontSize: 15,),
AppText(
selectedClinicName ?? "Select Clinic",
fontSize: 15,
),
Container(
margin: EdgeInsets.only(bottom: 10),
child: Icon(FontAwesomeIcons.sortDown))
@ -116,7 +120,7 @@ class _InPatientListPageState extends State<InPatientListPage> {
),
),
Container(
margin: EdgeInsets.all(16.0),
margin: EdgeInsets.only(left: 16, right: 16, bottom: 16, top:5),
child: Stack(
children: [
AppTextFieldCustom(
@ -131,7 +135,11 @@ class _InPatientListPageState extends State<InPatientListPage> {
),
controller: _searchController,
onChanged: (value) {
widget.patientSearchViewModel.filterSearchResults(value);
setState(() {
hasQuery = true;
});
widget.patientSearchViewModel
.filterSearchResults(value, isAllClinic: isAllClinic);
}),
Positioned(
right: 35,
@ -148,7 +156,7 @@ class _InPatientListPageState extends State<InPatientListPage> {
onPressed: () {
GifLoaderDialogUtils.showMyDialog(context);
widget.patientSearchViewModel
.sortInPatient(isDes: isSortDes);
.sortInPatient(isDes: isSortDes, isAllClinic:isAllClinic);
isSortDes = !isSortDes;
GifLoaderDialogUtils.hideDialog(context);
},
@ -277,7 +285,7 @@ class _InPatientListPageState extends State<InPatientListPage> {
return SizedBox();
}),
onNotification: (t) {
if (isAllClinic) if (t
if (isAllClinic && !hasQuery) if (t
is ScrollUpdateNotification &&
t.metrics.pixels >=
t.metrics.maxScrollExtent - 50) {

Loading…
Cancel
Save