refactor doctor replay service

pull/172/head
Elham Rababah 5 years ago
parent 78694a4c07
commit 0c7c4d7dae

@ -0,0 +1,27 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/hospitals_model.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_doctor_reply.dart';
class DoctorReplyService extends BaseService {
List<ListGtMyPatientsQuestions> get listDoctorWorkingHoursTable => _listDoctorWorkingHoursTable;
List<ListGtMyPatientsQuestions> _listDoctorWorkingHoursTable = [];
RequestDoctorReply _requestDoctorReply = RequestDoctorReply();
Future getDoctorReply() async {
await baseAppClient.post(GT_MY_PATIENT_QUESTION,
onSuccess: (dynamic response, int statusCode) {
_listDoctorWorkingHoursTable.clear();
response['List_GtMyPatientsQuestions'].forEach((v) {
_listDoctorWorkingHoursTable
.add(ListGtMyPatientsQuestions.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestDoctorReply.toJson(),);
}
}

@ -0,0 +1,24 @@
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/models/doctor/list_gt_my_patients_question_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class DoctorReplayViewModel extends BaseViewModel {
DoctorReplyService _doctorReplyService = locator<DoctorReplyService>();
List<ListGtMyPatientsQuestions> get listDoctorWorkingHoursTable => _doctorReplyService.listDoctorWorkingHoursTable;
Future getDoctorReply() async {
setState(ViewState.Busy);
await _doctorReplyService.getDoctorReply();
if (_doctorReplyService.hasError) {
error = _doctorReplyService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
}

@ -1,6 +1,8 @@
import 'package:get_it/get_it.dart';
import 'core/service/doctor_reply_service.dart';
import 'core/service/hospital/hospitals_service.dart';
import 'core/viewModel/doctor_replay_view_model.dart';
import 'core/viewModel/hospital_view_model.dart';
GetIt locator = GetIt.instance;
@ -9,7 +11,9 @@ GetIt locator = GetIt.instance;
void setupLocator() {
/// Services
locator.registerLazySingleton(() => HospitalService());
locator.registerLazySingleton(() => DoctorReplyService());
/// View Model
locator.registerFactory(() => HospitalViewModel());
locator.registerFactory(() => DoctorReplayViewModel());
}

@ -1,41 +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/doctor/request_doctor_reply.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:flutter/cupertino.dart';
class DoctorReplyProvider with ChangeNotifier {
List<ListGtMyPatientsQuestions> listDoctorWorkingHoursTable = [];
bool isLoading = true;
bool isError = false;
String error = '';
RequestDoctorReply _requestDoctorReply = RequestDoctorReply();
BaseAppClient baseAppClient = BaseAppClient();
DoctorReplyProvider() {
getDoctorReply();
}
getDoctorReply() async {
try {
await baseAppClient.post(GT_MY_PATIENT_QUESTION,
body: _requestDoctorReply.toJson(),
onSuccess: (dynamic response, int statusCode) {
response['List_GtMyPatientsQuestions'].forEach((v) {
listDoctorWorkingHoursTable
.add(ListGtMyPatientsQuestions.fromJson(v));
isError = false;
isLoading = false;
});
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
});
notifyListeners();
} catch (error) {
throw error;
}
}
}

@ -5,7 +5,6 @@ import 'package:doctor_app_flutter/models/doctor/clinic_model.dart';
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/providers/auth_provider.dart';
import 'package:doctor_app_flutter/providers/doctor_reply_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';
@ -718,10 +717,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
context,
MaterialPageRoute(
builder: (context) =>
ChangeNotifierProvider(
create: (_) => DoctorReplyProvider(),
child: DoctorReplyScreen(),
),
DoctorReplyScreen(),
),
);
},

@ -1,19 +1,10 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_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/widgets/doctor/doctor_reply_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.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/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bg_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:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
/*
*@author: Mohammad Aljammal
@ -23,38 +14,31 @@ import 'package:provider/provider.dart';
*@desc: Doctor Reply Screen display data from GtMyPatientsQuestions service
*/
class DoctorReplyScreen extends StatelessWidget {
DoctorReplyProvider _doctorReplyProvider;
@override
Widget build(BuildContext context) {
_doctorReplyProvider = Provider.of(context);
return AppScaffold(
appBarTitle: TranslationBase.of(context).replay2,
body: _doctorReplyProvider.isLoading
? DrAppCircularProgressIndeicator()
: _doctorReplyProvider.isError
? Center(
child: Text(
_doctorReplyProvider.error,
style: TextStyle(color: Theme.of(context).errorColor),
),
)
: Container(
padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0),
child: ListView(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: _doctorReplyProvider
.listDoctorWorkingHoursTable
.map((reply) {
return DoctorReplyWidget(reply: reply);
}).toList(),
)
],
),
),
);
return BaseView<DoctorReplayViewModel>(
onModelReady: (model) => model.getDoctorReply(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).replay2,
body: Container(
padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0),
child: ListView(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: model
.listDoctorWorkingHoursTable
.map((reply) {
return DoctorReplyWidget(reply: reply);
}).toList(),
)
],
),
),
));
}
}

Loading…
Cancel
Save