Refactoring some issues in procedures screen

merge-requests/985/head
RoaaGhali98 4 years ago
parent d743c2c99c
commit e85a32274a

@ -24,7 +24,6 @@ import 'package:doctor_app_flutter/screens/procedures/ProcedureType.dart';
import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:flutter/cupertino.dart';
import '../../widgets/shared/loader/gif_loader_dialog_utils.dart';
class ProcedureViewModel extends BaseViewModel {
//TODO Hussam clean it
@ -68,8 +67,24 @@ class ProcedureViewModel extends BaseViewModel {
List<ProcedureTempleteDetailsModel> get procedureTemplateDetails =>
_procedureService.templateDetailsList;
List<PatientLabOrdersList> _patientLabOrdersListClinic = List();
List<PatientLabOrdersList> _patientLabOrdersListHospital = List();
Future filterSearchResults(String query,List<cpe.EntityList> masterList, List<cpe.EntityList> items) async {
List<cpe.EntityList> dummySearchList = List();
dummySearchList.addAll(masterList);
if (query.isNotEmpty) {
List<cpe.EntityList> dummyListData = List();
dummySearchList.forEach((item) {
if (item.procedureName.toLowerCase().contains(query.toLowerCase())) {
dummyListData.add(item);
}
});
items.clear();
items.addAll(dummyListData);
} else {
items.clear();
items.addAll(masterList);
}
}
Future getProcedure({int mrn, String patientType, int appointmentNo}) async {
hasError = false;
@ -433,4 +448,12 @@ class ProcedureViewModel extends BaseViewModel {
Utils.showErrorToast(error);
}
}
bool isEntityListSelected(cpe.EntityList masterKey, List<cpe.EntityList> entityList) {
Iterable<cpe.EntityList> history = entityList.where((element) => masterKey.procedureId == element.procedureId);
if (history.length > 0) {
return true;
}
return false;
}
}

@ -167,7 +167,7 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
// widget.addSelectedHistories();
},
isEntityListSelected: (master) =>
isEntityListSelected(master),
widget.model.isEntityListSelected(master,entityList),
)),
],
),
@ -210,15 +210,4 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
),
);
}
///TODO Elham* move it to view model
bool isEntityListSelected(EntityList masterKey) {
Iterable<EntityList> history = entityList
.where((element) => masterKey.procedureId == element.procedureId);
if (history.length > 0) {
return true;
}
return false;
}
}

@ -4,12 +4,10 @@ import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription/add_prescription.dart';
import 'package:doctor_app_flutter/screens/procedures/tab_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../core/viewModel/project_view_model.dart';
import '../../utils/tab_utils.dart';
import 'ProcedureType.dart';
import 'add-favourite-procedure.dart';
import 'add-procedure-page.dart';
@ -94,7 +92,7 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
top: 0, left: 0, right: 0, bottom: 0),
unselectedLabelColor: Colors.grey[800],
tabs: [
tabWidget(
TabWidget.tabWidget(
screenSize,
_activeTab == 0,
@ -102,7 +100,7 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
.getFavouriteTabName(context),
isFirst: true,context: context
),
tabWidget(
TabWidget.tabWidget(
screenSize,
_activeTab == 1,
procedureType.getAllLabelName(context),
@ -148,41 +146,4 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
),
);
}
///TODO Elham* move it to new file
Widget tabWidget(
Size screenSize,
bool isActive,
String title, {
int counter = -1,
bool isFirst = false,
bool isMiddle = false,
bool isLast = false,
context,
}) {
ProjectViewModel projectViewModel = Provider.of(context);
return Center(
child: Container(
height: TabUtils.getTabHeight(context),
decoration: TabUtils.getBoxTabsBoxDecoration(
isActive: isActive,
isFirst: isFirst,
isMiddle: isMiddle,
isLast: isLast,
projectViewModel: projectViewModel),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TabUtils.getTabText(title: title, isActive: isActive),
if (counter != -1)
TabUtils.getTabCounter(isActive: isActive, counter: counter)
],
),
),
);
}
}

@ -84,7 +84,7 @@ class _EntityListCheckboxSearchWidgetState
suffixIcon: EvaIcons.search,
suffixIconColor: Color(0xff2B353E),
onChanged: (value) {
filterSearchResults(value);
widget.model.filterSearchResults(value, widget.masterList, items);
},
hasBorder: false,
),
@ -246,29 +246,4 @@ class _EntityListCheckboxSearchWidgetState
),
);
}
///TODO Elham* move it to view model
void filterSearchResults(String query) {
List<EntityList> dummySearchList = List();
dummySearchList.addAll(widget.masterList);
if (query.isNotEmpty) {
List<EntityList> dummyListData = List();
dummySearchList.forEach((item) {
if (item.procedureName.toLowerCase().contains(query.toLowerCase())) {
dummyListData.add(item);
}
});
setState(() {
items.clear();
items.addAll(dummyListData);
});
return;
} else {
setState(() {
items.clear();
items.addAll(widget.masterList);
});
}
}
}

