diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 0a58a4bc..434921a6 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -703,9 +703,8 @@ const Map> localizedValues = { "patientArrived": {"en": "Patient Arrived", "ar": "وصل المريض"}, "calledAndNoResponse": {"en": "Called And No Response", "ar": "تم الاتصال ولا يوجد رد"}, "underProcess": {"en": "Under Process", "ar": "تحت التجهيز"}, - "textResponse": {"en": "Text Response", "ar": "استجابة النص" - } - , + "textResponse": {"en": "Text Response", "ar": "استجابة النص"}, + "notReplied": {"en": "Not Replied", "ar": "لم يتم يرد"}, "requestType":{ "en":"Request Type", "ar":"نوع الطلب"}, diff --git a/lib/core/service/home/doctor_reply_service.dart b/lib/core/service/home/doctor_reply_service.dart index cdb45f1b..c3f4584d 100644 --- a/lib/core/service/home/doctor_reply_service.dart +++ b/lib/core/service/home/doctor_reply_service.dart @@ -8,39 +8,56 @@ import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patien import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart'; class DoctorReplyService extends BaseService { - - List get listDoctorWorkingHoursTable => _listDoctorWorkingHoursTable; + List get listDoctorWorkingHoursTable => + _listDoctorWorkingHoursTable; + List get listDoctorNotRepliedQuestions => + _listDoctorNotRepliedQuestions; List _listDoctorWorkingHoursTable = []; - - + List _listDoctorNotRepliedQuestions = []; List _listMyReferralPatientModel = []; - List get listMyReferralPatientModel => _listMyReferralPatientModel; + + List get listMyReferralPatientModel => + _listMyReferralPatientModel; int notRepliedCount = 0; - Future getDoctorReply(RequestDoctorReply _requestDoctorReply,{bool clearData = false}) async { + Future getDoctorReply(RequestDoctorReply _requestDoctorReply, + {bool clearData = false, bool isGettingNotReply = false}) async { hasError = false; - await baseAppClient.post(GT_MY_PATIENT_QUESTION, - onSuccess: (dynamic response, int statusCode) { - if(clearData) + await baseAppClient.post( + GT_MY_PATIENT_QUESTION, + onSuccess: (dynamic response, int statusCode) { + if (clearData) { + if(isGettingNotReply) + _listDoctorNotRepliedQuestions.clear(); + else _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(),); + } + + + response['List_GtMyPatientsQuestions'].forEach((v) { + + if(isGettingNotReply) + _listDoctorNotRepliedQuestions.add(ListGtMyPatientsQuestions.fromJson(v)); + else + _listDoctorWorkingHoursTable + .add(ListGtMyPatientsQuestions.fromJson(v)); + }); + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + body: _requestDoctorReply.toJson(), + ); } Future createDoctorResponse( - CreateDoctorResponseModel createDoctorResponseModel) async { - hasError = false; + CreateDoctorResponseModel createDoctorResponseModel) async { + hasError = false; await baseAppClient.post( CREATE_DOCTOR_RESPONSE, body: createDoctorResponseModel.toJson(), - onSuccess: (dynamic body, int statusCode) { - }, + onSuccess: (dynamic body, int statusCode) {}, onFailure: (String error, int statusCode) { hasError = true; super.error = error; @@ -48,14 +65,12 @@ class DoctorReplyService extends BaseService { ); } - Future getNotRepliedCount() async { - hasError = false; + hasError = false; await baseAppClient.post( GET_DOCTOR_NOT_REPLIED_COUNTS, body: {}, - onSuccess: (dynamic body - , int statusCode) { + onSuccess: (dynamic body, int statusCode) { notRepliedCount = body["DoctorNotRepliedCounts"]; }, onFailure: (String error, int statusCode) { diff --git a/lib/core/viewModel/doctor_replay_view_model.dart b/lib/core/viewModel/doctor_replay_view_model.dart index 17607d80..707fb805 100644 --- a/lib/core/viewModel/doctor_replay_view_model.dart +++ b/lib/core/viewModel/doctor_replay_view_model.dart @@ -12,9 +12,14 @@ class DoctorReplayViewModel extends BaseViewModel { List get listDoctorWorkingHoursTable => _doctorReplyService.listDoctorWorkingHoursTable; + List get listDoctorNotRepliedQuestions => + _doctorReplyService.listDoctorNotRepliedQuestions; Future getDoctorReply( - {int pageSize = 10, int pageIndex = 1, bool isLocalBusy = true}) async { + {int pageSize = 10, + int pageIndex = 1, + bool isLocalBusy = true, + bool isGettingNotReply = false}) async { if (isLocalBusy) { setState(ViewState.BusyLocal); } else { @@ -23,8 +28,11 @@ class DoctorReplayViewModel extends BaseViewModel { await getDoctorProfile(); RequestDoctorReply _requestDoctorReply = RequestDoctorReply(pageIndex: pageIndex, pageSize: pageSize); + if (isGettingNotReply) + _requestDoctorReply.infoStatus = 99; //to get the not replied only - await _doctorReplyService.getDoctorReply(_requestDoctorReply, clearData:!isLocalBusy ); + await _doctorReplyService.getDoctorReply(_requestDoctorReply, + clearData: !isLocalBusy, isGettingNotReply: isGettingNotReply); if (_doctorReplyService.hasError) { error = _doctorReplyService.error; if (isLocalBusy) { diff --git a/lib/landing_page.dart b/lib/landing_page.dart index 5bce4f71..72b5c857 100644 --- a/lib/landing_page.dart +++ b/lib/landing_page.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/screens/doctor/doctor_reply_screen.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_screen.dart'; import 'package:doctor_app_flutter/screens/doctor/my_schedule_screen.dart'; import 'package:doctor_app_flutter/screens/home/home_screen.dart'; import 'package:doctor_app_flutter/screens/qr_reader/QR_reader_screen.dart'; diff --git a/lib/models/doctor/replay/request_doctor_reply.dart b/lib/models/doctor/replay/request_doctor_reply.dart index 1c3948cb..82384586 100644 --- a/lib/models/doctor/replay/request_doctor_reply.dart +++ b/lib/models/doctor/replay/request_doctor_reply.dart @@ -15,6 +15,7 @@ class RequestDoctorReply { bool patientOutSA; int pageIndex; int pageSize; + int infoStatus; RequestDoctorReply( {this.projectID, @@ -30,6 +31,7 @@ class RequestDoctorReply { this.isLoginForDoctorApp, this.patientOutSA, this.pageIndex, + this.infoStatus, this.pageSize}); RequestDoctorReply.fromJson(Map json) { @@ -47,6 +49,7 @@ class RequestDoctorReply { patientOutSA = json['PatientOutSA']; pageIndex = json['PageIndex']; pageSize = json['PageSize']; + pageSize = json['InfoStatus']; } Map toJson() { @@ -65,6 +68,8 @@ class RequestDoctorReply { data['PatientOutSA'] = this.patientOutSA; data['PageIndex'] = this.pageIndex; data['PageSize'] = this.pageSize; + if(this.infoStatus != null) + data['InfoStatus'] = this.infoStatus; return data; } } diff --git a/lib/screens/doctor/doctor_replay/all_doctor_questions.dart b/lib/screens/doctor/doctor_replay/all_doctor_questions.dart new file mode 100644 index 00000000..428a6f1c --- /dev/null +++ b/lib/screens/doctor/doctor_replay/all_doctor_questions.dart @@ -0,0 +1,101 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.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/screens/doctor/doctor_replay/doctor_reply_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:flutter/material.dart'; + +import 'doctor_repaly_chat.dart'; + +class AllDoctorQuestions extends StatefulWidget { + final Function changeCurrentTab; + + const AllDoctorQuestions({Key key, this.changeCurrentTab}) : super(key: key); + + @override + _AllDoctorQuestionsState createState() => _AllDoctorQuestionsState(); +} + +class _AllDoctorQuestionsState extends State { + + int pageIndex = 1; + @override + Widget build(BuildContext context) { + return BaseView( + onModelReady: (model) { + model.getDoctorReply(isLocalBusy: false); + }, + builder: (_, model, w) => WillPopScope( + onWillPop: () async { + widget.changeCurrentTab(); + return false; + }, + child: AppScaffold( + baseViewModel: model, + appBarTitle: TranslationBase.of(context).replay2, + isShowAppBar: false, + body: model.listDoctorWorkingHoursTable.isEmpty + ?ErrorMessage(error: TranslationBase.of(context).noItem)// DrAppEmbeddedError(error: TranslationBase.of(context).noItem) + : Column( + children: [ + Expanded( + child: Container( + padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0), + child: NotificationListener( + child: ListView.builder( + scrollDirection: Axis.vertical, + itemCount: model.listDoctorWorkingHoursTable.length, + shrinkWrap: true, + itemBuilder: (BuildContext ctxt, int index) { + return Column( + children: [ + InkWell( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => + DoctorReplayChat( + reply: + model.listDoctorWorkingHoursTable[ + index], + previousModel: model, + ), + settings: RouteSettings( + name: 'DoctorReplayChat'), + )); + }, + child: DoctorReplyWidget( + reply: model + .listDoctorWorkingHoursTable[index]), + ), + if(model.state == ViewState.BusyLocal && index == model.listDoctorWorkingHoursTable.length-1) + DrAppCircularProgressIndeicator() + + ], + ); + }), + onNotification: (t) { + if (t is ScrollUpdateNotification && t.metrics.pixels >= t.metrics.maxScrollExtent - 50 && + model.state != ViewState.BusyLocal) { + setState(() { + pageIndex++; + }); + model.getDoctorReply(pageIndex: pageIndex); + } + return; + }, + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/screens/doctor/doctor_repaly_chat.dart b/lib/screens/doctor/doctor_replay/doctor_repaly_chat.dart similarity index 100% rename from lib/screens/doctor/doctor_repaly_chat.dart rename to lib/screens/doctor/doctor_replay/doctor_repaly_chat.dart diff --git a/lib/screens/doctor/doctor_replay/doctor_reply_screen.dart b/lib/screens/doctor/doctor_replay/doctor_reply_screen.dart new file mode 100644 index 00000000..8b51319c --- /dev/null +++ b/lib/screens/doctor/doctor_replay/doctor_reply_screen.dart @@ -0,0 +1,185 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.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/screens/doctor/doctor_replay/doctor_repaly_chat.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_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/dr_app_circular_progress_Indeicator.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; +import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'all_doctor_questions.dart'; +import 'not_replaied_Doctor_Questions.dart'; + +/* + *@author: Mohammad Aljammal + *@Date:28/4/2020 + *@param: + *@return: + *@desc: Doctor Reply Screen display data from GtMyPatientsQuestions service + */ +class DoctorReplyScreen extends StatefulWidget { + final Function changeCurrentTab; + + const DoctorReplyScreen({Key key, this.changeCurrentTab}) : super(key: key); + + @override + _DoctorReplyScreenState createState() => _DoctorReplyScreenState(); +} + +class _DoctorReplyScreenState extends State + with SingleTickerProviderStateMixin { + TabController _tabController; + int _activeTab = 0; + int pageIndex = 1; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + _tabController.addListener(_handleTabSelection); + } + + @override + void dispose() { + super.dispose(); + _tabController.dispose(); + } + + _handleTabSelection() { + setState(() { + _activeTab = _tabController.index; + }); + } + + @override + Widget build(BuildContext context) { + final screenSize = MediaQuery.of(context).size; + + return WillPopScope( + onWillPop: () async { + widget.changeCurrentTab(); + return false; + }, + child: AppScaffold( + appBarTitle: TranslationBase.of(context).replay2, + isShowAppBar: false, + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Scaffold( + extendBodyBehindAppBar: false, + appBar: PreferredSize( + preferredSize: Size.fromHeight( + MediaQuery.of(context).size.height * 0.070), + child: Container( + height: MediaQuery.of(context).size.height * 0.070, + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Theme.of(context).dividerColor, + width: 0.5), //width: 0.7 + ), + color: Colors.white), + child: Center( + child: TabBar( + isScrollable: false, + controller: _tabController, + indicatorColor: Colors.transparent, + indicatorWeight: 1.0, + indicatorSize: TabBarIndicatorSize.tab, + labelColor: Theme.of(context).primaryColor, + labelPadding: EdgeInsets.only( + top: 0, left: 0, right: 0, bottom: 0), + unselectedLabelColor: Colors.grey[800], + tabs: [ + tabWidget( + screenSize, + _activeTab == 0, + "Not Replied", + ), + tabWidget( + screenSize, + _activeTab == 1, + TranslationBase.of(context).all, + ), + ], + ), + ), + ), + ), + body: Column( + children: [ + Expanded( + child: TabBarView( + physics: BouncingScrollPhysics(), + controller: _tabController, + children: [ + NotRepliedDoctorQuestions(), + AllDoctorQuestions(), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} + +Widget tabWidget(Size screenSize, bool isActive, String title, + {int counter = -1}) { + return Center( + child: Container( + height: screenSize.height * 0.070, + decoration: TextFieldsUtils.containerBorderDecoration( + isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA), + isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA), + borderRadius: 4, + borderWidth: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AppText( + title, + fontSize: SizeConfig.textMultiplier * 1.5, + color: isActive ? Colors.white : Color(0xFF2B353E), + fontWeight: FontWeight.w700, + ), + if (counter != -1) + Container( + margin: EdgeInsets.all(4), + width: 15, + height: 15, + decoration: BoxDecoration( + color: isActive ? Colors.white : Color(0xFFD02127), + shape: BoxShape.circle, + ), + child: Center( + child: FittedBox( + child: AppText( + "$counter", + fontSize: SizeConfig.textMultiplier * 1.5, + color: !isActive ? Colors.white : Color(0xFFD02127), + fontWeight: FontWeight.w700, + ), + ), + ), + ), + ], + ), + ), + ); +} diff --git a/lib/widgets/doctor/doctor_reply_widget.dart b/lib/screens/doctor/doctor_replay/doctor_reply_widget.dart similarity index 97% rename from lib/widgets/doctor/doctor_reply_widget.dart rename to lib/screens/doctor/doctor_replay/doctor_reply_widget.dart index 32e116af..f2e53275 100644 --- a/lib/widgets/doctor/doctor_reply_widget.dart +++ b/lib/screens/doctor/doctor_replay/doctor_reply_widget.dart @@ -31,7 +31,7 @@ class _DoctorReplyWidgetState extends State { return Container( child: CardWithBgWidget( - bgColor: widget.reply.infoStatus == 0 + bgColor: widget.reply.infoStatus == 99 ? Color(0xFF2B353E) : widget.reply.infoStatus == 4 ? IN_PROGRESS_COLOR @@ -55,7 +55,8 @@ class _DoctorReplyWidgetState extends State { color: Colors.black), children: [ new TextSpan( - text: widget.reply.infoStatus == 1 + text: widget.reply.infoStatus == 99 + ? TranslationBase.of(context).notReplied:widget.reply.infoStatus == 1 ? TranslationBase.of(context).replayCallStatus : widget.reply.infoStatus == 2 ? TranslationBase.of(context).patientArrived @@ -70,7 +71,9 @@ class _DoctorReplyWidgetState extends State { .textResponse : '', style: TextStyle( - color: widget.reply.infoStatus == 4 + color: widget.reply.infoStatus == 99 + ? Color(0xFF2B353E) + : widget.reply.infoStatus == 4 ? IN_PROGRESS_COLOR : widget.reply.infoStatus == 3 ? Color(0xFFD02127) diff --git a/lib/screens/doctor/doctor_reply_screen.dart b/lib/screens/doctor/doctor_replay/not_replaied_doctor_questions.dart similarity index 60% rename from lib/screens/doctor/doctor_reply_screen.dart rename to lib/screens/doctor/doctor_replay/not_replaied_doctor_questions.dart index 0f310c64..0a1b05c3 100644 --- a/lib/screens/doctor/doctor_reply_screen.dart +++ b/lib/screens/doctor/doctor_replay/not_replaied_doctor_questions.dart @@ -1,43 +1,35 @@ -import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.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/screens/doctor/doctor_repaly_chat.dart'; -import 'package:doctor_app_flutter/util/helpers.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/screens/doctor/doctor_replay/doctor_reply_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/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; -import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; -import 'package:flutter/cupertino.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:flutter/material.dart'; -/* - *@author: Mohammad Aljammal - *@Date:28/4/2020 - *@param: - *@return: - *@desc: Doctor Reply Screen display data from GtMyPatientsQuestions service - */ -class DoctorReplyScreen extends StatefulWidget { +import 'doctor_repaly_chat.dart'; + +class NotRepliedDoctorQuestions extends StatefulWidget { final Function changeCurrentTab; - const DoctorReplyScreen({Key key, this.changeCurrentTab}) : super(key: key); + const NotRepliedDoctorQuestions({Key key, this.changeCurrentTab}) + : super(key: key); @override - _DoctorReplyScreenState createState() => _DoctorReplyScreenState(); + _NotRepliedDoctorQuestionsState createState() => + _NotRepliedDoctorQuestionsState(); } -class _DoctorReplyScreenState extends State { +class _NotRepliedDoctorQuestionsState extends State { int pageIndex = 1; @override Widget build(BuildContext context) { return BaseView( onModelReady: (model) { - model.getDoctorReply(isLocalBusy: false); + model.getDoctorReply(isLocalBusy: false, isGettingNotReply: true); }, builder: (_, model, w) => WillPopScope( onWillPop: () async { @@ -48,17 +40,18 @@ class _DoctorReplyScreenState extends State { baseViewModel: model, appBarTitle: TranslationBase.of(context).replay2, isShowAppBar: false, - body: model.listDoctorWorkingHoursTable.isEmpty - ? DrAppEmbeddedError(error: TranslationBase.of(context).noItem) + body: model.listDoctorNotRepliedQuestions.isEmpty + ? ErrorMessage(error: TranslationBase.of(context).noItem) : Column( - children: [ - Expanded( - child: Container( + children: [ + Expanded( + child: Container( padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0), child: NotificationListener( child: ListView.builder( scrollDirection: Axis.vertical, - itemCount: model.listDoctorWorkingHoursTable.length, + itemCount: + model.listDoctorNotRepliedQuestions.length, shrinkWrap: true, itemBuilder: (BuildContext ctxt, int index) { return Column( @@ -70,9 +63,9 @@ class _DoctorReplyScreenState extends State { MaterialPageRoute( builder: (BuildContext context) => DoctorReplayChat( - reply: - model.listDoctorWorkingHoursTable[ - index], + reply: model + .listDoctorNotRepliedQuestions[ + index], previousModel: model, ), settings: RouteSettings( @@ -80,30 +73,36 @@ class _DoctorReplyScreenState extends State { )); }, child: DoctorReplyWidget( - reply: model - .listDoctorWorkingHoursTable[index]), + reply: + model.listDoctorNotRepliedQuestions[ + index]), ), - if(model.state == ViewState.BusyLocal && index == model.listDoctorWorkingHoursTable.length-1) + if (model.state == ViewState.BusyLocal && + index == + model.listDoctorNotRepliedQuestions + .length - + 1) DrAppCircularProgressIndeicator() - ], ); }), - onNotification: (t) { - if (t is ScrollUpdateNotification && t.metrics.pixels >= t.metrics.maxScrollExtent - 50 && + onNotification: (t) { + if (t is ScrollUpdateNotification && + t.metrics.pixels >= + t.metrics.maxScrollExtent - 50 && model.state != ViewState.BusyLocal) { setState(() { pageIndex++; }); - model.getDoctorReply(pageIndex: pageIndex); + model.getDoctorReply(pageIndex: pageIndex, isGettingNotReply: true); } return; }, ), ), - ), - ], - ), + ), + ], + ), ), ), ); diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index fab2c7b5..0297aa45 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1104,6 +1104,7 @@ class TranslationBase { String get special => localizedValues['special'][locale.languageCode]; String get requestType => localizedValues['requestType'][locale.languageCode]; String get allClinic => localizedValues['allClinic'][locale.languageCode]; + String get notReplied => localizedValues['notReplied'][locale.languageCode]; }