fix get and post issue to make it works with vida

merge-requests/241/head
Elham Rababah 5 years ago
parent 7ce1d2dd55
commit a46a61c5cf

@ -44,6 +44,7 @@ class BaseAppClient {
body['DoctorID'] = doctorProfile?.doctorID;
if (body['DoctorID'] == "")
body['DoctorID'] = null;
if( body['EditedBy'] ==null)
body['EditedBy'] = doctorProfile?.doctorID;
if (body['ProjectID'] == null) {
body['ProjectID'] = doctorProfile?.projectID;
@ -54,6 +55,9 @@ class BaseAppClient {
if (body['DoctorID'] == '') {
body['DoctorID'] =null;
}
if (body['EditedBy'] == '') {
body.remove("EditedBy");
}
body['TokenID'] = token ?? '';
String lang = await sharedPref.getString(APP_Language);
if (lang != null && lang == 'ar')

@ -538,4 +538,7 @@ const Map<String, Map<String, String>> localizedValues = {
},
'addAssessment': {'en': "Add ASSESSMENT", 'ar':"أضف التقييم" },
'assessment': {'en': "ASSESSMENT", 'ar':" التقييم" },
'physicalSystemExamination': {'en': "Physical/System Examination", 'ar':" الفحص البدني / النظام" },
'searchExamination': {'en': "Search Examination", 'ar':"فحص البحث" },
'addExamination': {'en': "Add Examination", 'ar':"اضافه" },
};

@ -3,16 +3,19 @@ class GetChiefComplaintReqModel {
int appointmentNo;
int episodeId;
int episodeID;
dynamic doctorID;
GetChiefComplaintReqModel(
{this.patientMRN, this.appointmentNo, this.episodeId, this.episodeID});
{this.patientMRN, this.appointmentNo, this.episodeId, this.episodeID, this.doctorID});
GetChiefComplaintReqModel.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
appointmentNo = json['AppointmentNo'];
episodeId = json['EpisodeId'];
episodeID = json['EpisodeID'];
}
doctorID = json['DoctorID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
@ -20,6 +23,8 @@ class GetChiefComplaintReqModel {
data['AppointmentNo'] = this.appointmentNo;
data['EpisodeId'] = this.episodeId;
data['EpisodeID'] = this.episodeID;
data['DoctorID'] = this.doctorID;
return data;
}
}

@ -2,16 +2,23 @@ class GeneralGetReqForSOAP {
int patientMRN;
int appointmentNo;
int episodeId;
String doctorID;
dynamic editedBy;
dynamic doctorID;
GeneralGetReqForSOAP(
{this.patientMRN, this.appointmentNo, this.episodeId, this.doctorID});
GeneralGetReqForSOAP({
this.patientMRN,
this.appointmentNo,
this.episodeId,
this.doctorID,
this.editedBy,
});
GeneralGetReqForSOAP.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
appointmentNo = json['AppointmentNo'];
episodeId = json['EpisodeId'];
doctorID = json['DoctorID'];
editedBy = json['EditedBy'];
}
Map<String, dynamic> toJson() {
@ -20,6 +27,8 @@ class GeneralGetReqForSOAP {
data['AppointmentNo'] = this.appointmentNo;
data['EpisodeId'] = this.episodeId;
data['DoctorID'] = this.doctorID;
data['EditedBy'] = this.editedBy;
return data;
}
}

@ -5,8 +5,9 @@ class GetHistoryReqModel {
String from;
String to;
int clinicID;
int doctorID;
int appointmentNo;
dynamic editedBy;
dynamic doctorID;
GetHistoryReqModel(
{this.patientMRN,
@ -16,6 +17,7 @@ class GetHistoryReqModel {
this.to,
this.clinicID,
this.doctorID,
this.editedBy,
this.appointmentNo});
GetHistoryReqModel.fromJson(Map<String, dynamic> json) {
@ -27,6 +29,7 @@ class GetHistoryReqModel {
clinicID = json['ClinicID'];
doctorID = json['DoctorID'];
appointmentNo = json['AppointmentNo'];
editedBy = json['EditedBy'];
}
@ -40,6 +43,8 @@ class GetHistoryReqModel {
data['To'] = this.to;
data['ClinicID'] = this.clinicID;
data['DoctorID'] = this.doctorID;
data['EditedBy'] = this.editedBy;
return data;
}
}

@ -4,13 +4,18 @@ class GetPhysicalExamReqModel {
String episodeID;
String from;
String to;
dynamic editedBy;
dynamic doctorID;
GetPhysicalExamReqModel(
{this.patientMRN,
this.appointmentNo,
this.episodeID,
this.from,
this.to});
GetPhysicalExamReqModel({
this.patientMRN,
this.appointmentNo,
this.episodeID,
this.from,
this.to,
this.doctorID,
this.editedBy,
});
GetPhysicalExamReqModel.fromJson(Map<String, dynamic> json) {
patientMRN = json['PatientMRN'];
@ -18,6 +23,8 @@ class GetPhysicalExamReqModel {
episodeID = json['EpisodeID'];
from = json['From'];
to = json['To'];
doctorID = json['DoctorID'];
editedBy = json['EditedBy'];
}
Map<String, dynamic> toJson() {
@ -27,6 +34,8 @@ class GetPhysicalExamReqModel {
data['EpisodeID'] = this.episodeID;
data['From'] = this.from;
data['To'] = this.to;
data['DoctorID'] = this.doctorID;
data['EditedBy'] = this.editedBy;
return data;
}
}

@ -5,9 +5,14 @@ class MySelectedAllergy {
MasterKeyModel selectedAllergy;
String remark;
bool isChecked;
int createdBy;
MySelectedAllergy(
{this.selectedAllergySeverity, this.selectedAllergy, this.remark, this.isChecked});
{this.selectedAllergySeverity,
this.selectedAllergy,
this.remark,
this.isChecked,
this.createdBy});
MySelectedAllergy.fromJson(Map<String, dynamic> json) {
selectedAllergySeverity = json['selectedAllergySeverity'] != null
@ -18,6 +23,7 @@ class MySelectedAllergy {
: null;
remark = json['remark'];
remark = json['isChecked'];
createdBy = json['createdBy'];
}
Map<String, dynamic> toJson() {
@ -30,6 +36,7 @@ class MySelectedAllergy {
}
data['remark'] = this.remark;
data['isChecked'] = this.remark;
data['createdBy'] = this.createdBy;
return data;
}
}

@ -5,18 +5,23 @@ class MySelectedExamination {
String remark;
bool isNormal;
bool isAbnormal;
int createdBy;
MySelectedExamination(
{this.selectedExamination, this.remark, this.isNormal = true, this.isAbnormal = false});
{this.selectedExamination,
this.remark,
this.isNormal = true,
this.isAbnormal = false,
this.createdBy});
MySelectedExamination.fromJson(Map<String, dynamic> json) {
selectedExamination = json['selectedExamination'] != null
? new MasterKeyModel.fromJson(json['selectedExamination'])
: null;
remark = json['remark'];
remark = json['isNormal'];
remark = json['isAbnormal'];
createdBy = json['createdBy'];
}
Map<String, dynamic> toJson() {
@ -28,6 +33,7 @@ class MySelectedExamination {
data['remark'] = this.remark;
data['isNormal'] = this.isNormal;
data['isAbnormal'] = this.isAbnormal;
data['createdBy'] = this.createdBy;
return data;
}
}

@ -1,7 +1,8 @@
class PostHistoriesRequestModel {
List<ListMedicalHistoryVM> listMedicalHistoryVM;
dynamic doctorID;
PostHistoriesRequestModel({this.listMedicalHistoryVM});
PostHistoriesRequestModel({this.listMedicalHistoryVM, this.doctorID});
PostHistoriesRequestModel.fromJson(Map<String, dynamic> json) {
if (json['listMedicalHistoryVM'] != null) {
@ -10,6 +11,7 @@ class PostHistoriesRequestModel {
listMedicalHistoryVM.add(new ListMedicalHistoryVM.fromJson(v));
});
}
doctorID = json['DoctorID'];
}
Map<String, dynamic> toJson() {
@ -18,6 +20,7 @@ class PostHistoriesRequestModel {
data['listMedicalHistoryVM'] =
this.listMedicalHistoryVM.map((v) => v.toJson()).toList();
}
data['DoctorID'] = this.doctorID;
return data;
}
}

@ -555,6 +555,9 @@ class TranslationBase {
String get addAssessment => localizedValues['addAssessment'][locale.languageCode];
String get assessment => localizedValues['assessment'][locale.languageCode];
String get chiefComplaintEmptyMsg => localizedValues['chiefComplaintEmptyMsg'][locale.languageCode];
String get physicalSystemExamination => localizedValues['physicalSystemExamination'][locale.languageCode];
String get searchExamination => localizedValues['searchExamination'][locale.languageCode];
String get addExamination => localizedValues['addExamination'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -170,31 +170,40 @@ class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
builder: (context) {
return AddAllergies(
addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
setState(() {
List<MySelectedAllergy> allergy =
// ignore: missing_return
widget.myAllergiesList.where((element) =>
mySelectedAllergy.selectedAllergy.id ==
element.selectedAllergy.id
).toList();
if (allergy.isEmpty) {
widget.myAllergiesList.add(mySelectedAllergy);
Navigator.of(context).pop();
} else {
allergy.first.selectedAllergy =
mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity =
mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked;
Navigator.of(context).pop();
if (mySelectedAllergy.selectedAllergySeverity == null ||
mySelectedAllergy.selectedAllergy == null) {
helpers.showErrorToast(TranslationBase
.of(context)
.requiredMsg);
// helpers.showErrorToast(TranslationBase
// .of(context)
// .itemExist);
}
} else {
setState(() {
List<MySelectedAllergy> allergy =
// ignore: missing_return
widget.myAllergiesList
.where((element) =>
mySelectedAllergy.selectedAllergy.id ==
element.selectedAllergy.id)
.toList();
});
if (allergy.isEmpty) {
widget.myAllergiesList.add(mySelectedAllergy);
Navigator.of(context).pop();
} else {
allergy.first.selectedAllergy =
mySelectedAllergy.selectedAllergy;
allergy.first.selectedAllergySeverity =
mySelectedAllergy.selectedAllergySeverity;
allergy.first.remark = mySelectedAllergy.remark;
allergy.first.isChecked = mySelectedAllergy.isChecked;
Navigator.of(context).pop();
// helpers.showErrorToast(TranslationBase
// .of(context)
// .itemExist);
}
});
}
},);
});
}

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
@ -12,6 +13,7 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart';
import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@ -54,20 +56,11 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
GetHistoryReqModel getHistoryReqModel = GetHistoryReqModel(
patientMRN: widget.patientInfo.patientMRN,
episodeID: widget.patientInfo.episodeNo.toString(),
appointmentNo: widget.patientInfo.appointmentNo);
getHistoryReqModel.historyType =
MasterKeysService.HistoryFamily.getMasterKeyService();
await model.getPatientHistories(getHistoryReqModel, isFirst: true);
getHistoryReqModel.historyType =
MasterKeysService.HistoryMedical.getMasterKeyService();
await model.getPatientHistories(getHistoryReqModel);
getHistoryReqModel.historyType =
MasterKeysService.HistorySurgical.getMasterKeyService();
await model.getPatientHistories(getHistoryReqModel);
getHistoryReqModel.historyType =
MasterKeysService.HistorySports.getMasterKeyService();
await model.getPatientHistories(getHistoryReqModel);
appointmentNo: widget.patientInfo.appointmentNo,
doctorID: '',
editedBy: '');
await model.getPatientHistories(getHistoryReqModel,isFirst: true);
if (model.patientHistoryList.isNotEmpty) {
if (model.historyFamilyList.isEmpty) {
@ -147,58 +140,64 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
});
}
}
getAllergies(SOAPViewModel model) async {
GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP(
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
doctorID: '',
editedBy: '');
await model.getPatientAllergy(generalGetReqForSOAP);
if (model.patientAllergiesList.isNotEmpty) {
if (model.allergiesList.isEmpty)
await model.getMasterLookup(MasterKeysService.Allergies);
if (model.allergySeverityList.isEmpty)
await model.getMasterLookup(MasterKeysService.AllergySeverity);
model.patientAllergiesList.forEach((element) {
MasterKeyModel selectedAllergy = model.getOneMasterKey(
masterKeys: MasterKeysService.Allergies,
id: element.allergyDiseaseId,
typeId: element.allergyDiseaseType);
MasterKeyModel selectedAllergySeverity = model.getOneMasterKey(
masterKeys: MasterKeysService.AllergySeverity,
id: element.severity,
);
MySelectedAllergy mySelectedAllergy = MySelectedAllergy(
selectedAllergy: selectedAllergy,
isChecked: element.isChecked,
createdBy: element.createdBy,
selectedAllergySeverity: selectedAllergySeverity);
if (selectedAllergy != null && selectedAllergySeverity != null)
widget.myAllergiesList.add(mySelectedAllergy);
});
}
}
@override
Widget build(BuildContext context) {
return BaseView<SOAPViewModel>(
return BaseView<SOAPViewModel>(
onModelReady: (model) async {
widget.myAllergiesList.clear();
widget.myHistoryList.clear();
GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP(
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo);
GetChiefComplaintReqModel getChiefComplaintReqModel =
GetChiefComplaintReqModel(
patientMRN: widget.patientInfo.patientMRN,
appointmentNo: widget.patientInfo.appointmentNo,
episodeId: widget.patientInfo.episodeNo,
episodeID: widget.patientInfo.episodeNo);
episodeID: widget.patientInfo.episodeNo,
doctorID: '');
await model.getPatientChiefComplaint(getChiefComplaintReqModel);
if (model.patientChiefComplaintList.isNotEmpty) {
complaintsController.text = helpers.parseHtmlString(model.patientChiefComplaintList[0].chiefComplaint)
;
complaintsController.text = helpers.parseHtmlString(
model.patientChiefComplaintList[0].chiefComplaint);
illnessController.text = model.patientChiefComplaintList[0].hopi;
}
await model.getPatientAllergy(generalGetReqForSOAP);
if (model.patientAllergiesList.isNotEmpty) {
if (model.allergiesList.isEmpty)
await model.getMasterLookup(MasterKeysService.Allergies);
if (model.allergySeverityList.isEmpty)
await model.getMasterLookup(MasterKeysService.AllergySeverity);
model.patientAllergiesList.forEach((element) {
MasterKeyModel selectedAllergy = model.getOneMasterKey(
masterKeys: MasterKeysService.Allergies,
id: element.allergyDiseaseId,
typeId: element.allergyDiseaseType);
MasterKeyModel selectedAllergySeverity = model.getOneMasterKey(
masterKeys: MasterKeysService.AllergySeverity,
id: element.severity,
);
MySelectedAllergy mySelectedAllergy = MySelectedAllergy(
selectedAllergy: selectedAllergy,
isChecked: element.isChecked,
selectedAllergySeverity: selectedAllergySeverity);
if (selectedAllergy != null && selectedAllergySeverity != null)
widget.myAllergiesList.add(mySelectedAllergy);
});
}
await getHistory(model);
await getAllergies(model);
},
builder: (_, model, w) => AppScaffold(
isShowAppBar: false,
@ -472,29 +471,30 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
{List<MySelectedAllergy> myAllergiesList, SOAPViewModel model}) async {
PostAllergyRequestModel postAllergyRequestModel =
new PostAllergyRequestModel();
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
widget.myAllergiesList.forEach((allergy) {
if (postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM ==
null)
postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM = [];
//TODO: make static value dynamic
postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM
.add(ListHisProgNotePatientAllergyDiseaseVM(
allergyDiseaseId: allergy.selectedAllergy.id,
allergyDiseaseType: allergy.selectedAllergy.typeId,
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
severity: allergy.selectedAllergySeverity.id,
remarks: allergy.remark,
createdBy: 4709,
//
createdOn: DateTime.now().toIso8601String(),
//"2020-08-14T20:37:22.780Z",
editedBy: 4709,
editedOn: DateTime.now().toIso8601String(),
//"2020-08-14T20:37:22.780Z",
isChecked: false,
isUpdatedByNurse: false));
postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM.add(
ListHisProgNotePatientAllergyDiseaseVM(
allergyDiseaseId: allergy.selectedAllergy.id,
allergyDiseaseType: allergy.selectedAllergy.typeId,
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
severity: allergy.selectedAllergySeverity.id,
remarks: allergy.remark,
createdBy: allergy.createdBy??doctorProfile.doctorID,
createdOn: DateTime.now().toIso8601String(),
editedBy: doctorProfile.doctorID,
editedOn: DateTime.now().toIso8601String(),
isChecked: allergy.isChecked,
isUpdatedByNurse: false));
});
if (model.patientAllergiesList.isEmpty) {
await model.postAllergy(postAllergyRequestModel);
@ -510,7 +510,7 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
postHistories(
{List<MySelectedHistory> myHistoryList, SOAPViewModel model}) async {
PostHistoriesRequestModel postHistoriesRequestModel =
new PostHistoriesRequestModel();
new PostHistoriesRequestModel(doctorID: '');
widget.myHistoryList.forEach((history) {
if (postHistoriesRequestModel.listMedicalHistoryVM == null)
postHistoriesRequestModel.listMedicalHistoryVM = [];

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
@ -7,6 +8,7 @@ import 'package:doctor_app_flutter/models/SOAP/GetPhysicalExamReqModel.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
import 'package:doctor_app_flutter/models/SOAP/post_physical_exam_request_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@ -77,6 +79,7 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
selectedExamination: examMaster,
remark: element.remarks,
isNormal: element.isNormal,
createdBy: element.createdBy,
isAbnormal: element.isAbnormal);
widget.mySelectedExamination.add(tempEam);
});
@ -102,7 +105,7 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
children: [
Row(
children: [
Texts('Physical/System Examination',
Texts(TranslationBase.of(context).physicalSystemExamination,
variant: isSysExaminationExpand
? "bodyText"
: '',
@ -137,7 +140,7 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hintText: "Add Examination",
hintText: TranslationBase.of(context).physicalSystemExamination,
fontSize: 13.5,
onTapTextFields: () {
openExaminationList(context);
@ -351,7 +354,11 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
}
submitUpdateObjectivePage(SOAPViewModel model) async {
if(widget.mySelectedExamination.isNotEmpty){
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile);
PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel();
widget.mySelectedExamination.forEach((exam) {
if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM ==
@ -364,9 +371,9 @@ class _UpdateObjectivePageState extends State<UpdateObjectivePage> {
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
remarks: exam.remark ?? '',
createdBy: 4709,
createdBy: exam.createdBy??doctorProfile.doctorID,
createdOn: DateTime.now().toIso8601String(),
editedBy: 4709,
editedBy: doctorProfile.doctorID,
editedOn: DateTime.now().toIso8601String(),
examId: exam.selectedExamination.id,
examType: exam.selectedExamination.typeId,
@ -505,8 +512,8 @@ class _AddExaminationDailogState extends State<AddExaminationDailog> {
baseViewModel: model,
child: MasterKeyCheckboxSearchWidget(
model: model,
hintSearchText: 'Search Examination',
buttonName: 'Add Examination',
hintSearchText: TranslationBase.of(context).searchExamination,
buttonName: TranslationBase.of(context).addExamination,
masterList: model.physicalExaminationList,
removeHistory: (history){
setState(() {

@ -33,7 +33,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
List<MySelectedAllergy> myAllergiesList= List();
List<MySelectedHistory> myHistoryList = List();
List<MySelectedExamination> mySelectedExamination = List();
MySelectedAssessment mySelectedAssessment = new MySelectedAssessment();
MySelectedAssessment mySelectedAssessment = MySelectedAssessment();
changePageViewIndex(pageIndex) {
_controller.jumpToPage(pageIndex);
}

Loading…
Cancel
Save