@ -85,12 +85,12 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
SizedBox(
height: 30,
),
///TODO Elham* user view list builder
...List.generate(
widget.items.length,
(index) => Container(
ListView.builder(
scrollDirection: Axis.vertical,
itemCount: widget.items.length,
shrinkWrap: true,
itemBuilder: (BuildContext ctxt, int index) {
return Container(
margin: EdgeInsets.only(bottom: 15.0),
decoration: BoxDecoration(
color: Colors.white,
@ -109,8 +109,8 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
width: 6.0,
),
Expanded(
child: AppText(
widget.items[index].procedureName)),
child:
AppText(widget.items[index].procedureName)),
],
),
children: [
@ -126,8 +126,7 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
padding: const EdgeInsets.symmetric(
horizontal: 11),
child: AppText(
TranslationBase.of(context)
.orderType,
TranslationBase.of(context).orderType,
fontWeight: FontWeight.w700,
color: Color(0xff2B353E),
),
@ -142,8 +141,7 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
groupValue:
widget.items[index].selectedType,
onChanged: (value) {
widget.items[index].selectedType =
0;
widget.items[index].selectedType = 0;
setState(() {
widget.items[index].type =
value.toString();
@ -161,8 +159,7 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
widget.items[index].selectedType,
value: 1,
onChanged: (value) {
widget.items[index].selectedType =
1;
widget.items[index].selectedType = 1;
setState(() {
widget.items[index].type =
value.toString();
@ -204,7 +201,9 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
//DividerWithSpacesAround(),
],
),
)),
);
}),
SizedBox(
height: 90,
),
@ -222,9 +221,17 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
color: AppGlobal.appGreenColor,
fontWeight: FontWeight.w700,
onPressed: () async {
addProcedures(model);
},
),
],
),
),
),
);
}
///TODO Elham* move it to function
Future addProcedures(ProcedureViewModel model) async {
List<EntityList> entityList = List();
widget.items.forEach((element) {
entityList.add(
@ -247,12 +254,5 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
remarks: remarksController.text);
Navigator.pop(context);
Navigator.pop(context);
},
),
],
),
),
),
);
}
}

@ -127,11 +127,14 @@ class ProcedureScreen extends StatelessWidget {
),
),
if (model.procedureList.isNotEmpty)
///TODO Elham* use list view builder
...List.generate(
model.procedureList[0].rowcount,
(index) => ProcedureCard(
categoryID: model.procedureList[0].entityList[index].categoryID,
ListView.builder(
scrollDirection: Axis.vertical,
itemCount: model.procedureList[0].rowcount,
shrinkWrap: true,
itemBuilder: (BuildContext ctxt, int index) {
return ProcedureCard(
categoryID: model
.procedureList[0].entityList[index].categoryID,
entityList: model.procedureList[0].entityList[index],
onTap: () {
if (model.procedureList[0].entityList[index].categoryID ==
@ -140,30 +143,30 @@ class ProcedureScreen extends StatelessWidget {
updateProcedureForm(context,
model: model,
patient: patient,
remarks: model
.procedureList[0].entityList[index].remarks,
orderType: model
.procedureList[0].entityList[index].orderType
remarks: model.procedureList[0]
.entityList[index].remarks,
orderType: model.procedureList[0]
.entityList[index].orderType
.toString(),
orderNo: model
.procedureList[0].entityList[index].orderNo,
orderNo: model.procedureList[0]
.entityList[index].orderNo,
procedureName: model.procedureList[0]
.entityList[index].procedureName,
categoreId: model
.procedureList[0].entityList[index].categoryID
categoreId: model.procedureList[0]
.entityList[index].categoryID
.toString(),
procedureId: model.procedureList[0]
.entityList[index].procedureId,
limetNo: model.procedureList[0].entityList[index]
.lineItemNo);
limetNo: model.procedureList[0]
.entityList[index].lineItemNo);
// } else
// Helpers.showErrorToast(
// 'You Cant Update This Procedure');
},
patient: patient,
doctorID: model?.doctorProfile?.doctorID,
),
),
);
}),
if (model.state == ViewState.ErrorLocal ||
(model.procedureList.isNotEmpty &&
model.procedureList[0].entityList.isEmpty))

@ -0,0 +1,41 @@
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/utils/tab_utils.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class TabWidget {
static Widget tabWidget(
Size screenSize,
bool isActive,
String title,
{
int counter = -1,
bool isFirst = false,
bool isMiddle = false,
bool isLast = false,
context,
}) {
ProjectViewModel projectViewModel = Provider.of(context);
return Center(
child: Container(
height: TabUtils.getTabHeight(context),
decoration: TabUtils.getBoxTabsBoxDecoration(
isActive: isActive,
isFirst: isFirst,
isMiddle: isMiddle,
isLast: isLast,
projectViewModel: projectViewModel),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TabUtils.getTabText(title: title, isActive: isActive),
if (counter != -1)
TabUtils.getTabCounter(isActive: isActive, counter: counter)
],
),
),
);
}
}

@ -265,15 +265,4 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
model.getProcedure(mrn: patient.patientMRN);
}
}
///TODO Elham* move it to view model
bool isEntityListSelected(EntityList masterKey) {
Iterable<EntityList> history = entityList
.where((element) => masterKey.procedureId == element.procedureId);
if (history.length > 0) {
return true;
}
return false;
}
}

Loading…
Cancel
Save