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 'package:get_it/get_it.dart';
import 'core/service/doctor_reply_service.dart';
import 'core/service/hospital/hospitals_service.dart'; import 'core/service/hospital/hospitals_service.dart';
import 'core/viewModel/doctor_replay_view_model.dart';
import 'core/viewModel/hospital_view_model.dart'; import 'core/viewModel/hospital_view_model.dart';
GetIt locator = GetIt.instance; GetIt locator = GetIt.instance;
@ -9,7 +11,9 @@ GetIt locator = GetIt.instance;
void setupLocator() { void setupLocator() {
/// Services /// Services
locator.registerLazySingleton(() => HospitalService()); locator.registerLazySingleton(() => HospitalService());
locator.registerLazySingleton(() => DoctorReplyService());
/// View Model /// View Model
locator.registerFactory(() => HospitalViewModel()); 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/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/profile_req_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/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/hospital_provider.dart';
import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart';
import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/project_provider.dart';
@ -718,10 +717,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
ChangeNotifierProvider( DoctorReplyScreen(),
create: (_) => DoctorReplyProvider(),
child: DoctorReplyScreen(),
),
), ),
); );
}, },

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

Loading…
Cancel
Save