Merge branch 'development_new_design_2.0' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into sultan_new_design

merge-update-with-lab-changes
Sultan Khan 5 years ago
commit a31f55aaa7

@ -1512,4 +1512,9 @@ const Map localizedValues = {
"modesBelow": {"en": "Please select the modes below:", "ar": ":الرجاء تحديد الأوضاع أدناه"}, "modesBelow": {"en": "Please select the modes below:", "ar": ":الرجاء تحديد الأوضاع أدناه"},
"prefferedMode": {"en": "Please select the preferred mode below:", "ar": ":الرجاء تحديد الوضع المفضل أدناه"}, "prefferedMode": {"en": "Please select the preferred mode below:", "ar": ":الرجاء تحديد الوضع المفضل أدناه"},
"permissionsBellow": {"en": "Please allow the permissions below:", "ar": ":الرجاء السماح الأذونات أدناه"}, "permissionsBellow": {"en": "Please allow the permissions below:", "ar": ":الرجاء السماح الأذونات أدناه"},
"RequesterInfo": {"en": "Requester Info", "ar": "معلومات مقدم الطلب"},
"PatientInfo": {"en": "Patient Info", "ar": "معلومات المريض"},
"OtherInfo": {"en": "Other Info", "ar": "معلومات اخرى"},
"inPrgress": {"en": "In Progress", "ar": "في تقدم"},
"locked": {"en": "Locked", "ar": "مقفل"},
}; };

@ -63,7 +63,7 @@ class FeedbackService extends BaseService {
Map<String, dynamic> body = new Map<String, dynamic>(); Map<String, dynamic> body = new Map<String, dynamic>();
body['IdentificationNo'] = user.patientIdentificationNo; body['IdentificationNo'] = user.patientIdentificationNo;
body['MobileNo'] = "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber); body['MobileNo'] = "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber);
body['Searching_type'] = '1'; body['Searching_type'] = 1;
if (BASE_URL.contains('uat')) { if (BASE_URL.contains('uat')) {
body['ForDemo'] = true; body['ForDemo'] = true;

@ -40,6 +40,7 @@ class DoctorList {
String setupID; String setupID;
List<String> speciality; List<String> speciality;
dynamic workingHours; dynamic workingHours;
dynamic decimalDoctorRate;
DoctorList( DoctorList(
{this.clinicID, {this.clinicID,
@ -82,7 +83,8 @@ class DoctorList {
this.serviceID, this.serviceID,
this.setupID, this.setupID,
this.speciality, this.speciality,
this.workingHours}); this.workingHours,
this.decimalDoctorRate});
DoctorList.fromJson(Map<String, dynamic> json) { DoctorList.fromJson(Map<String, dynamic> json) {
clinicID = json['ClinicID']; clinicID = json['ClinicID'];
@ -127,6 +129,7 @@ class DoctorList {
if (json.containsKey('Speciality') && json['Speciality']!=null) if (json.containsKey('Speciality') && json['Speciality']!=null)
speciality = json['Speciality'].cast<String>(); speciality = json['Speciality'].cast<String>();
workingHours = json['WorkingHours']; workingHours = json['WorkingHours'];
decimalDoctorRate = json['DecimalDoctorRate'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -172,6 +175,7 @@ class DoctorList {
data['SetupID'] = this.setupID; data['SetupID'] = this.setupID;
data['Speciality'] = this.speciality; data['Speciality'] = this.speciality;
data['WorkingHours'] = this.workingHours; data['WorkingHours'] = this.workingHours;
data['DecimalDoctorRate'] = this.decimalDoctorRate;
return data; return data;
} }
} }

@ -34,10 +34,13 @@ class ListDentalAppointments {
int invoiceNo; int invoiceNo;
int status; int status;
String arrivedOn; String arrivedOn;
String doctorName; dynamic doctorName;
dynamic doctorNameN; String doctorNameN;
String clinicName; String clinicName;
dynamic decimalDoctorRate;
String doctorImageURL; String doctorImageURL;
dynamic doctorRate;
int patientNumber;
String projectName; String projectName;
ListDentalAppointments( ListDentalAppointments(
@ -55,7 +58,10 @@ class ListDentalAppointments {
this.doctorName, this.doctorName,
this.doctorNameN, this.doctorNameN,
this.clinicName, this.clinicName,
this.decimalDoctorRate,
this.doctorImageURL, this.doctorImageURL,
this.doctorRate,
this.patientNumber,
this.projectName}); this.projectName});
ListDentalAppointments.fromJson(Map<String, dynamic> json) { ListDentalAppointments.fromJson(Map<String, dynamic> json) {
@ -73,7 +79,10 @@ class ListDentalAppointments {
doctorName = json['DoctorName']; doctorName = json['DoctorName'];
doctorNameN = json['DoctorNameN']; doctorNameN = json['DoctorNameN'];
clinicName = json['ClinicName']; clinicName = json['ClinicName'];
decimalDoctorRate = json['DecimalDoctorRate'];
doctorImageURL = json['DoctorImageURL']; doctorImageURL = json['DoctorImageURL'];
doctorRate = json['DoctorRate'];
patientNumber = json['PatientNumber'];
projectName = json['ProjectName']; projectName = json['ProjectName'];
} }
@ -93,8 +102,12 @@ class ListDentalAppointments {
data['DoctorName'] = this.doctorName; data['DoctorName'] = this.doctorName;
data['DoctorNameN'] = this.doctorNameN; data['DoctorNameN'] = this.doctorNameN;
data['ClinicName'] = this.clinicName; data['ClinicName'] = this.clinicName;
data['DecimalDoctorRate'] = this.decimalDoctorRate;
data['DoctorImageURL'] = this.doctorImageURL; data['DoctorImageURL'] = this.doctorImageURL;
data['DoctorRate'] = this.doctorRate;
data['PatientNumber'] = this.patientNumber;
data['ProjectName'] = this.projectName; data['ProjectName'] = this.projectName;
return data; return data;
} }
} }

@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -28,6 +29,29 @@ class OrdersLogDetailsPage extends StatelessWidget {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
void showConfirmMessage(CMCViewModel model, GetHHCAllPresOrdersResponseModel order) { void showConfirmMessage(CMCViewModel model, GetHHCAllPresOrdersResponseModel order) {
showDialog(
context: context,
child: ConfirmWithMessageDialog(
message: TranslationBase.of(context).cancelOrderMsg,
onTap: () {
UpdatePresOrderRequestModel updatePresOrderRequestModel = UpdatePresOrderRequestModel(presOrderID: order.iD, rejectionReason: "", presOrderStatus: 4, editedBy: 3);
Future.delayed(new Duration(milliseconds: 300)).then((value) async {
GifLoaderDialogUtils.showMyDialog(context);
await model.updateCmcPresOrder(updatePresOrderRequestModel);
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
GifLoaderDialogUtils.hideDialog(context);
} else {
AppToast.showSuccessToast(message: TranslationBase.of(context).processDoneSuccessfully);
await model.getCmcAllPresOrders();
GifLoaderDialogUtils.hideDialog(context);
}
});
},
));
return;
// todo 'sikander' remove useless code
showDialog( showDialog(
context: context, context: context,
child: ConfirmCancelOrderDialog( child: ConfirmCancelOrderDialog(

@ -1,5 +1,8 @@
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/create_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/create_e_referral_request_model.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/New_E_Referral/new_e_referral_step_one_page.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/New_E_Referral/new_e_referral_step_one_page.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'new_e_referral_step_three_page.dart'; import 'new_e_referral_step_three_page.dart';
@ -9,18 +12,15 @@ class StartIndexForNewEReferral extends StatefulWidget {
StartIndexForNewEReferral(); StartIndexForNewEReferral();
@override @override
_StartIndexForNewEReferralState createState() => _StartIndexForNewEReferralState createState() => _StartIndexForNewEReferralState();
_StartIndexForNewEReferralState();
} }
class _StartIndexForNewEReferralState extends State<StartIndexForNewEReferral> class _StartIndexForNewEReferralState extends State<StartIndexForNewEReferral> with TickerProviderStateMixin {
with TickerProviderStateMixin {
PageController _controller; PageController _controller;
int _currentIndex = 1; int _currentIndex = 0;
int pageSelected = 2; int pageSelected = 2;
CreateEReferralRequestModel createEReferralRequestModel = CreateEReferralRequestModel createEReferralRequestModel = new CreateEReferralRequestModel();
new CreateEReferralRequestModel();
@override @override
void initState() { void initState() {
@ -40,37 +40,139 @@ class _StartIndexForNewEReferralState extends State<StartIndexForNewEReferral>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: SafeArea( body: Container(
child: SingleChildScrollView( height: double.infinity,
child: Container( child: Column(
height: MediaQuery.of(context).size.height * 0.78, children: [
child: PageView( Container(
physics: NeverScrollableScrollPhysics(), width: double.infinity,
controller: _controller, padding: EdgeInsets.only(left: 12,right: 12,top: 12),
onPageChanged: (index) { child: Row(
setState(() { children: [
_currentIndex = index; Expanded(
}); child: showProgress(
}, title: TranslationBase.of(context).RequesterInfo,
scrollDirection: Axis.horizontal, status: _currentIndex == 0
children: <Widget>[ ? TranslationBase.of(context).inPrgress
NewEReferralStepOnePage( : _currentIndex > 0
changePageViewIndex: changePageViewIndex, ? TranslationBase.of(context).completed
createEReferralRequestModel: createEReferralRequestModel, : TranslationBase.of(context).locked,
), color: _currentIndex == 0 ? CustomColors.orange : CustomColors.green,
NewEReferralStepTowPage( ),
changePageViewIndex: changePageViewIndex, ),
createEReferralRequestModel: createEReferralRequestModel, Expanded(
), child: showProgress(
NewEReferralStepThreePage( title: TranslationBase.of(context).patientInfo,
changePageViewIndex: changePageViewIndex, status: _currentIndex == 1
createEReferralRequestModel: createEReferralRequestModel, ? TranslationBase.of(context).inPrgress
), : _currentIndex > 1
], ? TranslationBase.of(context).completed
: TranslationBase.of(context).locked,
color: _currentIndex == 1
? CustomColors.orange
: _currentIndex > 1
? CustomColors.green
: CustomColors.grey2,
),
),
showProgress(
title: TranslationBase.of(context).otherInfo,
status: _currentIndex == 2 ? TranslationBase.of(context).inPrgress : TranslationBase.of(context).locked,
color: _currentIndex == 2
? CustomColors.orange
: _currentIndex > 3
? CustomColors.green
: CustomColors.grey2,
isNeedBorder: false,
),
],
),
), ),
), Expanded(
child: PageView(
physics: NeverScrollableScrollPhysics(),
controller: _controller,
onPageChanged: (index) {
setState(() {
_currentIndex = index;
});
},
scrollDirection: Axis.horizontal,
children: <Widget>[
NewEReferralStepOnePage(
changePageViewIndex: changePageViewIndex,
createEReferralRequestModel: createEReferralRequestModel,
),
NewEReferralStepTowPage(
changePageViewIndex: changePageViewIndex,
createEReferralRequestModel: createEReferralRequestModel,
),
NewEReferralStepThreePage(
changePageViewIndex: changePageViewIndex,
createEReferralRequestModel: createEReferralRequestModel,
),
],
),
),
],
), ),
), ),
); );
} }
Widget showProgress({String title, String status, Color color, bool isNeedBorder = true}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
width: 26,
height: 26,
decoration: containerRadius(color, 200),
child: Icon(
Icons.done,
color: Colors.white,
size: 16,
),
),
if (isNeedBorder)
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: mDivider(Colors.grey),
)),
],
),
mHeight(8),
Text(
title,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
letterSpacing: -0.44,
),
),
mHeight(2),
Container(
padding: EdgeInsets.all(5),
decoration: containerRadius(color.withOpacity(0.2), 4),
child: Text(
status,
style: TextStyle(
fontSize: 8,
fontWeight: FontWeight.w600,
letterSpacing: -0.32,
color: color,
),
),
),
],
)
],
);
}
} }

@ -12,12 +12,15 @@ import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/dial
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/dialogs/select_relation_type_dialog.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/dialogs/select_relation_type_dialog.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart'; import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -36,13 +39,14 @@ class NewEReferralStepOnePage extends StatefulWidget {
class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> { class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
TextEditingController _nameTextController = TextEditingController(); TextEditingController _nameTextController = TextEditingController();
TextEditingController _mobileTextController = TextEditingController();
GetAllRelationshipTypeResponseModel _selectedRelation; GetAllRelationshipTypeResponseModel _selectedRelation;
String email; String email;
AuthenticatedUser authenticatedUser; AuthenticatedUser authenticatedUser;
GetAllSharedRecordsByStatusList selectedPatientFamily; GetAllSharedRecordsByStatusList selectedPatientFamily;
AdvanceModel advanceModel = AdvanceModel(); AdvanceModel advanceModel = AdvanceModel();
ProjectViewModel projectViewModel; ProjectViewModel projectViewModel;
String mobileNo = "";
// todo create a model for Country // todo create a model for Country
// todo use country from the json // todo use country from the json
@ -59,11 +63,11 @@ class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
SMSOTP( SMSOTP(
context, context,
1, 1,
_selectedCountry['code'] + _mobileTextController.text, _selectedCountry['code'] + mobileNo,
(value) { (value) {
submit(model, value); submit(model, value);
}, },
() => { () => {
Navigator.pop(context), Navigator.pop(context),
}, },
).displayDialog(context); ).displayDialog(context);
@ -74,108 +78,135 @@ class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
return BaseView<EReferralViewModel>( return BaseView<EReferralViewModel>(
onModelReady: (model) => model.getRelationTypes(), onModelReady: (model) => model.getRelationTypes(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
body: SingleChildScrollView( backgroundColor: CustomColors.appBackgroudGrey2Color,
physics: ScrollPhysics(), body: Container(
child: Container( child: Column(
margin: EdgeInsets.all(12), children: [
child: Center( Expanded(
child: Column( child: SingleChildScrollView(
crossAxisAlignment: CrossAxisAlignment.start, physics: ScrollPhysics(),
children: [ child: Container(
SizedBox( margin: EdgeInsets.all(12),
height: 20, child: Column(
), crossAxisAlignment: CrossAxisAlignment.start,
Center( children: [
child: Texts( SizedBox(
TranslationBase.of(context).referralRequesterInformation, height: 20,
), ),
), Text(
SizedBox( TranslationBase.of(context).referralRequesterInformation,
height: 12, style: TextStyle(
), fontSize: 16,
NewTextFields( fontWeight: FontWeight.w600,
hintText: TranslationBase.of(context).enterReferralRequesterName, letterSpacing: -0.64,
controller: _nameTextController,
),
SizedBox(
height: 12,
),
InkWell(
onTap: () => confirmSelectCountryTypeDialog(),
child: Container(
padding: EdgeInsets.all(12),
width: double.infinity,
height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Texts(getCountryName()), Icon(Icons.arrow_drop_down)],
), ),
), ),
), SizedBox(
SizedBox( height: 12,
height: 12,
),
MobileNumberTextFiled(
controller: _mobileTextController,
code: _selectedCountry == null ? "11" : _selectedCountry["code"],
),
SizedBox(
height: 12,
),
Center(
child: Texts(
TranslationBase.of(context).requesterRelationship,
textAlign: TextAlign.center,
), ),
), Directionality(textDirection: TextDirection.ltr, child: inputWidget(TranslationBase.of(context).enterReferralRequesterName, "", _nameTextController, isInputTypeNum: true)),
SizedBox( SizedBox(
height: 12, height: 12,
), ),
InkWell( PhoneNumberSelectorWidget(onNumberChange: (value) {
onTap: () => confirmSelectRelationTypeDialog(model.relationTypes), setState(() {
child: Container( mobileNo = value;
padding: EdgeInsets.all(12), });
width: double.infinity, }, onCountryChange: (value) {
height: 65, setState(() {
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), _selectedCountry = value;
child: Row( });
mainAxisAlignment: MainAxisAlignment.spaceBetween, }),
children: [Texts(getRelationName()), Icon(Icons.arrow_drop_down)], SizedBox(
height: 12,
),
Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: () => confirmSelectRelationTypeDialog(model.relationTypes),
child: Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).selectRelationship,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
Text(
getRelationName(),
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
],
),
),
Icon(Icons.arrow_drop_down),
],
),
), ),
), ),
), ],
], ),
), ),
), ),
), ),
), Card(
bottomSheet: Container( margin: EdgeInsets.zero,
color: Theme.of(context).scaffoldBackgroundColor, shape: cardRadius(0),
width: double.infinity, elevation: 20,
padding: EdgeInsets.all(9), child: Container(
child: DefaultButton( // color: Theme.of(context).scaffoldBackgroundColor,
TranslationBase.of(context).next, padding: EdgeInsets.all(12),
(_nameTextController.text.isEmpty || _selectedRelation == null || _mobileTextController.text.isEmpty) width: double.infinity,
? null child: DefaultButton(
: () async { TranslationBase.of(context).next,
Future.delayed(new Duration(milliseconds: 300)).then((value) async { (_nameTextController.text.isEmpty || _selectedRelation == null || mobileNo.isEmpty)
GifLoaderDialogUtils.showMyDialog(context); ? null
SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel = SendActivationCodeForEReferralRequestModel( : () async {
zipCode: _selectedCountry['code'], Future.delayed(new Duration(milliseconds: 300)).then((value) async {
patientMobileNumber: int.parse(_mobileTextController.text), GifLoaderDialogUtils.showMyDialog(context);
); SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel = SendActivationCodeForEReferralRequestModel(
await model.sendActivationCodeForEReferral(sendActivationCodeForEReferralRequestModel); zipCode: _selectedCountry['code'],
GifLoaderDialogUtils.hideDialog(context); patientMobileNumber: int.parse(mobileNo),
showSMSDialog(model); );
}); await model.sendActivationCodeForEReferral(sendActivationCodeForEReferralRequestModel);
}, GifLoaderDialogUtils.hideDialog(context);
disabledColor: Colors.grey, showSMSDialog(model);
});
},
disabledColor: Colors.grey,
),
),
), ),
))); ],
),
),
),
);
} }
void submit(EReferralViewModel model, code) async { void submit(EReferralViewModel model, code) async {
@ -195,7 +226,7 @@ class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
Navigator.of(context).pop(); Navigator.of(context).pop();
widget.changePageViewIndex(1); widget.changePageViewIndex(1);
widget.createEReferralRequestModel.requesterName = _nameTextController.text; widget.createEReferralRequestModel.requesterName = _nameTextController.text;
widget.createEReferralRequestModel.requesterContactNo = _selectedCountry['code'].toString().substring(1) + _mobileTextController.text; widget.createEReferralRequestModel.requesterContactNo = _selectedCountry['code'].toString().substring(1) + mobileNo;
widget.createEReferralRequestModel.requesterRelationship = _selectedRelation.iD; widget.createEReferralRequestModel.requesterRelationship = _selectedRelation.iD;
} }
}); });
@ -216,20 +247,93 @@ class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
); );
} }
void confirmSelectCountryTypeDialog() { Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller,
showDialog( {VoidCallback suffixTap, bool isEnable = true, bool hasSelection = false, int lines, bool isInputTypeNum = false}) {
context: context, return Container(
child: SelectCountryDialog( padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
selectedCountry: _selectedCountry, alignment: Alignment.center,
onValueSelected: (value) { decoration: BoxDecoration(
setState(() { borderRadius: BorderRadius.circular(15),
_selectedCountry = value; color: Colors.white,
}); border: Border.all(
}, color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: isInputTypeNum ? TextInputType.number : TextInputType.text,
controller: _controller,
maxLines: lines,
onChanged: (value) => {setState(() {})},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
suffixIconConstraints: BoxConstraints(minWidth: 50),
suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
),
), ),
); );
} }
// void confirmSelectCountryTypeDialog() {
// showDialog(
// context: context,
// child: SelectCountryDialog(
// selectedCountry: _selectedCountry,
// onValueSelected: (value) {
// setState(() {
// _selectedCountry = value;
// });
// },
// ),
// );
// }
String getRelationName() { String getRelationName() {
if (_selectedRelation != null) { if (_selectedRelation != null) {
if (projectViewModel.isArabic) { if (projectViewModel.isArabic) {
@ -237,7 +341,7 @@ class _NewEReferralStepOnePageState extends State<NewEReferralStepOnePage> {
} }
return _selectedRelation.textEn; return _selectedRelation.textEn;
} else } else
return TranslationBase.of(context).selectRelationship; return "";
} }
String getCountryName() { String getCountryName() {

@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -66,316 +67,297 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
}, },
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
backgroundColor: CustomColors.appBackgroudGrey2Color,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Container( child: Container(
margin: EdgeInsets.all(12), margin: EdgeInsets.all(12),
child: Center( child: Column(
child: FractionallySizedBox( mainAxisAlignment: MainAxisAlignment.start,
widthFactor: 0.94, crossAxisAlignment: CrossAxisAlignment.start,
child: Column( children: [
mainAxisAlignment: MainAxisAlignment.start, SizedBox(
crossAxisAlignment: CrossAxisAlignment.start, height: 20,
children: [ ),
SizedBox( Text(
height: 20, TranslationBase.of(context).otherInfo,
), style: TextStyle(
Center( fontSize: 16,
child: Texts( fontWeight: FontWeight.w600,
TranslationBase.of(context).otherInfo, letterSpacing: -0.64,
textAlign: TextAlign.center, ),
), ),
), SizedBox(
SizedBox( height: 12,
height: 12, ),
), Container(
Container( padding: EdgeInsets.all(12),
padding: EdgeInsets.only(top: 10), decoration: BoxDecoration(
decoration: BoxDecoration( borderRadius: BorderRadius.circular(12),
borderRadius: BorderRadius.circular(12), color: Colors.white,
color: Colors.white, ),
), child: Row(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Expanded(
mainAxisAlignment: MainAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Padding( children: [
padding: const EdgeInsets.symmetric(horizontal: 9), Text(
child: Texts( TranslationBase.of(context).medicalReport,
TranslationBase.of(context).medicalReport, style: TextStyle(
color: Colors.grey, fontSize: 12,
fontSize: 17, letterSpacing: -0.48,
), fontWeight: FontWeight.w600,
),
],
),
InkWell(
onTap: () {
ImageOptions.showImageOptions(
context,
(String image, File file) {
setState(() {
EReferralAttachment eReferralAttachment = new EReferralAttachment(fileName: 'image ${medicalReportImages.length + 1}.png', base64String: image);
medicalReportImages.add(eReferralAttachment);
});
},
);
},
child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(7),
color: Colors.white,
shape: BoxShape.rectangle,
),
child: Center(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.attach_file),
Texts(
TranslationBase.of(context).selectAttachment,
variant: 'bodyText',
textAlign: TextAlign.center,
),
],
),
), ),
), ),
),
SizedBox( ...List.generate(
height: 12,
),
...List.generate(
medicalReportImages.length, medicalReportImages.length,
(index) => Container( (index) => Container(
margin: EdgeInsets.all(10), padding: EdgeInsets.only(top: 6,bottom: 6),
padding: EdgeInsets.all(8.0), child: Row(
child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( Texts(
crossAxisAlignment: CrossAxisAlignment.start, medicalReportImages[index].fileName,
children: <Widget>[
Icon(FontAwesomeIcons.paperclip),
SizedBox(
width: 8,
),
Texts(
medicalReportImages[index].fileName,
),
],
), ),
InkWell(
onTap: () {
setState(() {
medicalReportImages.remove(medicalReportImages[index]);
});
},
child: Icon(
FontAwesomeIcons.trashAlt,
color: Colors.red[300],
))
], ],
), ),
)), InkWell(
], onTap: () {
setState(() {
medicalReportImages.remove(medicalReportImages[index]);
});
},
child: Icon(
Icons.close,
color: Colors.red[300],
))
],
),
),
),
InkWell(
onTap: () {
ImageOptions.showImageOptions(
context,
(String image, File file) {
setState(() {
EReferralAttachment eReferralAttachment = new EReferralAttachment(fileName: 'image ${medicalReportImages.length + 1}.png', base64String: image);
medicalReportImages.add(eReferralAttachment);
});
},
);
},
child: Padding(
padding: EdgeInsets.only(top: 12,bottom: 12),
child: Text(
TranslationBase.of(context).selectAttachment,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.56,
decoration: TextDecoration.underline,
color: CustomColors.accentColor,
),
),
),
),
],
),
), ),
), Icon(Icons.attach_file),
SizedBox( ],
height: 12, ),
), ),
Container( SizedBox(
padding: EdgeInsets.only(top: 10), height: 12,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), ),
child: Column( Container(
children: [ padding: EdgeInsets.only(top: 10),
Container( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
width: double.infinity, child: Column(
decoration: containerRadius(Colors.white, 12), children: [
margin: EdgeInsets.only(left: 20, right: 20), Container(
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12), width: double.infinity,
child: Row( decoration: containerRadius(Colors.white, 12),
children: [ margin: EdgeInsets.only(left: 20, right: 20),
Flexible( padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12),
child: Column( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Flexible(
Text( child: Column(
TranslationBase.of(context).preferredBranch, crossAxisAlignment: CrossAxisAlignment.start,
style: TextStyle( children: [
fontSize: 11, Text(
letterSpacing: -0.44, TranslationBase.of(context).preferredBranch,
fontWeight: FontWeight.w600, style: TextStyle(
), fontSize: 11,
), letterSpacing: -0.44,
Container( fontWeight: FontWeight.w600,
height: 18, ),
child: DropdownButtonHideUnderline( ),
child: DropdownButton<String>( Container(
key: projectDropdownKey, height: 18,
hint: Text(TranslationBase.of(context).selectPreferredBranch), child: DropdownButtonHideUnderline(
value: projectDropdownValue, child: DropdownButton<String>(
iconSize: 0, key: projectDropdownKey,
isExpanded: true, hint: Text(TranslationBase.of(context).selectPreferredBranch),
style: TextStyle(fontSize: 14, letterSpacing: -0.56, color: Colors.black), value: projectDropdownValue,
items: projectsList.map((item) { iconSize: 0,
return new DropdownMenuItem<String>( isExpanded: true,
value: item.mainProjectID.toString() + "," + item.name.toString(), style: TextStyle(fontSize: 14, letterSpacing: -0.56, color: Colors.black),
child: new Text(item.name), items: projectsList.map((item) {
); return new DropdownMenuItem<String>(
}).toList(), value: item.mainProjectID.toString() + "," + item.name.toString(),
onChanged: (newValue) { child: new Text(item.name),
setState(() { );
projectDropdownValue = newValue; }).toList(),
print(projectDropdownValue); onChanged: (newValue) {
}); setState(() {
}, projectDropdownValue = newValue;
), print(projectDropdownValue);
), });
},
), ),
], ),
), ),
), ],
Icon(Icons.keyboard_arrow_down), ),
], ),
)), Icon(Icons.keyboard_arrow_down),
], ],
), )),
), ],
SizedBox( ),
height: 12, ),
), SizedBox(
Container( height: 12,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), ),
child: Column( Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Row( Checkbox(
children: [ value: isPatientInsured,
Checkbox( activeColor: Colors.black38,
value: isPatientInsured, onChanged: (bool newValue) {
activeColor: Colors.black38, setState(() {
onChanged: (bool newValue) { isPatientInsured = newValue;
setState(() { });
isPatientInsured = newValue; }),
}); Padding(
}), padding: const EdgeInsets.all(20.0),
Padding( child: Texts(
padding: const EdgeInsets.all(20.0), TranslationBase.of(context).insuredPatientReferral,
child: Texts( fontSize: 17,
TranslationBase.of(context).insuredPatientReferral, ),
fontSize: 17,
),
),
],
), ),
], ],
), ),
], ],
), ),
],
),
),
if (isPatientInsured)
SizedBox(
height: 12,
),
Opacity(
opacity: isPatientInsured ? 1 : 0,
child: Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white,
), ),
if (isPatientInsured) child: Row(
SizedBox( crossAxisAlignment: CrossAxisAlignment.start,
height: 12, children: [
), Expanded(
Opacity( child: Column(
opacity: isPatientInsured ? 1 : 0, crossAxisAlignment: CrossAxisAlignment.start,
child: Container( children: [
padding: EdgeInsets.only(top: 10), Text(
decoration: BoxDecoration( TranslationBase.of(context).medicalReport,
borderRadius: BorderRadius.circular(12), style: TextStyle(
color: Colors.white, fontSize: 12,
), letterSpacing: -0.48,
child: Column( fontWeight: FontWeight.w600,
children: [
InkWell(
onTap: () {
ImageOptions.showImageOptions(context, (String image, File file) {
setState(() {
EReferralAttachment eReferralAttachment = new EReferralAttachment(fileName: 'image ${medicalReportImages.length + 1}.png', base64String: image);
insuredPatientImages = [eReferralAttachment];
});
});
},
child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(7),
color: Colors.white,
shape: BoxShape.rectangle,
),
child: Center(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.attach_file),
Texts(
'selected attachment',
variant: 'bodyText',
textAlign: TextAlign.center,
),
],
),
), ),
), ),
),
SizedBox( ...List.generate(
height: 12,
),
...List.generate(
insuredPatientImages.length, insuredPatientImages.length,
(index) => Container( (index) => Container(
margin: EdgeInsets.all(10), padding: EdgeInsets.only(top: 6,bottom: 6),
padding: EdgeInsets.all(8.0), child: Row(
child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( Texts(
crossAxisAlignment: CrossAxisAlignment.start, 'image ${index + 1}.png',
children: <Widget>[
Icon(FontAwesomeIcons.paperclip),
SizedBox(
width: 8,
),
Texts(
'image ${index + 1}.png',
),
],
), ),
InkWell(
onTap: () {
setState(() {
insuredPatientImages.remove(insuredPatientImages[index]);
});
},
child: Icon(
FontAwesomeIcons.trashAlt,
color: Colors.red[300],
))
], ],
), ),
)), InkWell(
], onTap: () {
setState(() {
insuredPatientImages.remove(insuredPatientImages[index]);
});
},
child: Icon(
Icons.close,
color: Colors.red[300],
),
)
],
),
),
),
InkWell(
onTap: () {
ImageOptions.showImageOptions(context, (String image, File file) {
setState(() {
EReferralAttachment eReferralAttachment = new EReferralAttachment(fileName: 'image ${medicalReportImages.length + 1}.png', base64String: image);
insuredPatientImages = [eReferralAttachment];
});
});
},
child: Padding(
padding: const EdgeInsets.only(top: 12,bottom: 12),
child: Text(
TranslationBase.of(context).selectAttachment,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.56,
decoration: TextDecoration.underline,
color: CustomColors.accentColor,
),
),
),
),
],
),
), ),
), Icon(Icons.attach_file),
), ],
SizedBox(
height: 12,
), ),
], ),
), ),
), ],
), ),
), ),
), ),

@ -7,18 +7,20 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/dialogs/select_country_ingo_Dialog.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/dialogs/select_country_ingo_Dialog.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../dialogs/select_city_dialog.dart'; import '../dialogs/select_city_dialog.dart';
class NewEReferralStepTowPage extends StatefulWidget { class NewEReferralStepTowPage extends StatefulWidget {
final CreateEReferralRequestModel createEReferralRequestModel; final CreateEReferralRequestModel createEReferralRequestModel;
final Function changePageViewIndex; final Function changePageViewIndex;
@ -32,20 +34,14 @@ class NewEReferralStepTowPage extends StatefulWidget {
class _NewEReferralStepTowPageState extends State<NewEReferralStepTowPage> { class _NewEReferralStepTowPageState extends State<NewEReferralStepTowPage> {
TextEditingController _patientNameTextController = TextEditingController(); TextEditingController _patientNameTextController = TextEditingController();
TextEditingController _patientIdentificationTextController = TextEditingController(); TextEditingController _patientIdentificationTextController = TextEditingController();
TextEditingController _mobileTextController = TextEditingController(); String mobileNo = "";
GetAllCitiesResponseModel _selectedCity ; GetAllCitiesResponseModel _selectedCity;
GetAllSharedRecordsByStatusList selectedPatientFamily; GetAllSharedRecordsByStatusList selectedPatientFamily;
// todo create a model for Country // todo create a model for Country
// todo use country from the json // todo use country from the json
dynamic _selectedCountry = { dynamic _selectedCountry = {"name": "Saudi Arabia", "name_ar": "المملكة العربية السعودية", "code": "+966", "countryCode": "SA", "pattern": "5xxxxxxxx", "maxLength": 9};
"name": "Saudi Arabia",
"name_ar": "المملكة العربية السعودية",
"code": "+966",
"countryCode": "SA",
"pattern": "5xxxxxxxx",
"maxLength": 9
};
AppSharedPreferences sharedPref = AppSharedPreferences(); AppSharedPreferences sharedPref = AppSharedPreferences();
AuthenticatedUser authUser; AuthenticatedUser authUser;
@ -57,143 +53,222 @@ class _NewEReferralStepTowPageState extends State<NewEReferralStepTowPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<EReferralViewModel>( return BaseView<EReferralViewModel>(
onModelReady: (model) => model.getAllCities(), onModelReady: (model) => model.getAllCities(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
body: SingleChildScrollView( backgroundColor: CustomColors.appBackgroudGrey2Color,
physics: ScrollPhysics(), body: Column(
child: Container( children: [
margin: EdgeInsets.all(12), Expanded(
child: Center( child: SingleChildScrollView(
child: FractionallySizedBox( physics: ScrollPhysics(),
widthFactor: 0.94, child: Container(
child: Column( margin: EdgeInsets.all(12),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
SizedBox( children: [
height: 30, SizedBox(
), height: 20,
Center( ),
child: Texts( Text(
TranslationBase.of(context).patientInfo, TranslationBase.of(context).patientInfo,
// "Patient information", style: TextStyle(
textAlign: TextAlign.center, fontSize: 16,
), fontWeight: FontWeight.w600,
), letterSpacing: -0.64,
SizedBox(
height: 12,
),
NewTextFields(
hintText: TranslationBase.of(context).enterIdentificationNumber,
controller: _patientIdentificationTextController,
keyboardType:TextInputType.number ,
),
SizedBox(
height: 12,
),
NewTextFields(
hintText: TranslationBase.of(context).patientName,
controller: _patientNameTextController,
),
SizedBox(
height: 12,
), ),
InkWell( ),
onTap: () => confirmSelectCountryTypeDialog(), SizedBox(
child: Container( height: 12,
padding: EdgeInsets.all(12), ),
width: double.infinity, inputWidget(TranslationBase.of(context).enterIdentificationNumber, "", _patientIdentificationTextController, isInputTypeNum: true),
height: 65, SizedBox(
decoration: BoxDecoration( height: 12,
borderRadius: BorderRadius.circular(12), ),
color: Colors.white), inputWidget(TranslationBase.of(context).patientName, "", _patientNameTextController, isInputTypeNum: true),
child: Row( SizedBox(
mainAxisAlignment: MainAxisAlignment.spaceBetween, height: 12,
children: [ ),
Texts(getCountryName()), PhoneNumberSelectorWidget(onNumberChange: (value) {
Icon(Icons.arrow_drop_down) setState(() {
], mobileNo = value;
), });
), }, onCountryChange: (value) {
), setState(() {
SizedBox( _selectedCountry = value;
height: 12, });
), }),
MobileNumberTextFiled( SizedBox(
controller: _mobileTextController, height: 12,
code: _selectedCountry == null ),
? "11" Text(
: _selectedCountry["code"], TranslationBase.of(context).patientLocated,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
letterSpacing: -0.64,
), ),
SizedBox( ),
height: 12, SizedBox(
), height: 12,
Center( ),
child: Texts( Container(
TranslationBase.of(context).patientLocated, padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
textAlign: TextAlign.center, alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
), ),
), ),
SizedBox( child: InkWell(
height: 12, onTap: () => confirmSelectCityDialog(model.allCities),
), child: Row(
InkWell( children: [
onTap: () => confirmSelectCityDialog( Expanded(
model.allCities), child: Column(
child: Container( crossAxisAlignment: CrossAxisAlignment.start,
padding: EdgeInsets.all(12), children: [
width: double.infinity, Text(
height: 65, TranslationBase.of(context).selectCity,
decoration: BoxDecoration( style: TextStyle(
borderRadius: BorderRadius.circular(12), fontSize: 11,
color: Colors.white), fontWeight: FontWeight.w600,
child: Row( color: Color(0xff2B353E),
mainAxisAlignment: MainAxisAlignment.spaceBetween, letterSpacing: -0.44,
children: [ ),
Texts(getRelationName()), ),
Icon(Icons.arrow_drop_down) Text(
], getRelationName(),
), style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
],
),
),
Icon(Icons.arrow_drop_down),
],
), ),
), ),
SizedBox( ),
height: 12, SizedBox(
), height: 12,
),
SizedBox( ],
height: 12,
),
],
),
), ),
), ),
), ),
), ),
bottomSheet: Container( Card(
color: Theme.of(context).scaffoldBackgroundColor, margin: EdgeInsets.zero,
width: double.infinity, shape: cardRadius(0),
padding: EdgeInsets.all(9), elevation: 20,
child: DefaultButton( child: Container(
TranslationBase.of(context).next, width: double.infinity,
(_patientNameTextController.text.isEmpty || _patientIdentificationTextController.text.isEmpty|| padding: EdgeInsets.all(12),
_selectedCity == null || child: DefaultButton(
_mobileTextController.text.isEmpty) ? null : () { TranslationBase.of(context).next,
this.widget.changePageViewIndex(2); (_patientNameTextController.text.isEmpty || _patientIdentificationTextController.text.isEmpty || _selectedCity == null || mobileNo.isEmpty)
this.widget.createEReferralRequestModel.identificationNo = int.parse( _patientIdentificationTextController.text); ? null
this.widget.createEReferralRequestModel.fullName = _patientNameTextController.text; : () {
this.widget.createEReferralRequestModel.patientMobileNumber = _selectedCountry['code'].toString().substring(1)+_mobileTextController.text; this.widget.changePageViewIndex(2);
this.widget.createEReferralRequestModel.cityCode = _selectedCity.iD.toString(); this.widget.createEReferralRequestModel.identificationNo = int.parse(_patientIdentificationTextController.text);
this.widget.createEReferralRequestModel.cityName = _selectedCity.description; this.widget.createEReferralRequestModel.fullName = _patientNameTextController.text;
}, this.widget.createEReferralRequestModel.patientMobileNumber = _selectedCountry['code'].toString().substring(1) + mobileNo;
disabledColor: Colors.grey, this.widget.createEReferralRequestModel.cityCode = _selectedCity.iD.toString();
this.widget.createEReferralRequestModel.cityName = _selectedCity.description;
},
disabledColor: Colors.grey,
),
), ),
))); )
],
),
),
);
}
Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller,
{VoidCallback suffixTap, bool isEnable = true, bool hasSelection = false, int lines, bool isInputTypeNum = false}) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: isInputTypeNum ? TextInputType.number : TextInputType.text,
controller: _controller,
maxLines: lines,
onChanged: (value) => {setState(() {})},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
suffixIconConstraints: BoxConstraints(minWidth: 50),
suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
),
),
);
} }
void confirmSelectCityDialog( void confirmSelectCityDialog(List<GetAllCitiesResponseModel> cities) {
List<GetAllCitiesResponseModel> cities) {
showDialog( showDialog(
context: context, context: context,
child: SelectCityDialog( child: SelectCityDialog(
@ -238,12 +313,7 @@ class _NewEReferralStepTowPageState extends State<NewEReferralStepTowPage> {
} }
class MobileNumberTextFiled extends StatelessWidget { class MobileNumberTextFiled extends StatelessWidget {
const MobileNumberTextFiled({ const MobileNumberTextFiled({Key key, this.controller, this.code}) : super(key: key);
Key key,
this.controller,
this.code
}) : super(key: key);
final TextEditingController controller; final TextEditingController controller;
final String code; final String code;
@ -252,8 +322,7 @@ class MobileNumberTextFiled extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
padding: EdgeInsets.all(5), padding: EdgeInsets.all(5),
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(15), color: Colors.white),
borderRadius: BorderRadius.circular(15), color: Colors.white),
child: Row(children: <Widget>[ child: Row(children: <Widget>[
Expanded( Expanded(
flex: 1, flex: 1,
@ -274,8 +343,7 @@ class MobileNumberTextFiled extends StatelessWidget {
child: TextField( child: TextField(
controller: controller, controller: controller,
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
decoration: InputDecoration( decoration: InputDecoration(border: InputBorder.none, hintText: TranslationBase.of(context).mobileNumber),
border: InputBorder.none, hintText: TranslationBase.of(context).mobileNumber),
), ),
), ),
) )

@ -10,8 +10,7 @@ class SelectCityDialog extends StatefulWidget {
final Function(GetAllCitiesResponseModel) onValueSelected; final Function(GetAllCitiesResponseModel) onValueSelected;
GetAllCitiesResponseModel selectedCity; GetAllCitiesResponseModel selectedCity;
SelectCityDialog( SelectCityDialog({Key key, this.cities, this.onValueSelected, this.selectedCity});
{Key key, this.cities, this.onValueSelected, this.selectedCity});
@override @override
_SelectCityDialogState createState() => _SelectCityDialogState(); _SelectCityDialogState createState() => _SelectCityDialogState();
@ -26,104 +25,109 @@ class _SelectCityDialogState extends State<SelectCityDialog> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SimpleDialog( return Dialog(
children: [ child: Column(
Column( children: [
children: [ Expanded(
Divider(), child: SingleChildScrollView(
...List.generate( child: Column(
widget.cities.length,
(index) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox( ...List.generate(
height: 2, widget.cities.length,
), (index) => Column(
Row( crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
Expanded( SizedBox(
flex: 1, height: 2,
child: InkWell(
onTap: () {
setState(() {
widget.selectedCity = widget.cities[index];
});
},
child: ListTile(
title: Text(widget.cities[index].description),
leading: Radio(
value: widget.cities[index],
groupValue: widget.selectedCity,
activeColor: Colors.red[800],
onChanged: (value) {
setState(() {
widget.selectedCity = value;
});
},
),
),
), ),
) Row(
], children: <Widget>[
), Expanded(
SizedBox( flex: 1,
height: 5.0, child: InkWell(
onTap: () {
setState(() {
widget.selectedCity = widget.cities[index];
});
},
child: ListTile(
title: Text(widget.cities[index].description),
leading: Radio(
value: widget.cities[index],
groupValue: widget.selectedCity,
activeColor: Colors.red[800],
onChanged: (value) {
setState(() {
widget.selectedCity = value;
});
},
),
),
),
)
],
),
SizedBox(
height: 5.0,
),
],
),
), ),
], ],
), ),
), ),
SizedBox( ),
height: 5.0, SizedBox(
), height: 5.0,
Row( ),
// mainAxisAlignment: MainAxisAlignment.spaceBetween, Row(
children: <Widget>[ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
Expanded( children: <Widget>[
flex: 1, Expanded(
child: InkWell( flex: 1,
onTap: () { child: InkWell(
Navigator.pop(context); onTap: () {
}, Navigator.pop(context);
child: Padding( },
padding: const EdgeInsets.all(8.0), child: Padding(
child: Container( padding: const EdgeInsets.all(8.0),
child: Center( child: Container(
child: Texts( child: Center(
TranslationBase.of(context).cancel.toUpperCase(), child: Texts(
color: Colors.red, TranslationBase.of(context).cancel.toUpperCase(),
), color: Colors.red,
), ),
), ),
), ),
), ),
), ),
Container( ),
width: 1, Container(
height: 30, width: 1,
color: Colors.grey[500], height: 30,
), color: Colors.grey[500],
Expanded( ),
flex: 1, Expanded(
child: InkWell( flex: 1,
onTap: () { child: InkWell(
widget.onValueSelected(widget.selectedCity); onTap: () {
Navigator.pop(context); widget.onValueSelected(widget.selectedCity);
}, Navigator.pop(context);
child: Padding( },
padding: const EdgeInsets.all(8.0), child: Padding(
child: Center( padding: const EdgeInsets.all(8.0),
child: Texts( child: Center(
TranslationBase.of(context).ok, child: Texts(
fontWeight: FontWeight.w400, TranslationBase.of(context).ok,
)), fontWeight: FontWeight.w400,
), )),
), ),
), ),
], ),
) ],
], )
) ],
], ),
); );
} }
} }

@ -84,6 +84,7 @@ class _EReferralPageState extends State<EReferralPage>
Expanded( Expanded(
child: TabBarView( child: TabBarView(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
controller: _tabController, controller: _tabController,
children: <Widget>[ children: <Widget>[
StartIndexForNewEReferral(), StartIndexForNewEReferral(),

@ -15,6 +15,7 @@ import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart'; import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -36,7 +37,7 @@ class SearchForReferralsPage extends StatefulWidget {
class _SearchForReferralsPageState extends State<SearchForReferralsPage> { class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
TextEditingController _searchTextController = TextEditingController(); TextEditingController _searchTextController = TextEditingController();
TextEditingController _mobileTextController = TextEditingController(); String mobileNo = "";
bool _isSubmitted = false; bool _isSubmitted = false;
dynamic _selectedCountry = {"name": "Saudi Arabia", "name_ar": "المملكة العربية السعودية", "code": "+966", "countryCode": "SA", "pattern": "5xxxxxxxx", "maxLength": 9}; dynamic _selectedCountry = {"name": "Saudi Arabia", "name_ar": "المملكة العربية السعودية", "code": "+966", "countryCode": "SA", "pattern": "5xxxxxxxx", "maxLength": 9};
@ -80,55 +81,106 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
InkWell( // InkWell(
onTap: () => selectSearchCriteriaDialog(), // onTap: () => selectSearchCriteriaDialog(),
child: Container( // child: Container(
padding: EdgeInsets.all(12), // padding: EdgeInsets.all(12),
width: double.infinity, // width: double.infinity,
height: 65, // height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), // decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Row( // child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Texts(getSearchCriteriaName()), Icon(Icons.arrow_drop_down)], // children: [Texts(getSearchCriteriaName()), Icon(Icons.arrow_drop_down)],
// ),
// ),
// ),
Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
), ),
), ),
), child: InkWell(
SizedBox( onTap: () => selectSearchCriteriaDialog(),
height: 12,
),
NewTextFields(
hintText: selectedCriteria.value == 1 ? "Enter Patient Identification No" : "Enter Referral Number",
controller: _searchTextController,
onChanged: (_) {
setState(() {});
},
),
SizedBox(
height: 12,
),
InkWell(
onTap: () => confirmSelectCountryTypeDialog(),
child: Container(
padding: EdgeInsets.all(12),
width: double.infinity,
height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
children: [Texts(getCountryName()), Icon(Icons.arrow_drop_down)], Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).selectSearchCriteria,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
Text(
getSearchCriteriaName(),
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
],
),
),
Icon(Icons.arrow_drop_down),
],
), ),
), ),
), ),
SizedBox( SizedBox(
height: 12, height: 12,
), ),
MobileNumberTextFiled(
controller: _mobileTextController, inputWidget(selectedCriteria.value == 1 ? "Enter Patient Identification No" : "Enter Referral Number", "", _searchTextController, isInputTypeNum: true),
onChange: (_) {
setState(() {}); SizedBox(
}, height: 12,
code: _selectedCountry == null ? "11" : _selectedCountry["code"],
), ),
PhoneNumberSelectorWidget(onNumberChange: (value) {
setState(() {
mobileNo = value;
});
}, onCountryChange: (value) {
setState(() {
_selectedCountry = value;
});
}),
// InkWell(
// onTap: () => confirmSelectCountryTypeDialog(),
// child: Container(
// padding: EdgeInsets.all(12),
// width: double.infinity,
// height: 65,
// decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [Texts(getCountryName()), Icon(Icons.arrow_drop_down)],
// ),
// ),
// ),
// SizedBox(
// height: 12,
// ),
// MobileNumberTextFiled(
// controller: _mobileTextController,
// onChange: (_) {
// setState(() {});
// },
// code: _selectedCountry == null ? "11" : _selectedCountry["code"],
// ),
SizedBox( SizedBox(
height: 12, height: 12,
), ),
@ -200,11 +252,11 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
padding: EdgeInsets.all(14), padding: EdgeInsets.all(14),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).search, TranslationBase.of(context).search,
(_searchTextController.text.isEmpty || _mobileTextController.text.isEmpty) (_searchTextController.text.isEmpty || mobileNo.isEmpty)
? null ? null
: () async { : () async {
SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel( SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel(
patientMobileNumber: _selectedCountry['code'] + _mobileTextController.text, patientMobileNumber: _selectedCountry['code'] + mobileNo,
); );
if (selectedCriteria.value == 1) { if (selectedCriteria.value == 1) {
searchEReferralRequestModel.identificationNo = _searchTextController.text; searchEReferralRequestModel.identificationNo = _searchTextController.text;
@ -258,6 +310,79 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
); );
} }
Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller,
{VoidCallback suffixTap, bool isEnable = true, bool hasSelection = false, int lines, bool isInputTypeNum = false}) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: isInputTypeNum ? TextInputType.number : TextInputType.text,
controller: _controller,
maxLines: lines,
onChanged: (value) => {setState(() {})},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
suffixIconConstraints: BoxConstraints(minWidth: 50),
suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
),
),
);
}
String getSearchCriteriaName() { String getSearchCriteriaName() {
return selectedCriteria.name; return selectedCriteria.name;
} }

@ -8,8 +8,7 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -26,6 +25,28 @@ class OrdersLogDetailsPage extends StatelessWidget {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
void showConfirmMessage(HomeHealthCareViewModel model, GetHHCAllPresOrdersResponseModel order) { void showConfirmMessage(HomeHealthCareViewModel model, GetHHCAllPresOrdersResponseModel order) {
showDialog(
context: context,
child: ConfirmWithMessageDialog(
message: TranslationBase.of(context).cancelOrderMsg,
onTap: () async {
UpdatePresOrderRequestModel updatePresOrderRequestModel = UpdatePresOrderRequestModel(presOrderID: order.iD, rejectionReason: "", presOrderStatus: 4, editedBy: 3);
model.setState(ViewState.Busy);
await model.updateHHCPresOrder(updatePresOrderRequestModel);
if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error);
} else {
AppToast.showSuccessToast(message: TranslationBase.of(context).processDoneSuccessfully);
await model.getHHCAllPresOrders();
// await model.getHHCAllServices();
}
},
),
);
return;
// todo 'sikander' remove useless code
showDialog( showDialog(
context: context, context: context,
child: ConfirmCancelOrderDialog( child: ConfirmCancelOrderDialog(
@ -49,128 +70,130 @@ class OrdersLogDetailsPage extends StatelessWidget {
return AppScaffold( return AppScaffold(
isShowAppBar: false, isShowAppBar: false,
baseViewModel: model, baseViewModel: model,
body: model.hhcAllPresOrders.length > 0 ? ListView.separated( body: model.hhcAllPresOrders.length > 0
padding: EdgeInsets.all(21), ? ListView.separated(
physics: BouncingScrollPhysics(), padding: EdgeInsets.all(21),
itemBuilder: (context, index) { physics: BouncingScrollPhysics(),
GetHHCAllPresOrdersResponseModel order = model.hhcAllPresOrders[index]; itemBuilder: (context, index) {
GetHHCAllPresOrdersResponseModel order = model.hhcAllPresOrders[index];
int status = order.status; int status = order.status;
String _statusDisp = projectViewModel.isArabic ? order.descriptionN : order.description; String _statusDisp = projectViewModel.isArabic ? order.descriptionN : order.description;
Color _color; Color _color;
if (status == 1) { if (status == 1) {
//pending //pending
_color = Color(0xffCC9B14); _color = Color(0xffCC9B14);
} else if (status == 2) { } else if (status == 2) {
//processing //processing
_color = Color(0xff2E303A); _color = Color(0xff2E303A);
} else if (status == 3) { } else if (status == 3) {
//completed //completed
_color = Color(0xff359846); _color = Color(0xff359846);
} else if (status == 4) { } else if (status == 4) {
//cancel // Rejected //cancel // Rejected
_color = Color(0xffD02127); _color = Color(0xffD02127);
} }
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: _color, color: _color,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Color(0xff000000).withOpacity(.05), color: Color(0xff000000).withOpacity(.05),
blurRadius: 27, blurRadius: 27,
offset: Offset(0, -3), offset: Offset(0, -3),
), ),
], ],
),
child: Container(
// decoration: containerColorRadiusLeft(Colors.white, 12),
margin: EdgeInsets.only(left: projectViewModel.isArabic ? 0 : 6, right: projectViewModel.isArabic ? 6 : 0),
padding: EdgeInsets.symmetric(vertical: 14, horizontal: 12),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.white, width: 1),
borderRadius: BorderRadius.only(
bottomRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
topRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
bottomLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
topLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
), ),
), child: Container(
// clipBehavior: Clip.antiAlias, // decoration: containerColorRadiusLeft(Colors.white, 12),
child: Row( margin: EdgeInsets.only(left: projectViewModel.isArabic ? 0 : 6, right: projectViewModel.isArabic ? 6 : 0),
crossAxisAlignment: CrossAxisAlignment.start, padding: EdgeInsets.symmetric(vertical: 14, horizontal: 12),
children: [ decoration: BoxDecoration(
Expanded( color: Colors.white,
child: Column( border: Border.all(color: Colors.white, width: 1),
mainAxisAlignment: MainAxisAlignment.start, borderRadius: BorderRadius.only(
crossAxisAlignment: CrossAxisAlignment.start, bottomRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
children: [ topRight: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(10.0),
Text( bottomLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
_statusDisp, topLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: _color, letterSpacing: -0.4, height: 16 / 10), ),
), ),
SizedBox(height: 6), // clipBehavior: Clip.antiAlias,
Text( child: Row(
'${TranslationBase.of(context).requestID}: ${order.iD}', crossAxisAlignment: CrossAxisAlignment.start,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), children: [
), Expanded(
Row( child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
TranslationBase.of(context).hospital + ": ", _statusDisp,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: _color, letterSpacing: -0.4, height: 16 / 10),
), ),
Expanded( SizedBox(height: 6),
child: Text( Text(
!projectViewModel.isArabic ? order.nearestProjectDescription.trim().toString() : order.nearestProjectDescriptionN.toString(), '${TranslationBase.of(context).requestID}: ${order.iD}',
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
), ),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).hospital + ": ",
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
),
Expanded(
child: Text(
!projectViewModel.isArabic ? order.nearestProjectDescription.trim().toString() : order.nearestProjectDescriptionN.toString(),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56),
),
),
],
)
], ],
) ),
],
),
),
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.createdOn), projectViewModel.isArabic),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
), ),
SizedBox(height: 12), Column(
if (order.status == 1 || order.status == 2) mainAxisAlignment: MainAxisAlignment.spaceBetween,
InkWell( crossAxisAlignment: CrossAxisAlignment.end,
onTap: () { children: [
showConfirmMessage(model, order); Text(
}, DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(order.createdOn)),
child: Container( style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 14),
decoration: BoxDecoration(
color: Color(0xffD02127),
border: Border.all(color: Colors.white, width: 1),
borderRadius: BorderRadius.circular(10),
),
child: Text(
TranslationBase.of(context).cancel_nocaps,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.4),
),
), ),
), SizedBox(height: 12),
if (order.status == 1 || order.status == 2)
InkWell(
onTap: () {
showConfirmMessage(model, order);
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 14),
decoration: BoxDecoration(
color: Color(0xffD02127),
border: Border.all(color: Colors.white, width: 1),
borderRadius: BorderRadius.circular(10),
),
child: Text(
TranslationBase.of(context).cancel_nocaps,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.4),
),
),
),
],
),
], ],
), ),
], ),
), );
), },
); separatorBuilder: (context, index) => SizedBox(height: 12),
}, itemCount: model.hhcAllPresOrders.length)
separatorBuilder: (context, index) => SizedBox(height: 12), : getNoDataWidget(context),
itemCount: model.hhcAllPresOrders.length) : getNoDataWidget(context),
); );
} }
} }

@ -4,101 +4,101 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// todo 'sikander' remove useless code
// ignore: must_be_immutable // ignore: must_be_immutable
class ConfirmAddAmountDialog extends StatefulWidget { // class ConfirmAddAmountDialog extends StatefulWidget {
final int amount; // final int amount;
final String unit; // final String unit;
final H2OViewModel model; // final H2OViewModel model;
//
ConfirmAddAmountDialog({Key key, this.model, this.amount, this.unit = "ml"}); // ConfirmAddAmountDialog({Key key, this.model, this.amount, this.unit = "ml"});
//
@override // @override
_ConfirmAddAmountDialogState createState() => _ConfirmAddAmountDialogState(); // _ConfirmAddAmountDialogState createState() => _ConfirmAddAmountDialogState();
} // }
//
class _ConfirmAddAmountDialogState extends State<ConfirmAddAmountDialog> { // class _ConfirmAddAmountDialogState extends State<ConfirmAddAmountDialog> {
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
} // }
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return SimpleDialog( // return SimpleDialog(
contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 24.0, 8.0), // contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 24.0, 8.0),
titlePadding: EdgeInsets.fromLTRB(24.0, 16.0, 24.0, 8.0), // titlePadding: EdgeInsets.fromLTRB(24.0, 16.0, 24.0, 8.0),
title: Center( // title: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).confirm, // TranslationBase.of(context).confirm,
textAlign: TextAlign.center, // textAlign: TextAlign.center,
color: Colors.black, // color: Colors.black,
), // ),
), // ),
children: [ // children: [
Column( // Column(
children: [ // children: [
Divider(), // Divider(),
Center( // Center(
child: Texts( // child: Texts(
"${TranslationBase.of(context).areyousure} ${widget.amount} ${widget.unit} ?", // "${TranslationBase.of(context).areyousure} ${widget.amount} ${widget.unit} ?",
textAlign: TextAlign.center, // textAlign: TextAlign.center,
color: Colors.grey, // color: Colors.grey,
), // ),
), // ),
SizedBox( // SizedBox(
height: 16.0, // height: 16.0,
), // ),
Row( // Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.all(8.0),
child: Container( // child: Container(
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).cancel.toUpperCase(), // TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, // color: Colors.red,
), // ),
), // ),
), // ),
), // ),
), // ),
), // ),
Container( // Container(
width: 1, // width: 1,
height: 30, // height: 30,
color: Colors.grey[500], // color: Colors.grey[500],
), // ),
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () async { // onTap: () async {
InsertUserActivityRequestModel insertUserActivityRequestModel = InsertUserActivityRequestModel(quantityIntake: widget.amount); // InsertUserActivityRequestModel insertUserActivityRequestModel = InsertUserActivityRequestModel(quantityIntake: widget.amount);
await widget.model.insertUserActivity(insertUserActivityRequestModel); // await widget.model.insertUserActivity(insertUserActivityRequestModel);
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.all(8.0),
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).ok.toUpperCase(), // TranslationBase.of(context).ok.toUpperCase(),
fontWeight: FontWeight.w400, // fontWeight: FontWeight.w400,
)), // )),
), // ),
), // ),
), // ),
], // ],
), // ),
], // ],
) // )
], // ],
); // );
} // }
} // }

@ -4,163 +4,163 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// todo 'sikander' remove useless code
// ignore: must_be_immutable // ignore: must_be_immutable
class SelectAmountDialog extends StatefulWidget { // class SelectAmountDialog extends StatefulWidget {
final Function(AmountModel) onValueSelected; // final Function(AmountModel) onValueSelected;
AmountModel selectedAmount; // AmountModel selectedAmount;
//
SelectAmountDialog({Key key, this.onValueSelected, this.selectedAmount}); // SelectAmountDialog({Key key, this.onValueSelected, this.selectedAmount});
//
@override // @override
_SelectAmountDialogState createState() => _SelectAmountDialogState(); // _SelectAmountDialogState createState() => _SelectAmountDialogState();
} // }
//
class _SelectAmountDialogState extends State<SelectAmountDialog> { // class _SelectAmountDialogState extends State<SelectAmountDialog> {
List<AmountModel> searchAmount = [ // List<AmountModel> searchAmount = [
AmountModel(name: "l", nameAr: "لتر", value: 1), // AmountModel(name: "l", nameAr: "لتر", value: 1),
AmountModel(name: "ml", nameAr: "مم لتر", value: 2), // AmountModel(name: "ml", nameAr: "مم لتر", value: 2),
]; // ];
@override // @override
void initState() { // void initState() {
super.initState(); // super.initState();
widget.selectedAmount = widget.selectedAmount ?? searchAmount[0]; // widget.selectedAmount = widget.selectedAmount ?? searchAmount[0];
getLanguage(); // getLanguage();
} // }
//
String languageID = "en"; // String languageID = "en";
//
void getLanguage() async { // void getLanguage() async {
languageID = await sharedPref.getString(APP_LANGUAGE); // languageID = await sharedPref.getString(APP_LANGUAGE);
setState(() {}); // setState(() {});
} // }
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return SimpleDialog( // return SimpleDialog(
children: [ // children: [
Column( // Column(
children: [ // children: [
Texts( // Texts(
TranslationBase.of(context).preferredunit, // TranslationBase.of(context).preferredunit,
fontSize: 20, // fontSize: 20,
), // ),
Divider(), // Divider(),
...List.generate( // ...List.generate(
searchAmount.length, // searchAmount.length,
(index) => Column( // (index) => Column(
crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
children: [ // children: [
SizedBox( // SizedBox(
height: 2, // height: 2,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
setState(() { // setState(() {
widget.selectedAmount = searchAmount[index]; // widget.selectedAmount = searchAmount[index];
}); // });
}, // },
child: ListTile( // child: ListTile(
title: Text(languageID == "ar" ? searchAmount[index].nameAr : searchAmount[index].name), // title: Text(languageID == "ar" ? searchAmount[index].nameAr : searchAmount[index].name),
leading: Radio( // leading: Radio(
value: searchAmount[index], // value: searchAmount[index],
groupValue: widget.selectedAmount, // groupValue: widget.selectedAmount,
activeColor: Colors.red[800], // activeColor: Colors.red[800],
onChanged: (value) { // onChanged: (value) {
setState(() { // setState(() {
widget.selectedAmount = value; // widget.selectedAmount = value;
}); // });
}, // },
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
], // ],
), // ),
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.all(8.0),
child: Container( // child: Container(
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).cancel.toUpperCase(), // TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, // color: Colors.red,
), // ),
), // ),
), // ),
), // ),
), // ),
), // ),
Container( // Container(
width: 1, // width: 1,
height: 30, // height: 30,
color: Colors.grey[500], // color: Colors.grey[500],
), // ),
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
widget.onValueSelected(widget.selectedAmount); // widget.onValueSelected(widget.selectedAmount);
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.all(8.0),
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).ok, // TranslationBase.of(context).ok,
fontWeight: FontWeight.w400, // fontWeight: FontWeight.w400,
)), // )),
), // ),
), // ),
), // ),
], // ],
) // )
], // ],
) // )
], // ],
); // );
} // }
} // }
//
class AmountModel { // class AmountModel {
String name; // String name;
String nameAr; // String nameAr;
int value; // int value;
//
AmountModel({this.name, this.nameAr, this.value}); // AmountModel({this.name, this.nameAr, this.value});
//
AmountModel.fromJson(Map<String, dynamic> json) { // AmountModel.fromJson(Map<String, dynamic> json) {
name = json['name']; // name = json['name'];
nameAr = json['nameAr']; // nameAr = json['nameAr'];
value = json['value']; // value = json['value'];
} // }
//
Map<String, dynamic> toJson() { // Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); // final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name; // data['name'] = this.name;
data['nameAr'] = this.nameAr; // data['nameAr'] = this.nameAr;
data['value'] = this.value; // data['value'] = this.value;
return data; // return data;
} // }
} // }

@ -10,123 +10,124 @@ import 'package:flutter/material.dart';
import 'Dialog/select_amount_dialog.dart'; import 'Dialog/select_amount_dialog.dart';
class AddCustomAmount extends StatefulWidget { // todo 'sikander' remove useless code
final H2OViewModel model; // class AddCustomAmount extends StatefulWidget {
final Function changePageViewIndex; // final H2OViewModel model;
// final Function changePageViewIndex;
const AddCustomAmount({Key key, this.model, this.changePageViewIndex}) //
: super(key: key); // const AddCustomAmount({Key key, this.model, this.changePageViewIndex})
// : super(key: key);
@override //
_AddCustomAmountState createState() => _AddCustomAmountState(); // @override
} // _AddCustomAmountState createState() => _AddCustomAmountState();
// }
class _AddCustomAmountState extends State<AddCustomAmount> { //
TextEditingController _nameTextController = TextEditingController(); // class _AddCustomAmountState extends State<AddCustomAmount> {
AmountModel selectedAmount; // TextEditingController _nameTextController = TextEditingController();
// AmountModel selectedAmount;
@override //
void initState() { // @override
setState(() { // void initState() {
_nameTextController.text = "0"; // setState(() {
}); // _nameTextController.text = "0";
super.initState(); // });
} // super.initState();
// }
@override //
Widget build(BuildContext context) { // @override
return AppScaffold( // Widget build(BuildContext context) {
isShowAppBar: true, // return AppScaffold(
appBarTitle:TranslationBase.of(context).customLabel, // isShowAppBar: true,
body: SingleChildScrollView( // appBarTitle:TranslationBase.of(context).customLabel,
physics: ScrollPhysics(), // body: SingleChildScrollView(
child: Container( // physics: ScrollPhysics(),
margin: EdgeInsets.all(12), // child: Container(
child: Center( // margin: EdgeInsets.all(12),
child: FractionallySizedBox( // child: Center(
widthFactor: 0.94, // child: FractionallySizedBox(
child: Column( // widthFactor: 0.94,
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
SizedBox( // children: [
height: 12, // SizedBox(
), // height: 12,
NewTextFields( // ),
hintText: TranslationBase.of(context).h2oAmountOfWater, // NewTextFields(
// type: "Number", // hintText: TranslationBase.of(context).h2oAmountOfWater,
controller: _nameTextController, // // type: "Number",
), // controller: _nameTextController,
SizedBox( // ),
height: 12, // SizedBox(
), // height: 12,
InkWell( // ),
onTap: () => confirmAmountTypeDialog(), // InkWell(
child: Container( // onTap: () => confirmAmountTypeDialog(),
padding: EdgeInsets.all(12), // child: Container(
width: double.infinity, // padding: EdgeInsets.all(12),
height: 65, // width: double.infinity,
decoration: BoxDecoration( // height: 65,
borderRadius: BorderRadius.circular(12), // decoration: BoxDecoration(
color: Colors.white), // borderRadius: BorderRadius.circular(12),
child: Row( // color: Colors.white),
mainAxisAlignment: MainAxisAlignment.spaceBetween, // child: Row(
children: [ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
Texts(getAmountName()), // children: [
Icon(Icons.arrow_drop_down) // Texts(getAmountName()),
], // Icon(Icons.arrow_drop_down)
), // ],
), // ),
), // ),
SizedBox( // ),
height: 12, // SizedBox(
), // height: 12,
SecondaryButton( // ),
textColor: Colors.white, // SecondaryButton(
label: TranslationBase.of(context).ok, // textColor: Colors.white,
onTap: () async { // label: TranslationBase.of(context).ok,
Navigator.of(context).pop(); // onTap: () async {
showConfirmMessage (int.parse(_nameTextController.text), widget.model); // Navigator.of(context).pop();
}, // showConfirmMessage (int.parse(_nameTextController.text), widget.model);
// loading: model.state == ViewState.BusyLocal, // },
disabled: _nameTextController.text.isEmpty || selectedAmount == null), // // loading: model.state == ViewState.BusyLocal,
SizedBox( // disabled: _nameTextController.text.isEmpty || selectedAmount == null),
height: 12, // SizedBox(
), // height: 12,
], // ),
), // ],
), // ),
), // ),
), // ),
), // ),
); // ),
} // );
// }
//
void confirmAmountTypeDialog() { //
showDialog( // void confirmAmountTypeDialog() {
context: context, // showDialog(
child: SelectAmountDialog( // context: context,
selectedAmount: selectedAmount, // child: SelectAmountDialog(
onValueSelected: (value) { // selectedAmount: selectedAmount,
setState(() { // onValueSelected: (value) {
selectedAmount = value; // setState(() {
}); // selectedAmount = value;
}, // });
), // },
); // ),
} // );
// }
//
String getAmountName() { //
if (selectedAmount != null) // String getAmountName() {
return selectedAmount.name; // if (selectedAmount != null)
else // return selectedAmount.name;
return TranslationBase.of(context).selectUnit; // else
} // return TranslationBase.of(context).selectUnit;
// }
//
//
void showConfirmMessage(int amount, H2OViewModel model) { //
showDialog(context: context, child: ConfirmAddAmountDialog(model: model,amount:amount,)); // void showConfirmMessage(int amount, H2OViewModel model) {
} // showDialog(context: context, child: ConfirmAddAmountDialog(model: model,amount:amount,));
} // }
// }

@ -302,25 +302,11 @@ class _TodayPageState extends State<TodayPage> {
); );
} }
Widget _circularButton(context, int value, model, {bool isCustom = false}) { Widget _circularButton(context, int value, model) {
String _text = "$value${TranslationBase.of(context).ml}"; String _text = "$value${TranslationBase.of(context).ml}";
if (isCustom) {
_text = TranslationBase.of(context).custom;
}
return InkWell( return InkWell(
onTap: () { onTap: () {
if (isCustom) { showConfirmMessage(context, value, model);
Navigator.push(
context,
FadePage(
page: AddCustomAmount(
model: model,
),
),
);
} else {
showConfirmMessage(context, value, model);
}
}, },
child: Container( child: Container(
padding: EdgeInsets.all(21), padding: EdgeInsets.all(21),

@ -9,189 +9,193 @@ import 'package:flutter/material.dart';
import '../add_custom_amount.dart'; import '../add_custom_amount.dart';
class H20FloatingActionButton extends StatefulWidget {
const H20FloatingActionButton({Key key, @required AnimationController controller, @required this.model}) : super(key: key);
final H2OViewModel model; // todo 'sikander' remove useless code
@override
_H20FloatingActionButtonState createState() => _H20FloatingActionButtonState();
}
class _H20FloatingActionButtonState extends State<H20FloatingActionButton> with TickerProviderStateMixin { // class H20FloatingActionButton extends StatefulWidget {
AnimationController _controller; // const H20FloatingActionButton({Key key, @required AnimationController controller, @required this.model}) : super(key: key);
@override //
void initState() { // final H2OViewModel model;
_controller = new AnimationController( //
vsync: this, // @override
duration: const Duration(milliseconds: 500), // _H20FloatingActionButtonState createState() => _H20FloatingActionButtonState();
); // }
super.initState(); //
} // class _H20FloatingActionButtonState extends State<H20FloatingActionButton> with TickerProviderStateMixin {
// AnimationController _controller;
void showConfirmMessage(int amount, H2OViewModel model) { // @override
showDialog( // void initState() {
context: context, // _controller = new AnimationController(
child: ConfirmAddAmountDialog( // vsync: this,
model: model, // duration: const Duration(milliseconds: 500),
amount: amount, // );
), // super.initState();
); // }
} //
// void showConfirmMessage(int amount, H2OViewModel model) {
@override // showDialog(
Widget build(BuildContext context) { // context: context,
return Container( // child: ConfirmAddAmountDialog(
margin: EdgeInsets.only(left: 20, right: 20), // model: model,
child: new Column(mainAxisSize: MainAxisSize.min, children: [ // amount: amount,
Row( // ),
mainAxisAlignment: MainAxisAlignment.start, // );
children: [ // }
Column( //
crossAxisAlignment: CrossAxisAlignment.end, // @override
children: [ // Widget build(BuildContext context) {
ActionButton( // return Container(
controller: _controller, // margin: EdgeInsets.only(left: 20, right: 20),
text: "600${TranslationBase.of(context).ml}", // child: new Column(mainAxisSize: MainAxisSize.min, children: [
onTap: () { // Row(
showConfirmMessage(600, widget.model); // mainAxisAlignment: MainAxisAlignment.start,
}, // children: [
), // Column(
ActionButton( // crossAxisAlignment: CrossAxisAlignment.end,
controller: _controller, // children: [
text: "330${TranslationBase.of(context).ml}", // ActionButton(
onTap: () { // controller: _controller,
showConfirmMessage(330, widget.model); // text: "600${TranslationBase.of(context).ml}",
}, // onTap: () {
), // showConfirmMessage(600, widget.model);
ActionButton( // },
controller: _controller, // ),
text: "200${TranslationBase.of(context).ml}", // ActionButton(
onTap: () { // controller: _controller,
showConfirmMessage(200, widget.model); // text: "330${TranslationBase.of(context).ml}",
}, // onTap: () {
), // showConfirmMessage(330, widget.model);
], // },
), // ),
], // ActionButton(
), // controller: _controller,
Row( // text: "200${TranslationBase.of(context).ml}",
mainAxisAlignment: MainAxisAlignment.start, // onTap: () {
children: [ // showConfirmMessage(200, widget.model);
FloatingActionButton( // },
heroTag: null, // ),
child: new AnimatedBuilder( // ],
animation: _controller, // ),
builder: (BuildContext context, Widget child) { // ],
return new Transform( // ),
transform: new Matrix4.rotationZ(_controller.value * 0.5 * math.pi), // Row(
alignment: FractionalOffset.center, // mainAxisAlignment: MainAxisAlignment.start,
child: new Icon(_controller.isDismissed ? Icons.add : Icons.close), // children: [
); // FloatingActionButton(
}, // heroTag: null,
), // child: new AnimatedBuilder(
onPressed: () { // animation: _controller,
if (_controller.isDismissed) { // builder: (BuildContext context, Widget child) {
_controller.forward(); // return new Transform(
} else { // transform: new Matrix4.rotationZ(_controller.value * 0.5 * math.pi),
_controller.reverse(); // alignment: FractionalOffset.center,
} // child: new Icon(_controller.isDismissed ? Icons.add : Icons.close),
}, // );
), // },
new Container( // ),
margin: EdgeInsets.only(left: 8, bottom: 4), // onPressed: () {
alignment: FractionalOffset.topCenter, // if (_controller.isDismissed) {
child: new ScaleTransition( // _controller.forward();
scale: new CurvedAnimation( // } else {
parent: _controller, // _controller.reverse();
curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut), // }
), // },
child: new FloatingActionButton( // ),
backgroundColor: Colors.white, // new Container(
heroTag: null, // margin: EdgeInsets.only(left: 8, bottom: 4),
// mini: true, // alignment: FractionalOffset.topCenter,
child: Text( // child: new ScaleTransition(
TranslationBase.of(context).custom, // scale: new CurvedAnimation(
textAlign: TextAlign.center, // parent: _controller,
style: TextStyle(fontSize: 12, color: Colors.grey), // curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut),
), // ),
onPressed: () { // child: new FloatingActionButton(
Navigator.push( // backgroundColor: Colors.white,
context, // heroTag: null,
FadePage( // // mini: true,
page: AddCustomAmount( // child: Text(
model: widget.model, // TranslationBase.of(context).custom,
), // textAlign: TextAlign.center,
), // style: TextStyle(fontSize: 12, color: Colors.grey),
); // ),
}, // onPressed: () {
), // Navigator.push(
), // context,
), // FadePage(
new Container( // page: AddCustomAmount(
margin: EdgeInsets.only(left: 8, bottom: 4), // model: widget.model,
alignment: FractionalOffset.topCenter, // ),
child: new ScaleTransition( // ),
scale: new CurvedAnimation( // );
parent: _controller, // },
curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut), // ),
), // ),
child: new FloatingActionButton( // ),
backgroundColor: Colors.white, // new Container(
heroTag: null, // margin: EdgeInsets.only(left: 8, bottom: 4),
//mini: true, // alignment: FractionalOffset.topCenter,
child: Text( // child: new ScaleTransition(
TranslationBase.of(context).undo, // scale: new CurvedAnimation(
textAlign: TextAlign.center, // parent: _controller,
style: TextStyle(fontSize: 12.0, color: Colors.grey), // curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut),
), // ),
onPressed: undoVolume, // child: new FloatingActionButton(
), // backgroundColor: Colors.white,
), // heroTag: null,
), // //mini: true,
], // child: Text(
), // TranslationBase.of(context).undo,
]), // textAlign: TextAlign.center,
); // style: TextStyle(fontSize: 12.0, color: Colors.grey),
} // ),
// onPressed: undoVolume,
void undoVolume() async { // ),
GifLoaderDialogUtils.showMyDialog(context); // ),
await widget.model.undoUserActivity(); // ),
GifLoaderDialogUtils.hideDialog(context); // ],
} // ),
} // ]),
// );
class ActionButton extends StatelessWidget { // }
const ActionButton({Key key, @required AnimationController controller, @required this.text, this.onTap}) //
: _controller = controller, // void undoVolume() async {
super(key: key); // GifLoaderDialogUtils.showMyDialog(context);
// await widget.model.undoUserActivity();
final AnimationController _controller; // GifLoaderDialogUtils.hideDialog(context);
final String text; // }
final Function onTap; // }
//
@override // class ActionButton extends StatelessWidget {
Widget build(BuildContext context) { // const ActionButton({Key key, @required AnimationController controller, @required this.text, this.onTap})
return Container( // : _controller = controller,
margin: EdgeInsets.only(left: 4, bottom: 8), // super(key: key);
alignment: FractionalOffset.topCenter, //
child: new ScaleTransition( // final AnimationController _controller;
scale: new CurvedAnimation( // final String text;
parent: _controller, // final Function onTap;
curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut), //
), // @override
child: new FloatingActionButton( // Widget build(BuildContext context) {
heroTag: null, // return Container(
backgroundColor: Colors.white, // margin: EdgeInsets.only(left: 4, bottom: 8),
//mini: true, // alignment: FractionalOffset.topCenter,
child: Text( // child: new ScaleTransition(
text, // scale: new CurvedAnimation(
textAlign: TextAlign.center, // parent: _controller,
style: TextStyle(fontSize: 12.0, color: Colors.grey), // curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut),
), // ),
onPressed: onTap), // child: new FloatingActionButton(
), // heroTag: null,
); // backgroundColor: Colors.white,
} // //mini: true,
} // child: Text(
// text,
// textAlign: TextAlign.center,
// style: TextStyle(fontSize: 12.0, color: Colors.grey),
// ),
// onPressed: onTap),
// ),
// );
// }
// }

@ -96,8 +96,7 @@ class _BloodDonationPageState extends State<BloodDonationPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Texts(
TranslationBase.of(context).bloodDEnterDesc, TranslationBase.of(context).bloodDEnterDesc
textAlign: TextAlign.center,
), ),
SizedBox( SizedBox(
height: 12, height: 12,
@ -240,7 +239,8 @@ class _BloodDonationPageState extends State<BloodDonationPage> {
), ),
bottomSheet: Container( bottomSheet: Container(
width: double.infinity, width: double.infinity,
padding: EdgeInsets.all(12), color: Theme.of(context).scaffoldBackgroundColor,
padding: EdgeInsets.all(20),
child: DefaultButton(TranslationBase.of(context).save, () async { child: DefaultButton(TranslationBase.of(context).save, () async {
if (_selectedHospital == null) { if (_selectedHospital == null) {
AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); AppToast.showErrorToast(message: TranslationBase.of(context).selectCity);

@ -401,7 +401,7 @@ class _BookConfirmState extends State<BookConfirm> {
widget.appoDateFormatted = DateUtil.getWeekDay(dateObj.weekday) + ", " + dateObj.day.toString() + " " + DateUtil.getMonth(dateObj.month) + " " + dateObj.year.toString(); widget.appoDateFormatted = DateUtil.getWeekDay(dateObj.weekday) + ", " + dateObj.day.toString() + " " + DateUtil.getMonth(dateObj.month) + " " + dateObj.year.toString();
}); });
return widget.appoDateFormatted; return DateUtil.getDayMonthYearDateFormatted(dateObj);
} }
DateTime getDateTime() { DateTime getDateTime() {

@ -214,55 +214,63 @@ class _BookSuccessState extends State<BookSuccess> {
Widget _getConfirmAppoButtons() { Widget _getConfirmAppoButtons() {
return Container( return Container(
alignment: Alignment.bottomCenter, color: CustomColors.appBackgroudGreyColor,
margin: EdgeInsets.only(bottom: 5.0), child: Container(
height: MediaQuery.of(context).size.height * 0.15, color: CustomColors.appBackgroudGreyColor,
child: Column( margin: EdgeInsets.all(14),
mainAxisAlignment: MainAxisAlignment.end, height: 45.0,
children: <Widget>[ child: Row(
ButtonTheme( mainAxisAlignment: MainAxisAlignment.end,
shape: RoundedRectangleBorder( children: <Widget>[
borderRadius: BorderRadius.circular(10.0), Expanded(
), flex: 1,
minWidth: MediaQuery.of(context).size.width * 0.7, child: ButtonTheme(
height: 45.0, shape: RoundedRectangleBorder(
child: RaisedButton( borderRadius: BorderRadius.circular(10.0),
color: new Color(0xFF60686b), ),
textColor: Colors.white, height: 45.0,
disabledTextColor: Colors.white, child: RaisedButton(
disabledColor: new Color(0xFFbcc2c4), color: new Color(0xffc5272d),
onPressed: () { textColor: Colors.white,
AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList(); disabledTextColor: Colors.white,
appo.clinicID = widget.docObject.clinicID; disabledColor: new Color(0xFFbcc2c4),
appo.projectID = widget.docObject.projectID; onPressed: () {
appo.appointmentNo = widget.patientShareResponse.appointmentNo; navigateToHome(context);
appo.serviceID = widget.patientShareResponse.serviceID; },
appo.isLiveCareAppointment = widget.patientShareResponse.isLiveCareAppointment; child: Text(TranslationBase.of(context).confirmLater, style: TextStyle(fontSize: 18.0)),
appo.doctorID = widget.patientShareResponse.doctorID; ),
confirmAppointment(appo); ),
},
child: Text(widget.patientShareResponse.isLiveCareAppointment ? TranslationBase.of(context).confirmLiveCare.toUpperCase() : TranslationBase.of(context).confirm.toUpperCase(),
style: TextStyle(fontSize: 18.0)),
),
),
ButtonTheme(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
), ),
minWidth: MediaQuery.of(context).size.width * 0.7, mWidth(7),
height: 45.0, Expanded(
child: RaisedButton( flex: 1,
color: new Color(0xFFc5272d), child: ButtonTheme(
textColor: Colors.white, shape: RoundedRectangleBorder(
disabledTextColor: Colors.white, borderRadius: BorderRadius.circular(10.0),
disabledColor: new Color(0xFFbcc2c4), ),
onPressed: () { height: 45.0,
navigateToHome(context); child: RaisedButton(
}, color: CustomColors.green,
child: Text(TranslationBase.of(context).confirmLater.toUpperCase(), style: TextStyle(fontSize: 18.0)), textColor: Colors.white,
disabledTextColor: Colors.white,
disabledColor: new Color(0xFFbcc2c4),
onPressed: () {
AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList();
appo.clinicID = widget.docObject.clinicID;
appo.projectID = widget.docObject.projectID;
appo.appointmentNo = widget.patientShareResponse.appointmentNo;
appo.serviceID = widget.patientShareResponse.serviceID;
appo.isLiveCareAppointment = widget.patientShareResponse.isLiveCareAppointment;
appo.doctorID = widget.patientShareResponse.doctorID;
confirmAppointment(appo);
},
child: Text(widget.patientShareResponse.isLiveCareAppointment ? TranslationBase.of(context).confirmLiveCare : TranslationBase.of(context).confirm,
style: TextStyle(fontSize: 18.0)),
),
),
), ),
), ],
], ),
), ),
); );
} }
@ -365,11 +373,7 @@ class _BookSuccessState extends State<BookSuccess> {
), ),
], ],
), ),
// Container( Container(margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0), child: getPaymentMethods()),
// margin: EdgeInsets.fromLTRB(50.0, 20.0, 50.0, 20.0),
// child: Image.asset("assets/images/new-design/payment-method.png"),
// ),
Container(margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), child: getPaymentMethods()),
], ],
); );
} }
@ -479,11 +483,9 @@ class _BookSuccessState extends State<BookSuccess> {
appo.clinicID = widget.patientShareResponse.clinicID; appo.clinicID = widget.patientShareResponse.clinicID;
appo.appointmentNo = widget.patientShareResponse.appointmentNo; appo.appointmentNo = widget.patientShareResponse.appointmentNo;
Navigator.push(context, FadePage(page: PaymentMethod( Navigator.push(context, FadePage(page: PaymentMethod(onSelectedMethod: (String metohd) {
onSelectedMethod: (String metohd) { setState(() {});
setState(() {}); }))).then((value) {
}
))).then((value) {
if (value != null) { if (value != null) {
openPayment(value, authUser, double.parse(patientShareResponse.patientShareWithTax.toString()), patientShareResponse, appo); openPayment(value, authUser, double.parse(patientShareResponse.patientShareWithTax.toString()), patientShareResponse, appo);
} }

@ -13,6 +13,7 @@ import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -224,7 +225,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Checkbox( Checkbox(
activeColor: new Color(0xFF40ACC9), activeColor: CustomColors.accentColor,
value: nearestAppo, value: nearestAppo,
onChanged: (bool value) { onChanged: (bool value) {
setState(() { setState(() {

@ -2,7 +2,6 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-payment-summary.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-payment-summary.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -11,7 +10,6 @@ import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class CovidPaymentAlert extends StatefulWidget { class CovidPaymentAlert extends StatefulWidget {
PatientShareResponse patientShareResponse; PatientShareResponse patientShareResponse;
@ -126,7 +124,7 @@ class _CovidPaymentAlertState extends State<CovidPaymentAlert> {
), ),
mWidth(6), mWidth(6),
_getNormalText( _getNormalText(
widget.patientShareResponse.appointmentDate != null ? getDate(widget.patientShareResponse.appointmentDate).split(" ")[0] : "NULL", DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(widget.patientShareResponse.appointmentDate)),
isBold: true, isBold: true,
), ),
], ],
@ -139,7 +137,7 @@ class _CovidPaymentAlertState extends State<CovidPaymentAlert> {
), ),
mWidth(6), mWidth(6),
_getNormalText( _getNormalText(
widget.patientShareResponse.appointmentDate != null ? getDate(widget.patientShareResponse.appointmentDate).split(" ")[1] : "NULL", DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(widget.patientShareResponse.appointmentDate), false),
isBold: true, isBold: true,
), ),
], ],
@ -230,7 +228,6 @@ class _CovidPaymentAlertState extends State<CovidPaymentAlert> {
}); });
} }
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(

@ -51,12 +51,15 @@ class NotificationsDetailsPage extends StatelessWidget {
), ),
Container( Container(
width: double.infinity, width: double.infinity,
color: Colors.grey[400],
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts( child: Text(
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false), DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false),
fontSize: 16, style: TextStyle(
fontSize: 18.0,
color: Colors.black,
fontWeight: FontWeight.w600
),
), ),
), ),
), ),
@ -88,7 +91,7 @@ class NotificationsDetailsPage extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: Center( child: Center(
child: Texts(notification.message), child: Text(notification.message),
), ),
), ),
], ],

@ -1,16 +1,17 @@
import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class NotificationsPage extends StatelessWidget { class NotificationsPage extends StatelessWidget {
@ -18,9 +19,7 @@ class NotificationsPage extends StatelessWidget {
DateTime d = DateUtil.convertStringToDate(date); DateTime d = DateUtil.convertStringToDate(date);
String monthName = DateUtil.getMonth(d.month).toString(); String monthName = DateUtil.getMonth(d.month).toString();
TimeOfDay timeOfDay = TimeOfDay(hour: d.hour, minute: d.minute); TimeOfDay timeOfDay = TimeOfDay(hour: d.hour, minute: d.minute);
String minute = timeOfDay.minute < 10 String minute = timeOfDay.minute < 10 ? timeOfDay.minute.toString().padLeft(2, '0') : timeOfDay.minute.toString();
? timeOfDay.minute.toString().padLeft(2, '0')
: timeOfDay.minute.toString();
String hour = '${timeOfDay.hourOfPeriod}:$minute'; String hour = '${timeOfDay.hourOfPeriod}:$minute';
if (timeOfDay.period == DayPeriod.am) { if (timeOfDay.period == DayPeriod.am) {
@ -39,112 +38,184 @@ class NotificationsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var prescriptionReport; ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<NotificationViewModel>( return BaseView<NotificationViewModel>(
onModelReady: (model) { onModelReady: (model) {
GetNotificationsRequestModel getNotificationsRequestModel = GetNotificationsRequestModel getNotificationsRequestModel = new GetNotificationsRequestModel(currentPage: currentIndex, pagingSize: 14, notificationStatusID: 2);
new GetNotificationsRequestModel(
currentPage: currentIndex,
pagingSize: 14,
notificationStatusID: 2);
model.getNotifications(getNotificationsRequestModel, context); model.getNotifications(getNotificationsRequestModel, context);
}, },
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
appBarTitle: TranslationBase.of(context).notifications, appBarTitle: TranslationBase.of(context).notifications,
baseViewModel: model, baseViewModel: model,
body: ListView( body: ListView.separated(
children: model.notifications itemBuilder: (context, index) {
.map( return InkWell(
(notification) => InkWell( onTap: () async {
onTap: () async { if (!model.notifications[index].isRead) {
if (!notification.isRead) { model.markAsRead(model.notifications[index].id);
model.markAsRead(notification.id); }
} Navigator.push(
Navigator.push( context,
context, FadePage(
FadePage( page: NotificationsDetailsPage(
page: NotificationsDetailsPage( notification: model.notifications[index],
notification: notification, )));
))); },
}, child: Container(
child: Container( width: double.infinity,
width: double.infinity, padding: EdgeInsets.all(8.0),
margin: EdgeInsets.only( decoration: BoxDecoration(
top: 5, left: 10, right: 10, bottom: 5), color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor.withOpacity(0.05),
padding: EdgeInsets.all(8.0), border: projectViewModel.isArabic
decoration: BoxDecoration( ? Border(
color: Colors.white, right: BorderSide(
borderRadius: BorderRadius.all( color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor,
Radius.circular(10.0), width: 5.0,
), ),
border: Border.all( )
color: notification.isRead : Border(
? Colors.grey[200] left: BorderSide(
: CustomColors.accentColor, color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor,
width: 0.5), width: 5.0,
),
child: Row(
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false)),
SizedBox(
height: 5,
),
Row(
children: [
Expanded(
child: Texts(notification.message)),
if (notification.messageType == "image")
Icon(FontAwesomeIcons.images)
],
),
SizedBox(
height: 5,
),
],
), ),
), ),
),
child: Row(
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(model.notifications[index].createdOn)) +
" " +
DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(model.notifications[index].createdOn), false)),
SizedBox(
height: 5,
),
Row(
children: [
Expanded(child: Texts(model.notifications[index].message)),
if (model.notifications[index].messageType == "image")
Icon(
FontAwesomeIcons.images,
color: CustomColors.grey,
)
],
),
SizedBox(
height: 5,
),
],
),
), ),
SizedBox( ),
width: 15, ],
),
],
),
), ),
), ),
) );
.toList() },
..add( separatorBuilder: (context, index) {
InkWell( return Column(
onTap: () async { children: [
GifLoaderDialogUtils.showMyDialog(context); Divider(
currentIndex++; color: Colors.grey[300],
GetNotificationsRequestModel thickness: 2.0,
getNotificationsRequestModel =
new GetNotificationsRequestModel(
currentPage: currentIndex,
pagingSize: 14,
notificationStatusID: 2);
await model.getNotifications(
getNotificationsRequestModel, context);
GifLoaderDialogUtils.hideDialog(context);
},
child: Center(
child: Image.asset('assets/images/notf.png'),
),
), ),
)), ],
), );
},
itemCount: model.notifications.length)),
// ListView(
// children: model.notifications
// .map(
// (notification) => InkWell(
// onTap: () async {
// if (!notification.isRead) {
// model.markAsRead(notification.id);
// }
// Navigator.push(
// context,
// FadePage(
// page: NotificationsDetailsPage(
// notification: notification,
// )));
// },
// child: Container(
// width: double.infinity,
// padding: EdgeInsets.all(8.0),
// decoration: BoxDecoration(
// color: notification.isRead ? CustomColors.white : CustomColors.accentColor.withOpacity(0.05),
// border: Border(
// left: BorderSide(
// color: notification.isRead ? Colors.grey[200] : CustomColors.accentColor,
// width: 5.0,
// ),
// ),
// ),
// child: Row(
// children: <Widget>[
// Expanded(
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// Texts(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false)),
// SizedBox(
// height: 5,
// ),
// Row(
// children: [
// Expanded(
// child: Texts(notification.message)),
// if (notification.messageType == "image")
// Icon(FontAwesomeIcons.images, color: CustomColors.grey,)
// ],
// ),
// SizedBox(
// height: 5,
// ),
// Divider(
// height: 5.0,
// color: CustomColors.grey2,
// ),
// ],
// ),
// ),
// ),
// ],
// ),
// ),
// ),
// )
// .toList()
// ..add(
// InkWell(
// onTap: () async {
// GifLoaderDialogUtils.showMyDialog(context);
// currentIndex++;
// GetNotificationsRequestModel
// getNotificationsRequestModel =
// new GetNotificationsRequestModel(
// currentPage: currentIndex,
// pagingSize: 14,
// notificationStatusID: 2);
//
// await model.getNotifications(
// getNotificationsRequestModel, context);
// GifLoaderDialogUtils.hideDialog(context);
// },
// child: Center(
// child: Image.asset('assets/images/notf.png'),
// ),
// ),
// )),
); );
} }
} }

@ -2,75 +2,75 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// todo 'sikander' remove useless code
class ConfirmExitPageDialog extends StatelessWidget { // class ConfirmExitPageDialog extends StatelessWidget {
final GestureTapCallback onTapYes; // final GestureTapCallback onTapYes;
final GestureTapCallback onTapNo; // final GestureTapCallback onTapNo;
//
const ConfirmExitPageDialog({Key key, this.onTapYes, this.onTapNo}) // const ConfirmExitPageDialog({Key key, this.onTapYes, this.onTapNo})
: super(key: key); // : super(key: key);
//
@override // @override
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return SimpleDialog( // return SimpleDialog(
contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0), // contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0),
title: Center( // title: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).confirm, // TranslationBase.of(context).confirm,
color: Colors.black, // color: Colors.black,
), // ),
), // ),
children: [ // children: [
Column( // Column(
crossAxisAlignment: CrossAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center,
children: [ // children: [
Texts( // Texts(
"Are you sure you want to exit this page ?", // "Are you sure you want to exit this page ?",
color: Colors.grey, // color: Colors.grey,
), // ),
SizedBox( // SizedBox(
height: 5, // height: 5,
), // ),
Divider(), // Divider(),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ // children: [
InkWell( // InkWell(
onTap: () { // onTap: () {
onTapNo(); // onTapNo();
}, // },
child: Container( // child: Container(
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).no, // TranslationBase.of(context).no,
color: Colors.red, // color: Colors.red,
), // ),
), // ),
), // ),
), // ),
//
InkWell( // InkWell(
onTap: () { // onTap: () {
Navigator.pop(context); // Navigator.pop(context);
onTapYes(); // onTapYes();
}, // },
child: Container( // child: Container(
child: Center( // child: Center(
child: Texts(TranslationBase.of(context).yes), // child: Texts(TranslationBase.of(context).yes),
), // ),
), // ),
), // ),
], // ],
), // ),
SizedBox( // SizedBox(
height: 20.0, // height: 20.0,
), // ),
], // ],
) // )
], // ],
); // );
} // }
} // }

@ -30,14 +30,12 @@ class _DdServicesPageState extends State<DdServicesPage> {
void initState() { void initState() {
super.initState(); super.initState();
pageController = new PageController(); pageController = new PageController();
} }
_changePageViewIndex(int tab) { _changePageViewIndex(int tab) {
setState(() { setState(() {
pageController.jumpToPage(tab); pageController.jumpToPage(tab);
pageController.animateToPage(tab, pageController.animateToPage(tab, duration: Duration(milliseconds: 800), curve: Curves.easeOutQuart);
duration: Duration(milliseconds: 800), curve: Curves.easeOutQuart);
}); });
} }
@ -99,25 +97,28 @@ class _DdServicesPageState extends State<DdServicesPage> {
selectedQuestions: selectedQuestions, selectedQuestions: selectedQuestions,
triageInformationRequest: triageInformationRequest, triageInformationRequest: triageInformationRequest,
), ),
EdPaymentInformationPage(selectedHospital: triageInformationRequest.selectedHospital,) EdPaymentInformationPage(
selectedHospital: triageInformationRequest.selectedHospital,
)
], ],
), ),
); );
} }
void showConfirmMessage( // todo 'sikander' remove useless code
BuildContext context, // void showConfirmMessage(
) { // BuildContext context,
showDialog( // ) {
context: context, // showDialog(
child: ConfirmExitPageDialog( // context: context,
onTapYes: () { // child: ConfirmExitPageDialog(
Navigator.pop(context); // onTapYes: () {
}, // Navigator.pop(context);
onTapNo: () { // },
Navigator.pop(context); // onTapNo: () {
}, // Navigator.pop(context);
), // },
); // ),
} // );
// }
} }

@ -4,7 +4,9 @@ import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
class PaymentDialog extends StatefulWidget { class PaymentDialog extends StatefulWidget {
AppoitmentAllHistoryResultList appo; AppoitmentAllHistoryResultList appo;
@ -30,25 +32,18 @@ class _PaymentDialogState extends State<PaymentDialog> {
child: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: <Widget>[ child: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: <Widget>[
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0),
child: Text(TranslationBase.of(context).invoiceDetails, style: TextStyle(fontSize: 25.0, fontWeight: FontWeight.bold)), child: Text(TranslationBase.of(context).invoiceDetails, style: TextStyle(fontSize: 25.0, fontWeight: FontWeight.w600)),
),
Divider(
color: Colors.grey,
), ),
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.0),
child: Text(TranslationBase.of(context).appoDetails, style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold)), child: Text(widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, style: TextStyle(color: Colors.black, fontSize: 15.0, fontWeight: FontWeight.w600)),
), ),
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.0),
child: Text(widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, style: TextStyle(color: Colors.grey[700], fontSize: 15.0, fontWeight: FontWeight.bold)),
),
Container(
margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0),
child: Text(getDate(widget.appo.appointmentDate), style: getTextStyle()), child: Text(getDate(widget.appo.appointmentDate), style: getTextStyle()),
), ),
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 0.0),
child: Text(widget.appo.projectName, style: getTextStyle()), child: Text(widget.appo.projectName, style: getTextStyle()),
), ),
Divider( Divider(
@ -58,7 +53,7 @@ class _PaymentDialogState extends State<PaymentDialog> {
margin: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 5.0),
child: Table( child: Table(
children: [ children: [
TableRow(children: [ TableRow(decoration: BoxDecoration(), children: [
TableCell(child: _getNormalText(TranslationBase.of(context).patientShareToDo)), TableCell(child: _getNormalText(TranslationBase.of(context).patientShareToDo)),
TableCell(child: _getNormalText(widget.patientShareResponse.patientShare.toString())), TableCell(child: _getNormalText(widget.patientShareResponse.patientShare.toString())),
]), ]),
@ -77,46 +72,38 @@ class _PaymentDialogState extends State<PaymentDialog> {
color: Colors.grey, color: Colors.grey,
), ),
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 5.0),
child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold)), child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600)),
), ),
Container(margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), child: getPaymentMethods()), Container(margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 5.0), child: getPaymentMethods()),
Container( Container(
margin: EdgeInsets.fromLTRB(20.0, 5.0, 20.0, 15.0), margin: EdgeInsets.fromLTRB(20.0, 30.0, 20.0, 15.0),
child: Text(TranslationBase.of(context).appoPaymentConfirm, style: TextStyle(fontSize: 14.0, color: CustomColors.accentColor)), child: Text(TranslationBase.of(context).appoPaymentConfirm, style: TextStyle(fontSize: 14.0, color: CustomColors.accentColor, fontWeight: FontWeight.w600)),
),
Divider(
color: Colors.grey,
), ),
Container( Container(
alignment: Alignment.center, alignment: Alignment.center,
height: 40.0, height: 40.0,
margin: EdgeInsets.only(left: 20.0, right: 20.0, top: 20.0),
child: Flex( child: Flex(
direction: Axis.horizontal, direction: Axis.horizontal,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: InkWell( child: DefaultButton(
onTap: () { TranslationBase.of(context).cancel,
() {
Navigator.pop(context, null); Navigator.pop(context, null);
}, },
child: Container( color: Color(0xffEAEAEA),
child: Text(TranslationBase.of(context).cancel, textAlign: TextAlign.center, style: TextStyle(fontSize: 18.0, color: CustomColors.accentColor)), textColor: Colors.black,
),
), ),
), ),
mWidth(10.0),
Expanded( Expanded(
child: InkWell( child: DefaultButton(
onTap: () { TranslationBase.of(context).confirm,
() {
Navigator.pop(context, widget.patientShareResponse); Navigator.pop(context, widget.patientShareResponse);
// widget.onPaymentMethodSelected();
}, },
child: Container(
child: Text(TranslationBase.of(context).ok,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 18.0,
)),
),
), ),
), ),
], ],
@ -131,28 +118,17 @@ class _PaymentDialogState extends State<PaymentDialog> {
_getNormalText(text) { _getNormalText(text) {
return Container( return Container(
margin: EdgeInsets.only(top: 10.0, right: 10.0), margin: EdgeInsets.only(top: 10.0, right: 10.0),
child: Text(text, style: TextStyle(fontSize: 13, letterSpacing: 0.5, color: Colors.grey[700])), child: Text(text, style: TextStyle(fontSize: 13, letterSpacing: 0.5, color: Colors.black)),
); );
} }
TextStyle getTextStyle() { TextStyle getTextStyle() {
return TextStyle(color: Colors.grey[700], fontSize: 13.0); return TextStyle(color: Colors.grey[700], fontSize: 13.0, fontWeight: FontWeight.w600);
} }
// Future navigateToPaymentMethod(context) async {
// Navigator.push(
// context, MaterialPageRoute(builder: (context) => PaymentMethod()));
// }
String getDate(String date) { String getDate(String date) {
DateTime dateObj = DateUtil.convertStringToDate(date); DateTime dateObj = DateUtil.convertStringToDate(date);
return DateUtil.getWeekDay(dateObj.weekday) + return DateUtil.getDayMonthYearDateFormatted(dateObj) +
", " +
dateObj.day.toString() +
" " +
DateUtil.getMonth(dateObj.month) +
" " +
dateObj.year.toString() +
" " + " " +
dateObj.hour.toString() + dateObj.hour.toString() +
":" + ":" +

@ -17,6 +17,7 @@ import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/floating_button_search.dart'; import 'package:diplomaticquarterapp/widgets/others/floating_button_search.dart';
@ -50,6 +51,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
var _currentLocaleId; var _currentLocaleId;
stt.SpeechToText speech = stt.SpeechToText(); stt.SpeechToText speech = stt.SpeechToText();
var reconizedWord; var reconizedWord;
int selectedStatusIndex = 5;
var event = RobotProvider(); var event = RobotProvider();
List<AppoitmentAllHistoryResultList> appoList = []; List<AppoitmentAllHistoryResultList> appoList = [];
@ -165,16 +167,16 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
}); });
}, },
child: DoctorCard( child: DoctorCard(
onTap: null, onTap: null,
isInOutPatient: appointHistory.isInOutPatient, isInOutPatient: appointHistory.isInOutPatient,
name: appointHistory.doctorTitle + " " + appointHistory.doctorNameObj, name: appointHistory.doctorTitle + " " + appointHistory.doctorNameObj,
// billNo: _appointmentResult.invoiceNo, // billNo: _appointmentResult.invoiceNo,
profileUrl: appointHistory.doctorImageURL, profileUrl: appointHistory.doctorImageURL,
subName: appointHistory.projectName, subName: appointHistory.projectName,
isLiveCareAppointment: appointHistory.isLiveCareAppointment, isLiveCareAppointment: appointHistory.isLiveCareAppointment,
date: DateUtil.convertStringToDate(appointHistory.appointmentDate), date: DateUtil.convertStringToDate(appointHistory.appointmentDate),
rating: appointHistory.actualDoctorRate + 0.0, rating: appointHistory.actualDoctorRate + 0.0,
appointmentTime: appointHistory.startTime.substring(0, 5), appointmentTime: appointHistory.startTime.substring(0, 5),
), ),
), ),
SizedBox(height: 12), SizedBox(height: 12),
@ -182,8 +184,9 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
Container( Container(
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
height: appoList.length > 2 ? MediaQuery.of(context).size.height * 0.35 : MediaQuery.of(context).size.height * 0.17, height: appoList.length > 2 ? MediaQuery.of(context).size.height * 0.35 : MediaQuery.of(context).size.height * 0.17,
child: ListView.builder( child: ListView.separated(
itemCount: appoList.length, itemCount: appoList.length,
separatorBuilder: (ctx, index) => SizedBox(height: 12),
itemBuilder: (context, index) => InkWell( itemBuilder: (context, index) => InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
@ -309,6 +312,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
messageController.text = ""; messageController.text = "";
images = []; images = [];
}); });
selectedStatusIndex = 5;
setMessageType(MessageType.NON); setMessageType(MessageType.NON);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: TranslationBase.of(context).yourFeedback); AppToast.showSuccessToast(message: TranslationBase.of(context).yourFeedback);
@ -429,42 +433,107 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
// Show Dialog function // Show Dialog function
void confirmBox(FeedbackViewModel model) { void confirmBox(FeedbackViewModel model) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
List<RadioSelectionDialogModel> list = [
RadioSelectionDialogModel(TranslationBase.of(context).notClassified, 5),
RadioSelectionDialogModel(TranslationBase.of(context).complainAppo, 1),
RadioSelectionDialogModel(TranslationBase.of(context).complainWithoutAppo, 2),
RadioSelectionDialogModel(TranslationBase.of(context).question, 3),
RadioSelectionDialogModel(TranslationBase.of(context).compliment, 4),
RadioSelectionDialogModel(TranslationBase.of(context).suggestion, 6),
];
showDialog( showDialog(
context: context, context: context,
child: FeedbackTypeDialog( child: RadioSelectionDialog(
messageTypeDialog: messageType, listData: list,
onValueSelected: (MessageType value) { selectedIndex: selectedStatusIndex,
if (value == MessageType.ComplaintOnAnAppointment) { onValueSelected: (index) {
appoList.clear(); selectedStatusIndex = index;
GifLoaderDialogUtils.showMyDialog(context);
service.getPatientAppointmentHistory(false, context, isForCOC: true).then((res) { if (index == 1) {
GifLoaderDialogUtils.hideDialog(context); messageType = MessageType.ComplaintOnAnAppointment;
setState(() { } else if (index == 2) {
if (res['MessageStatus'] == 1) { messageType = MessageType.ComplaintWithoutAppointment;
if (res['AppoimentAllHistoryResultList'].length != 0) { } else if (index == 3) {
res['AppoimentAllHistoryResultList'].forEach((v) { messageType = MessageType.Question;
appoList.add(new AppoitmentAllHistoryResultList.fromJson(v)); } else if (index == 4) {
}); messageType = MessageType.Compliment;
setState(() { } else if (index == 5) {
appointHistory = null; messageType = MessageType.NON;
isShowListAppointHistory = true; } else {
}); messageType = MessageType.Suggestion;
} else {} }
} else {
} if (messageType == MessageType.ComplaintOnAnAppointment) {
}); appoList.clear();
}).catchError((err) { GifLoaderDialogUtils.showMyDialog(context);
GifLoaderDialogUtils.hideDialog(context); service.getPatientAppointmentHistory(false, context, isForCOC: true).then((res) {
// print(err); GifLoaderDialogUtils.hideDialog(context);
// AppToast.showErrorToast(message: err); setState(() {
// Navigator.of(context).pop(); if (res['MessageStatus'] == 1) {
if (res['AppoimentAllHistoryResultList'].length != 0) {
res['AppoimentAllHistoryResultList'].forEach((v) {
appoList.add(new AppoitmentAllHistoryResultList.fromJson(v));
});
setState(() {
appointHistory = null;
isShowListAppointHistory = true;
});
} else {}
} else {}
}); });
} else { }).catchError((err) {
isShowListAppointHistory = false; GifLoaderDialogUtils.hideDialog(context);
} // print(err);
setMessageType(value); // AppToast.showErrorToast(message: err);
}, // Navigator.of(context).pop();
)); });
} else {
isShowListAppointHistory = false;
}
setMessageType(messageType);
},
),
);
return;
// todo 'sikander' remove useless code
// showDialog(
// context: context,
// child: FeedbackTypeDialog(
// messageTypeDialog: messageType,
// onValueSelected: (MessageType value) {
// if (value == MessageType.ComplaintOnAnAppointment) {
// appoList.clear();
// GifLoaderDialogUtils.showMyDialog(context);
// service.getPatientAppointmentHistory(false, context, isForCOC: true).then((res) {
// GifLoaderDialogUtils.hideDialog(context);
// setState(() {
// if (res['MessageStatus'] == 1) {
// if (res['AppoimentAllHistoryResultList'].length != 0) {
// res['AppoimentAllHistoryResultList'].forEach((v) {
// appoList.add(new AppoitmentAllHistoryResultList.fromJson(v));
// });
// setState(() {
// appointHistory = null;
// isShowListAppointHistory = true;
// });
// } else {}
// } else {}
// });
// }).catchError((err) {
// GifLoaderDialogUtils.hideDialog(context);
// // print(err);
// // AppToast.showErrorToast(message: err);
// // Navigator.of(context).pop();
// });
// } else {
// isShowListAppointHistory = false;
// }
// setMessageType(value);
// },
// ));
} }
openSpeechReco() async { openSpeechReco() async {
@ -518,238 +587,238 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
if (!mounted) return; if (!mounted) return;
} }
} }
// todo 'sikander' remove useless code
class FeedbackTypeDialog extends StatefulWidget { // class FeedbackTypeDialog extends StatefulWidget {
final Function(MessageType) onValueSelected; // final Function(MessageType) onValueSelected;
final MessageType messageTypeDialog; // final MessageType messageTypeDialog;
//
const FeedbackTypeDialog({Key key, this.onValueSelected, this.messageTypeDialog = MessageType.NON}) : super(key: key); // const FeedbackTypeDialog({Key key, this.onValueSelected, this.messageTypeDialog = MessageType.NON}) : super(key: key);
//
@override // @override
State createState() => new FeedbackTypeDialogState(); // State createState() => new FeedbackTypeDialogState();
} // }
//
class FeedbackTypeDialogState extends State<FeedbackTypeDialog> { // class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
MessageType messageTypeDialog = MessageType.NON; // MessageType messageTypeDialog = MessageType.NON;
//
setMessageDialogType(MessageType messageType) { // setMessageDialogType(MessageType messageType) {
setState(() { // setState(() {
messageTypeDialog = messageType; // messageTypeDialog = messageType;
}); // });
} // }
//
@override // @override
void initState() { // void initState() {
messageTypeDialog = widget.messageTypeDialog; // messageTypeDialog = widget.messageTypeDialog;
//
super.initState(); // super.initState();
} // }
//
Widget build(BuildContext context) { // Widget build(BuildContext context) {
return BaseView<FeedbackViewModel>( // return BaseView<FeedbackViewModel>(
builder: (_, model, widge) => SimpleDialog( // builder: (_, model, widge) => SimpleDialog(
title: Text( // title: Text(
TranslationBase.of(context).messageType, // TranslationBase.of(context).messageType,
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), // ),
children: <Widget>[ // children: <Widget>[
Container( // Container(
// padding: const EdgeInsets.all(10.0), // // padding: const EdgeInsets.all(10.0),
child: Column( // child: Column(
children: <Widget>[ // children: <Widget>[
Divider( // Divider(
height: 2.5, // height: 2.5,
color: Colors.grey[500], // color: Colors.grey[500],
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.NON), // onTap: () => setMessageDialogType(MessageType.NON),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).notClassified), // title: Texts(TranslationBase.of(context).notClassified),
leading: Radio( // leading: Radio(
value: MessageType.NON, // value: MessageType.NON,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.ComplaintOnAnAppointment), // onTap: () => setMessageDialogType(MessageType.ComplaintOnAnAppointment),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).complainAppo), // title: Texts(TranslationBase.of(context).complainAppo),
leading: Radio( // leading: Radio(
value: MessageType.ComplaintOnAnAppointment, // value: MessageType.ComplaintOnAnAppointment,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.ComplaintWithoutAppointment), // onTap: () => setMessageDialogType(MessageType.ComplaintWithoutAppointment),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).complainWithoutAppo), // title: Texts(TranslationBase.of(context).complainWithoutAppo),
leading: Radio( // leading: Radio(
value: MessageType.ComplaintWithoutAppointment, // value: MessageType.ComplaintWithoutAppointment,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.Question), // onTap: () => setMessageDialogType(MessageType.Question),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).question), // title: Texts(TranslationBase.of(context).question),
leading: Radio( // leading: Radio(
value: MessageType.Question, // value: MessageType.Question,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.Compliment), // onTap: () => setMessageDialogType(MessageType.Compliment),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).compliment), // title: Texts(TranslationBase.of(context).compliment),
leading: Radio( // leading: Radio(
value: MessageType.Compliment, // value: MessageType.Compliment,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Row( // Row(
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () => setMessageDialogType(MessageType.Suggestion), // onTap: () => setMessageDialogType(MessageType.Suggestion),
child: ListTile( // child: ListTile(
title: Texts(TranslationBase.of(context).suggestion), // title: Texts(TranslationBase.of(context).suggestion),
leading: Radio( // leading: Radio(
value: MessageType.Suggestion, // value: MessageType.Suggestion,
groupValue: messageTypeDialog, // groupValue: messageTypeDialog,
activeColor: CustomColors.accentColor, // activeColor: CustomColors.accentColor,
onChanged: (MessageType value) => setMessageDialogType(value), // onChanged: (MessageType value) => setMessageDialogType(value),
), // ),
), // ),
), // ),
) // )
], // ],
), // ),
SizedBox( // SizedBox(
height: 5.0, // height: 5.0,
), // ),
Divider( // Divider(
height: 2.5, // height: 2.5,
color: Colors.grey[500], // color: Colors.grey[500],
), // ),
SizedBox( // SizedBox(
height: 5, // height: 5,
), // ),
Row( // Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ // children: <Widget>[
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: EdgeInsets.all(8.0), // padding: EdgeInsets.all(8.0),
child: Container( // child: Container(
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).cancel, // TranslationBase.of(context).cancel,
color: CustomColors.accentColor, // color: CustomColors.accentColor,
), // ),
), // ),
), // ),
), // ),
), // ),
), // ),
Container( // Container(
width: 1, // width: 1,
height: 30, // height: 30,
color: Colors.grey[500], // color: Colors.grey[500],
), // ),
Expanded( // Expanded(
flex: 1, // flex: 1,
child: InkWell( // child: InkWell(
onTap: () { // onTap: () {
widget.onValueSelected(messageTypeDialog); // widget.onValueSelected(messageTypeDialog);
Navigator.pop(context); // Navigator.pop(context);
}, // },
child: Padding( // child: Padding(
padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.all(8.0),
child: Center( // child: Center(
child: Texts( // child: Texts(
TranslationBase.of(context).ok, // TranslationBase.of(context).ok,
fontWeight: FontWeight.w400, // fontWeight: FontWeight.w400,
)), // )),
), // ),
)), // )),
], // ],
) // )
], // ],
), // ),
), // ),
], // ],
), // ),
); // );
} // }
} // }

@ -42,7 +42,7 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
children: [ children: [
Expanded( Expanded(
child: projectViewModel.isLogin child: projectViewModel.isLogin
? !model.cOCItemList.isNotEmpty ? model.cOCItemList.isNotEmpty
? listData(model.cOCItemList, projectViewModel.isArabic, true) ? listData(model.cOCItemList, projectViewModel.isArabic, true)
: Center( : Center(
child: Column( child: Column(

@ -77,9 +77,9 @@ class InsuranceApprovalDetail extends StatelessWidget {
myRichText(TranslationBase.of(context).companyName, insuranceApprovalModel?.companyName ?? "", projectViewModel.isArabic), myRichText(TranslationBase.of(context).companyName, insuranceApprovalModel?.companyName ?? "", projectViewModel.isArabic),
SizedBox(height: 6), SizedBox(height: 6),
myRichText(TranslationBase.of(context).receiptOn, myRichText(TranslationBase.of(context).receiptOn,
DateUtil.formatDateToDate(DateUtil.convertStringToDateTime(insuranceApprovalModel.receiptOn), projectViewModel.isArabic) ?? "", projectViewModel.isArabic), DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.receiptOn)) ?? "", projectViewModel.isArabic),
myRichText(TranslationBase.of(context).expiryOn, myRichText(TranslationBase.of(context).expiryOn,
DateUtil.formatDateToDate(DateUtil.convertStringToDateTime(insuranceApprovalModel.expiryDate), projectViewModel.isArabic) ?? "", projectViewModel.isArabic), DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.expiryDate)) ?? "", projectViewModel.isArabic),
], ],
), ),
), ),
@ -101,8 +101,8 @@ class InsuranceApprovalDetail extends StatelessWidget {
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue(insuranceApprovalModel?.apporvalDetails?.procedureName ?? '', isLast: true, mProjectViewModel: projectViewModel), Utils.tableColumnValue(insuranceApprovalModel?.apporvalDetails?.procedureName ?? '', isLast: true, mProjectViewModel: projectViewModel),
Utils.tableColumnValue(insuranceApprovalModel?.approvalStatusDescption ?? '', isLast: true, mProjectViewModel: projectViewModel), Utils.tableColumnValue(insuranceApprovalModel?.apporvalDetails?.status ?? '', isLast: true, mProjectViewModel: projectViewModel),
Utils.tableColumnValue(insuranceApprovalModel?.apporvalDetails?.isInvoicedDesc.toString() ?? '', isLast: true, mProjectViewModel: projectViewModel), Utils.tableColumnValue(insuranceApprovalModel?.apporvalDetails?.isInvoicedDesc ?? '', isLast: true, mProjectViewModel: projectViewModel),
], ],
), ),
]) ])

@ -173,19 +173,22 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
// pageController.jumpToPage(tab); // pageController.jumpToPage(tab);
} else { } else {
if (currentTab > 0 && tab == 2) if (currentTab > 0 && tab == 2) {
pageController.jumpToPage(0); pageController.jumpToPage(0);
else if (tab != 0) { currentTab = tab;
} else if (tab != 0) {
if (tab == 4 && projectViewModel.isLogin && model.count == 0) { if (tab == 4 && projectViewModel.isLogin && model.count == 0) {
AppToast.showErrorToast(message: TranslationBase.of(context).noBookedAppo); AppToast.showErrorToast(message: TranslationBase.of(context).noBookedAppo);
} else { } else {
pageController.jumpToPage(tab); pageController.jumpToPage(tab);
currentTab = tab;
} }
} else { } else {
pageController.jumpToPage(tab); pageController.jumpToPage(tab);
currentTab = tab;
} }
currentTab = tab; // currentTab = tab;
} }
}); });
} }
@ -385,11 +388,12 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
); );
} }
showDialogs(String message) { // todo 'sikander' remove useless code
ConfirmDialog dialog = new ConfirmDialog( // showDialogs(String message) {
context: context, confirmMessage: message, okText: TranslationBase.of(context).confirm, cancelText: TranslationBase.of(context).cancel_nocaps, okFunction: () => {}, cancelFunction: () => {}); // ConfirmDialog dialog = new ConfirmDialog(
dialog.showAlertDialog(context); // context: context, confirmMessage: message, okText: TranslationBase.of(context).confirm, cancelText: TranslationBase.of(context).cancel_nocaps, okFunction: () => {}, cancelFunction: () => {});
} // dialog.showAlertDialog(context);
// }
Future<Map<Permission, PermissionStatus>> requestPermissions() async { Future<Map<Permission, PermissionStatus>> requestPermissions() async {
var permissionResults = [ var permissionResults = [

@ -6,6 +6,7 @@ import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
@ -60,7 +61,7 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Text(widget.erRequestHistoryList.sArrivalTime, style: TextStyle(fontSize: 14.0)), Text(DateUtil.getDayMonthYearHourMinuteDateFormatted(DateUtil.convertStringToDate(widget.erRequestHistoryList.arrivalTime)), style: TextStyle(fontSize: 14.0)),
Text(TranslationBase.of(context).callDuration + "\n" + getCallTime(widget.erRequestHistoryList.callDuration), textAlign: TextAlign.center, style: TextStyle(fontSize: 14.0, color: Colors.grey[600])), Text(TranslationBase.of(context).callDuration + "\n" + getCallTime(widget.erRequestHistoryList.callDuration), textAlign: TextAlign.center, style: TextStyle(fontSize: 14.0, color: Colors.grey[600])),
], ],
), ),
@ -130,8 +131,8 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
Icon(Icons.star, size: 24.0, color: Colors.yellow[700]), Icon(Icons.star, size: 24.0, color: Colors.yellow[700]),
Container( Container(
width: MediaQuery.of(context).size.width * 0.2, width: MediaQuery.of(context).size.width * 0.2,
margin: EdgeInsets.only(left: 10.0), margin: EdgeInsets.only(left: 9.0),
child: Text(TranslationBase.of(context).rateDoctorAppo, overflow: TextOverflow.clip, textAlign: TextAlign.center, style: TextStyle(fontSize: 12.0)), child: Text(TranslationBase.of(context).rateDoctorAppo, overflow: TextOverflow.clip, textAlign: TextAlign.center, style: TextStyle(fontSize: 11.0)),
), ),
], ],
), ),

@ -50,7 +50,7 @@ class _SelectHospitalDialogState extends State<SelectHospitalDialog> {
}, },
child: ListTile( child: ListTile(
title: Text( title: Text(
widget.hospitals[index].name + ' ${widget.hospitals[index].distanceInKilometers} KM', widget.hospitals[index].name + ' ${widget.hospitals[index].distanceInKilometers} ' + TranslationBase.of(context).km,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,

@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/models/MyInvoices/DentalInvoiceDetailResponse.dart'; import 'package:diplomaticquarterapp/models/MyInvoices/DentalInvoiceDetailResponse.dart';
import 'package:diplomaticquarterapp/models/MyInvoices/GetDentalAppointmentsResponse.dart'; import 'package:diplomaticquarterapp/models/MyInvoices/GetDentalAppointmentsResponse.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart';
import 'package:diplomaticquarterapp/services/my_invoice_service/my_invoice_services.dart'; import 'package:diplomaticquarterapp/services/my_invoice_service/my_invoice_services.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -11,15 +10,11 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart'; import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/extensions/list_extension.dart';
class InvoiceDetail extends StatefulWidget { class InvoiceDetail extends StatefulWidget {
final DoctorList doctor; final DoctorList doctor;
@ -73,7 +68,8 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
widget.doctor.doctorRate, widget.doctor.doctorRate,
widget.doctor.actualDoctorRate, widget.doctor.actualDoctorRate,
widget.doctor.noOfPatientsRate ?? 0, widget.doctor.noOfPatientsRate ?? 0,
projectViewModel.user.emailAddress), projectViewModel.user.emailAddress,
decimalDoctorRate: widget.doctor.decimalDoctorRate.toString()),
onTap: () { onTap: () {
sendInvoiceEmail(); sendInvoiceEmail();
}, },
@ -117,7 +113,12 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
child: Text(TranslationBase.of(context).cardDetail, style: TextStyle(color: Colors.black, letterSpacing: -0.64, fontSize: 18.0, fontWeight: FontWeight.bold)), child: Text(TranslationBase.of(context).cardDetail, style: TextStyle(color: Colors.black, letterSpacing: -0.64, fontSize: 18.0, fontWeight: FontWeight.bold)),
), ),
myRichText(TranslationBase.of(context).insuranceCompany + ": ", widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].companyName, projectViewModel.isArabic), myRichText(
TranslationBase.of(context).insuranceCompany + ": ",
projectViewModel.isArabic
? widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].groupNameN
: widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].companyName,
projectViewModel.isArabic),
myRichText( myRichText(
TranslationBase.of(context).insuranceID + ": ", TranslationBase.of(context).insuranceID + ": ",
widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID != null ? widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID : "N/A", widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID != null ? widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID : "N/A",

@ -97,6 +97,10 @@ class _MyInvoicesState extends State<MyInvoices> {
doctor.dayName = listDentalAppointments.invoiceNo; doctor.dayName = listDentalAppointments.invoiceNo;
doctor.clinicName = listDentalAppointments.invoiceNo.toString(); doctor.clinicName = listDentalAppointments.invoiceNo.toString();
doctor.date = listDentalAppointments.appointmentDate; doctor.date = listDentalAppointments.appointmentDate;
doctor.noOfPatientsRate = listDentalAppointments.patientNumber;
doctor.actualDoctorRate = listDentalAppointments.doctorRate;
doctor.decimalDoctorRate = listDentalAppointments.decimalDoctorRate;
doctor.doctorID = listDentalAppointments.doctorID;
myInvoicesService.getDentalAppointmentInvoice(listDentalAppointments.projectID, listDentalAppointments.appointmentNo, context).then((res) { myInvoicesService.getDentalAppointmentInvoice(listDentalAppointments.projectID, listDentalAppointments.appointmentNo, context).then((res) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);

@ -8,8 +8,10 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -35,12 +37,15 @@ class _AddWeightPageState extends State<AddWeightPage> {
TextEditingController _weightValueController = TextEditingController(); TextEditingController _weightValueController = TextEditingController();
DateTime dayWeightDate = DateTime.now(); DateTime dayWeightDate = DateTime.now();
DateTime timeWeightDate = DateTime.now(); DateTime timeWeightDate = DateTime.now();
int weightUnit = 1; int weightUnit = 0;
final List<String> measureUnitEnList = [ final List<String> measureUnitEnList = [
'Kg',
'Pound', 'Pound',
'Kg',
];
final List<String> measureUnitArList = [
"باوند",
"كيلو جرام",
]; ];
final List<String> measureUnitArList = ["كيلو جرام", "باوند"];
String measureTimeSelectedType; String measureTimeSelectedType;
bool isButtonDisabled = true; bool isButtonDisabled = true;
@ -52,9 +57,6 @@ class _AddWeightPageState extends State<AddWeightPage> {
timeWeightDate = widget.dayWeightDate; timeWeightDate = widget.dayWeightDate;
measureTimeSelectedType = widget.measureTimeSelectedType; measureTimeSelectedType = widget.measureTimeSelectedType;
weightUnit = widget.weightUnit; weightUnit = widget.weightUnit;
// if (measureUnitEnList.contains(widget.measureTimeSelectedType))
// weightUnit = measureUnitEnList.indexOf(widget.measureTimeSelectedType);
// else if (measureUnitArList.contains(widget.measureTimeSelectedType)) weightUnit = measureUnitArList.indexOf(widget.measureTimeSelectedType);
_weightValueController.text = widget.weightValue; _weightValueController.text = widget.weightValue;
validateForm(); validateForm();
} }
@ -65,19 +67,17 @@ class _AddWeightPageState extends State<AddWeightPage> {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add, appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add,
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
body: SingleChildScrollView( body: Column(
physics: BouncingScrollPhysics(), children: [
child: Container( Expanded(
margin: EdgeInsets.all(15), child: ListView(
child: Column( padding: EdgeInsets.all(21),
physics: BouncingScrollPhysics(),
children: [ children: [
SizedBox(
height: 15,
),
NewTextFields( NewTextFields(
hintText: TranslationBase.of(context).weightAdd, hintText: TranslationBase.of(context).weightAdd,
controller: _weightValueController, controller: _weightValueController,
@ -86,12 +86,27 @@ class _AddWeightPageState extends State<AddWeightPage> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 14, fontSize: 14,
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
confirmSelectMeasureTimeDialog(projectViewModel.isArabic ? measureUnitArList : measureUnitEnList); List<RadioSelectionDialogModel> list = [
RadioSelectionDialogModel(projectViewModel.isArabic ? measureUnitArList[0] : measureUnitEnList[0], 0),
RadioSelectionDialogModel(projectViewModel.isArabic ? measureUnitArList[1] : measureUnitEnList[1], 1),
];
showDialog(
context: context,
child: RadioSelectionDialog(
listData: list,
selectedIndex: weightUnit,
onValueSelected: (index) {
weightUnit = index;
measureTimeSelectedType = list[index].title;
setState(() {});
validateForm();
},
),
);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
@ -110,9 +125,7 @@ class _AddWeightPageState extends State<AddWeightPage> {
), ),
), ),
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showDatePicker( DatePicker.showDatePicker(
@ -143,9 +156,7 @@ class _AddWeightPageState extends State<AddWeightPage> {
), ),
), ),
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showTimePicker( DatePicker.showTimePicker(
@ -185,6 +196,28 @@ class _AddWeightPageState extends State<AddWeightPage> {
color: Colors.red[900], color: Colors.red[900],
), ),
onTap: () { onTap: () {
showDialog(
context: context,
child: ConfirmWithMessageDialog(
message: TranslationBase.of(context).removeMeasure,
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
widget.model.deleteWeightResult(lineItemNo: widget.lineItemNo).then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.ErrorLocal)
AppToast.showErrorToast(message: widget.model.error);
else
Navigator.pop(context);
}).catchError((e) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: widget.model.error);
});
},
),
);
return;
// todo 'sikander' remove useless code
ConfirmDialog dialog = new ConfirmDialog( ConfirmDialog dialog = new ConfirmDialog(
context: context, context: context,
confirmMessage: TranslationBase.of(context).removeMeasure, confirmMessage: TranslationBase.of(context).removeMeasure,
@ -209,55 +242,58 @@ class _AddWeightPageState extends State<AddWeightPage> {
dialog.showAlertDialog(context); dialog.showAlertDialog(context);
}) })
], ],
)) ),
)
: Container() : Container()
], ],
), ),
), ),
), Container(
bottomSheet: Container( color: Colors.white,
color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: Padding(
padding: const EdgeInsets.all(20.0),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).save.toUpperCase(), TranslationBase.of(context).save.toUpperCase(),
isButtonDisabled ? null : () async { isButtonDisabled
if (_weightValueController.text.isNotEmpty) { ? null
GifLoaderDialogUtils.showMyDialog(context); : () async {
if (widget.isUpdate) { if (_weightValueController.text.isNotEmpty) {
widget.model GifLoaderDialogUtils.showMyDialog(context);
.updateWeightResult( if (widget.isUpdate) {
widget.model
.updateWeightResult(
weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00',
weightMeasured: _weightValueController.text.toString(),
weightUnit: weightUnit,
lineItemNo: widget.lineItemNo)
.then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.Error)
AppToast.showErrorToast(message: widget.model.error);
else
Navigator.pop(context);
});
} else
widget.model
.addWeightResult(
weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00', weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00',
weightMeasured: _weightValueController.text.toString(), weightMeasured: _weightValueController.text.toString(),
weightUnit: weightUnit + 1, weightUnit: weightUnit,
lineItemNo: widget.lineItemNo) )
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.Error) if (widget.model.state == ViewState.Error)
AppToast.showErrorToast(message: widget.model.error); AppToast.showErrorToast(message: widget.model.error);
else else
Navigator.pop(context); Navigator.pop(context);
}); });
} else }
widget.model },
.addWeightResult(
weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00',
weightMeasured: _weightValueController.text.toString(),
weightUnit: weightUnit,
)
.then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.Error)
AppToast.showErrorToast(message: widget.model.error);
else
Navigator.pop(context);
});
}
},
disabledColor: Colors.grey, disabledColor: Colors.grey,
), ),
), )
)); ],
),
);
} }
String getDate() { String getDate() {

@ -1,6 +1,5 @@
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -8,12 +7,10 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/charts/show_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class WeightMonthlyPage extends StatelessWidget { class WeightMonthlyPage extends StatelessWidget {
final WeightPressureViewModel model; final WeightPressureViewModel model;
@ -26,7 +23,6 @@ class WeightMonthlyPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
@ -43,7 +39,6 @@ class WeightMonthlyPage extends StatelessWidget {
timeSeries: model.weighMonthTimeSeriesData.isEmpty ? [TimeSeriesSales3(0, 0.0)] : model.weighMonthTimeSeriesData, timeSeries: model.weighMonthTimeSeriesData.isEmpty ? [TimeSeriesSales3(0, 0.0)] : model.weighMonthTimeSeriesData,
indexes: model.weighMonthTimeSeriesData.length ~/ 5.5, indexes: model.weighMonthTimeSeriesData.length ~/ 5.5,
), ),
), ),
Card( Card(
shape: cardRadius(12), shape: cardRadius(12),
@ -81,7 +76,7 @@ class WeightMonthlyPage extends StatelessWidget {
0: FlexColumnWidth(2.5), 0: FlexColumnWidth(2.5),
// 2: FlexColumnWidth(1.8), // 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]) ])
@ -97,7 +92,7 @@ class WeightMonthlyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, model) { List<TableRow> fullData(BuildContext context, model) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -113,8 +108,7 @@ class WeightMonthlyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue('${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ', Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.weightDate)} ', isCapitable: false),
isCapitable: false),
Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false),
Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false),
], ],

@ -1,5 +1,4 @@
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -12,7 +11,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'AddWeightPage.dart'; import 'AddWeightPage.dart';
@ -23,23 +21,11 @@ class WeightWeeklyPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
backgroundColor: CustomColors.appBackgroudGrey2Color, backgroundColor: CustomColors.appBackgroudGrey2Color,
body: ListView( body: ListView(
children: [ children: [
// Container(
// margin: EdgeInsets.only(top: 12, left: 8, right: 8),
// color: Colors.white,
// child: LineChartCurved(
// horizontalInterval: 1.0,
// title: TranslationBase.of(context).weight,
// timeSeries: model.weightWeekTimeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesData,
// indexes: model.weightWeekTimeSeriesData.length ~/ 5.5 ?? 0,
// ),
// ),
Card( Card(
shape: cardRadius(12), shape: cardRadius(12),
elevation: 1, elevation: 1,
@ -78,7 +64,7 @@ class WeightWeeklyPage extends StatelessWidget {
columnWidths: { columnWidths: {
0: FlexColumnWidth(2.5), 0: FlexColumnWidth(2.5),
}, },
children: fullData(context, projectViewModel, model), children: fullData(context, model),
), ),
], ],
), ),
@ -92,7 +78,7 @@ class WeightWeeklyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, WeightPressureViewModel model) { List<TableRow> fullData(BuildContext context, WeightPressureViewModel model) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -109,8 +95,7 @@ class WeightWeeklyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue('${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ', Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.weightDate)} ', isCapitable: false),
isCapitable: false),
Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false),
Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false),
Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [

@ -25,7 +25,6 @@ class WeightYearPage extends StatelessWidget {
List<List> monthlyGroup = []; List<List> monthlyGroup = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
isShowDecPage: false, isShowDecPage: false,
@ -76,7 +75,7 @@ class WeightYearPage extends StatelessWidget {
columnWidths: { columnWidths: {
0: FlexColumnWidth(2.5), 0: FlexColumnWidth(2.5),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]), ]),
@ -91,7 +90,7 @@ class WeightYearPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, model) { List<TableRow> fullData(BuildContext context, model) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -107,7 +106,7 @@ class WeightYearPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue('${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ', Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.weightDate)} ',
isCapitable: false), isCapitable: false),
Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightDate.hour}:${diabtec.weightDate.minute}', isCapitable: false),
Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false), Utils.tableColumnValue('${diabtec.weightMeasured}', isCapitable: false),

@ -11,6 +11,7 @@ import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -40,13 +41,10 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
TextEditingController _bloodDiastolicValueController = TextEditingController(); TextEditingController _bloodDiastolicValueController = TextEditingController();
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
int measuredArm = 1; int measuredArm = 0;
bool isButtonDisabled = true; bool isButtonDisabled = true;
final List<String> measureTimeEnList = ['Right Arm', 'Left Arm']; final List<String> measureTimeEnList = ['Left Arm', 'Right Arm'];
final List<String> measureTimeArList = [ final List<String> measureTimeArList = ['الذراع الأيسر', 'الذراع الأيمن'];
'الذراع الأيمن',
'الذراع الأيسر',
];
String measureTimeSelectedType = 'Left Arm'; String measureTimeSelectedType = 'Left Arm';
@override @override
@ -56,7 +54,9 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
bloodSugarDate = widget.bloodSugarDate; bloodSugarDate = widget.bloodSugarDate;
bloodSugarDate = widget.bloodSugarDate; bloodSugarDate = widget.bloodSugarDate;
measureTimeSelectedType = widget.measureTimeSelectedType; measureTimeSelectedType = widget.measureTimeSelectedType;
measuredArm = widget.measuredArm - 1; measuredArm = widget.measuredArm;
if (measuredArm > 1) measuredArm = measuredArm - 1;
_bloodSystolicValueController.text = widget.bloodSystolicValue; _bloodSystolicValueController.text = widget.bloodSystolicValue;
_bloodDiastolicValueController.text = widget.bloodDiastolicValue; _bloodDiastolicValueController.text = widget.bloodDiastolicValue;
validateForm(); validateForm();
@ -68,19 +68,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add, appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add,
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
body: SingleChildScrollView( body: Column(
physics: BouncingScrollPhysics(), children: [
child: Container( Expanded(
margin: EdgeInsets.all(15), child: ListView(
child: Column( physics: BouncingScrollPhysics(),
padding: EdgeInsets.all(21),
children: [ children: [
SizedBox(
height: 15,
),
NewTextFields( NewTextFields(
hintText: TranslationBase.of(context).systolicAdd, hintText: TranslationBase.of(context).systolicAdd,
controller: _bloodSystolicValueController, controller: _bloodSystolicValueController,
@ -90,9 +88,7 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 14, fontSize: 14,
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
NewTextFields( NewTextFields(
hintText: TranslationBase.of(context).diastolicAdd, hintText: TranslationBase.of(context).diastolicAdd,
controller: _bloodDiastolicValueController, controller: _bloodDiastolicValueController,
@ -102,11 +98,29 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 14, fontSize: 14,
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
List<RadioSelectionDialogModel> list = [
RadioSelectionDialogModel(projectViewModel.isArabic ? measureTimeArList[0] : measureTimeEnList[0], 0),
RadioSelectionDialogModel(projectViewModel.isArabic ? measureTimeArList[1] : measureTimeEnList[1], 1),
];
showDialog(
context: context,
child: RadioSelectionDialog(
listData: list,
selectedIndex: measuredArm,
onValueSelected: (index) {
measuredArm = index;
measureTimeSelectedType = list[index].title;
setState(() {});
validateForm();
},
),
);
return;
confirmSelectMeasureTimeDialog(projectViewModel.isArabic ? measureTimeArList : measureTimeEnList); confirmSelectMeasureTimeDialog(projectViewModel.isArabic ? measureTimeArList : measureTimeEnList);
}, },
child: Container( child: Container(
@ -126,9 +140,7 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
), ),
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showDatePicker(context, showTitleActions: true, minTime: DateTime(DateTime.now().year - 1, 1, 1), maxTime: DateTime.now(), onConfirm: (date) { DatePicker.showDatePicker(context, showTitleActions: true, minTime: DateTime(DateTime.now().year - 1, 1, 1), maxTime: DateTime.now(), onConfirm: (date) {
@ -153,9 +165,7 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
), ),
), ),
SizedBox( SizedBox(height: 12),
height: 8,
),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showTimePicker(context, showTitleActions: true, onConfirm: (date) { DatePicker.showTimePicker(context, showTitleActions: true, onConfirm: (date) {
@ -220,41 +230,43 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
], ],
), ),
), ),
), Container(
bottomSheet: Container( color: Colors.white,
color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: Padding(
padding: const EdgeInsets.all(20.0),
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).save, TranslationBase.of(context).save,
isButtonDisabled ? null : () async { isButtonDisabled
if (_bloodSystolicValueController.text.isNotEmpty && _bloodDiastolicValueController.text.isNotEmpty) { ? null
GifLoaderDialogUtils.showMyDialog(context); : () async {
widget.model if (_bloodSystolicValueController.text.isNotEmpty && _bloodDiastolicValueController.text.isNotEmpty) {
.addORUpdateDiabtecResult( GifLoaderDialogUtils.showMyDialog(context);
isUpdate: widget.isUpdate, widget.model
bloodPressureDate: '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00', .addORUpdateDiabtecResult(
diastolicPressure: _bloodDiastolicValueController.text.toString(), isUpdate: widget.isUpdate,
systolicePressure: _bloodSystolicValueController.text.toString(), bloodPressureDate: '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
measuredArm: (measuredArm + 1), diastolicPressure: _bloodDiastolicValueController.text.toString(),
lineItemNo: widget.lineItemNo) systolicePressure: _bloodSystolicValueController.text.toString(),
.then((value) { measuredArm: (measuredArm),
GifLoaderDialogUtils.hideDialog(context); lineItemNo: widget.lineItemNo)
if (widget.model.state == ViewState.BusyLocal) .then((value) {
AppToast.showErrorToast(message: widget.model.error); GifLoaderDialogUtils.hideDialog(context);
else if (widget.model.state == ViewState.BusyLocal)
Navigator.pop(context); AppToast.showErrorToast(message: widget.model.error);
; else
}).catchError((e) { Navigator.pop(context);
GifLoaderDialogUtils.hideDialog(context); ;
AppToast.showErrorToast(message: widget.model.error); }).catchError((e) {
}); GifLoaderDialogUtils.hideDialog(context);
} AppToast.showErrorToast(message: widget.model.error);
}, });
}
},
disabledColor: Colors.grey, disabledColor: Colors.grey,
), ),
), )
)); ],
),
);
} }
String getDate() { String getDate() {

@ -44,113 +44,101 @@ class _BloodPressureHomePageState extends State<BloodPressureHomePage> with Sing
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<BloodPressureViewMode>( return BaseView<BloodPressureViewMode>(
onModelReady: (model) => model.getBloodPressure(), onModelReady: (model) => model.getBloodPressure(),
builder: (_, model, w) => builder: (_, model, w) => AppScaffold(
AppScaffold( isShowAppBar: true,
isShowAppBar: true, appBarTitle: TranslationBase.of(context).bloodPressure,
appBarTitle: TranslationBase showNewAppBar: true,
.of(context) showNewAppBarTitle: true,
.bloodPressure, baseViewModel: model,
showNewAppBar: true, body: Scaffold(
showNewAppBarTitle: true, extendBodyBehindAppBar: true,
baseViewModel: model, appBar: TabBarWidget(
body: Scaffold( tabController: _tabController,
extendBodyBehindAppBar: true, ),
appBar: TabBarWidget( body: Column(
tabController: _tabController, children: <Widget>[
), Expanded(
body: Column( child: TabBarView(
children: <Widget>[ physics: BouncingScrollPhysics(),
Expanded( controller: _tabController,
child: TabBarView( children: <Widget>[
physics: BouncingScrollPhysics(), BloodPressureWeeklyPage(
controller: _tabController, model: model,
children: <Widget>[ ),
BloodPressureWeeklyPage( BloodPressureMonthlyPage(
model: model, model: model,
), ),
BloodPressureMonthlyPage( BloodPressureYearPage(
model: model,
)
],
),
)
],
),
floatingActionButton: Stack(children: [
Positioned(
bottom: 60,
right: projectViewModel.isArabic ? MediaQuery.of(context).size.width * .85 : 0,
child: InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: AddBloodPressurePage(
model: model, model: model,
))).then((value) {
model.getBloodPressure();
});
},
child: Container(
width: 50,
height: 50,
decoration: BoxDecoration(shape: BoxShape.circle, color: Theme.of(context).primaryColor),
child: Center(
child: Icon(
Icons.add,
color: Colors.white,
), ),
BloodPressureYearPage( )),
model: model, ))
) ]),
], bottomSheet: Container(
), color: Theme.of(context).scaffoldBackgroundColor,
) child: Padding(
], padding: const EdgeInsets.all(12.0),
), child: DefaultButton(
floatingActionButton: Stack(children: [ TranslationBase.of(context).sendEmail,
Positioned( () {
bottom: 60, showDialog(
right: projectViewModel.isArabic ? MediaQuery context: context,
.of(context) child: ConfirmSendEmailDialog(
.size email: model.user.emailAddress,
.width * .85 : 0, onTapSendEmail: () async {
child: InkWell( GifLoaderDialogUtils.showMyDialog(context);
onTap: () { model.sendReportByEmail().then((value) {
Navigator.push( GifLoaderDialogUtils.hideDialog(context);
context, if (model.state == ViewState.ErrorLocal) {
FadePage( AppToast.showErrorToast(message: model.error);
page: AddBloodPressurePage( } else {
model: model, AppToast.showSuccessToast(
))).then((value) { message: TranslationBase.of(context).emailSentSuccessfully,
model.getBloodPressure(); );
}
}).catchError((e) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: model.error);
}); });
}, },
child: Container( ),
width: 50, );
height: 50, },
decoration: BoxDecoration(shape: BoxShape.circle, color: Theme // label: TranslationBase.of(context).sendEmail,
.of(context) // backgroundColor: Colors.red[900],
.primaryColor),
child: Center(
child: Icon(
Icons.add,
color: Colors.white,
),
)),
))
]),
bottomSheet: Container(
color: Theme.of(context).scaffoldBackgroundColor,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: DefaultButton(
TranslationBase
.of(context)
.sendEmail,
() {
showDialog(
context: context,
child: ConfirmSendEmailDialog(
email: model.user.emailAddress,
onTapSendEmail: () async {
GifLoaderDialogUtils.showMyDialog(context);
model.sendReportByEmail().then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal) {
AppToast.showErrorToast(message: model.error);
} else {
AppToast.showSuccessToast(
message: TranslationBase
.of(context)
.emailSentSuccessfully,
);
}
}).catchError((e) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: model.error);
});
},
),
);
},
// label: TranslationBase.of(context).sendEmail,
// backgroundColor: Colors.red[900],
),
),
), ),
)), ),
),
)),
); );
} }
} }

@ -1,6 +1,5 @@
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -10,16 +9,15 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BloodPressureMonthlyPage extends StatelessWidget { class BloodPressureMonthlyPage extends StatelessWidget {
final BloodPressureViewMode model; final BloodPressureViewMode model;
BloodPressureMonthlyPage({Key key, this.model}) : super(key: key); BloodPressureMonthlyPage({Key key, this.model}) : super(key: key);
List<List> monthlyGroup = []; List<List> monthlyGroup = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
body: ListView( body: ListView(
@ -67,7 +65,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]), ]),
@ -80,7 +78,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, model) { List<TableRow> fullData(BuildContext context, model) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -97,9 +95,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue( Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.bloodPressureDate)}', isCapitable: false),
'${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.bloodPressureDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.bloodPressureDate)}',
isCapitable: false),
Utils.tableColumnValue('${diabtec.bloodPressureDate.hour}:${diabtec.bloodPressureDate.minute}', isCapitable: false), Utils.tableColumnValue('${diabtec.bloodPressureDate.hour}:${diabtec.bloodPressureDate.minute}', isCapitable: false),
Utils.tableColumnValue(diabtec.measuredArmDesc, isCapitable: false), Utils.tableColumnValue(diabtec.measuredArmDesc, isCapitable: false),
Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false), Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false),

@ -1,6 +1,5 @@
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -10,16 +9,15 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BloodPressureYearPage extends StatelessWidget { class BloodPressureYearPage extends StatelessWidget {
final BloodPressureViewMode model; final BloodPressureViewMode model;
BloodPressureYearPage({Key key, this.model}) : super(key: key); BloodPressureYearPage({Key key, this.model}) : super(key: key);
List<List> monthlyGroup = []; List<List> monthlyGroup = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
body: ListView( body: ListView(
@ -28,7 +26,8 @@ class BloodPressureYearPage extends StatelessWidget {
margin: EdgeInsets.only(top: 12, left: 8, right: 8), margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white, color: Colors.white,
child: CurvedChartBloodPressure( child: CurvedChartBloodPressure(
horizontalInterval: 3.0, // model.weightWeekTimeSeriesDataLow.length==1 ?1 :20.0, horizontalInterval: 3.0,
// model.weightWeekTimeSeriesDataLow.length==1 ?1 :20.0,
title: TranslationBase.of(context).bloodPressure, title: TranslationBase.of(context).bloodPressure,
timeSeries1: model.weightYearTimeSeriesDataTop.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesDataTop, timeSeries1: model.weightYearTimeSeriesDataTop.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesDataTop,
timeSeries2: model.weightYearTimeSeriesDataLow.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesDataLow, timeSeries2: model.weightYearTimeSeriesDataLow.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightYearTimeSeriesDataLow,
@ -38,10 +37,6 @@ class BloodPressureYearPage extends StatelessWidget {
SizedBox( SizedBox(
height: 12, height: 12,
), ),
// Padding(
// padding: const EdgeInsets.all(8.0),
// child: Texts(TranslationBase.of(context).details),
// ),
Container( Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
color: Colors.transparent, color: Colors.transparent,
@ -67,7 +62,7 @@ class BloodPressureYearPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]), ]),
@ -80,7 +75,7 @@ class BloodPressureYearPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, model) { List<TableRow> fullData(BuildContext context, model) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -97,9 +92,7 @@ class BloodPressureYearPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue( Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.bloodPressureDate)}', isCapitable: false),
'${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.bloodPressureDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.bloodPressureDate)}',
isCapitable: false),
Utils.tableColumnValue('${diabtec.bloodPressureDate.hour}:${diabtec.bloodPressureDate.minute}', isCapitable: false), Utils.tableColumnValue('${diabtec.bloodPressureDate.hour}:${diabtec.bloodPressureDate.minute}', isCapitable: false),
Utils.tableColumnValue(diabtec.measuredArmDesc, isCapitable: false), Utils.tableColumnValue(diabtec.measuredArmDesc, isCapitable: false),
Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false), Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false),

@ -1,16 +1,15 @@
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/LineChartCurvedBloodPressure.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'AddBloodPressurePage.dart'; import 'AddBloodPressurePage.dart';
class BloodPressureWeeklyPage extends StatelessWidget { class BloodPressureWeeklyPage extends StatelessWidget {
@ -20,7 +19,6 @@ class BloodPressureWeeklyPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
body: ListView( body: ListView(
children: [ children: [
@ -28,8 +26,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
margin: EdgeInsets.only(top: 12, left: 8, right: 8, bottom: 12.0), margin: EdgeInsets.only(top: 12, left: 8, right: 8, bottom: 12.0),
padding: EdgeInsets.only(bottom: 12.0), padding: EdgeInsets.only(bottom: 12.0),
color: Colors.white, color: Colors.white,
child: CurvedChartBloodPressure( child: LineChartCurvedBloodPressure(
horizontalInterval: 3.0,
title: TranslationBase.of(context).bloodPressure, title: TranslationBase.of(context).bloodPressure,
timeSeries1: model.weightWeekTimeSeriesDataTop.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesDataTop, timeSeries1: model.weightWeekTimeSeriesDataTop.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesDataTop,
timeSeries2: model.weightWeekTimeSeriesDataLow.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesDataLow, timeSeries2: model.weightWeekTimeSeriesDataLow.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : model.weightWeekTimeSeriesDataLow,
@ -60,7 +57,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, model), children: fullData(context, model),
), ),
SizedBox(height: 80) SizedBox(height: 80)
], ],
@ -71,7 +68,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, BloodPressureViewMode bloodSugarViewMode) { List<TableRow> fullData(BuildContext context, BloodPressureViewMode bloodSugarViewMode) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -89,7 +86,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue('${DateUtil.getMonthDayYearDateFormatted(diabtec.bloodPressureDate)} ', isCapitable: false), Utils.tableColumnValue('${DateUtil.getDayMonthYearDateFormatted(diabtec.bloodPressureDate)} ', isCapitable: false),
Utils.tableColumnValue(diabtec.bloodPressureDate.hour.toString() + ':' + diabtec.bloodPressureDate.minute.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.bloodPressureDate.hour.toString() + ':' + diabtec.bloodPressureDate.minute.toString(), isCapitable: false),
Utils.tableColumnValue('${diabtec.measuredArmDesc}', isCapitable: false), Utils.tableColumnValue('${diabtec.measuredArmDesc}', isCapitable: false),
Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false), Utils.tableColumnValue('${diabtec.systolicePressure}/${diabtec.diastolicPressure}', isCapitable: false),
@ -114,7 +111,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
), ),
).then((value) { ).then((value) {
model.getBloodPressure(); model.getBloodPressure();
if(model.weekDiabtecPatientResult.isEmpty) { if (model.weekDiabtecPatientResult.isEmpty) {
model.weightWeekTimeSeriesDataTop.clear(); model.weightWeekTimeSeriesDataTop.clear();
model.weightWeekTimeSeriesDataLow.clear(); model.weightWeekTimeSeriesDataLow.clear();
} }

@ -26,7 +26,8 @@ class AddBloodSugarPage extends StatefulWidget {
final String measuredSelectedType; final String measuredSelectedType;
final BloodSugarViewMode bloodSugarViewMode; final BloodSugarViewMode bloodSugarViewMode;
AddBloodSugarPage({Key key, this.bloodSugarDate, this.measureUnitSelectedType, this.isUpdate = false, this.measuredTime, this.bloodSugarValue, this.lineItemNo, this.bloodSugarViewMode, this.measuredSelectedType}) AddBloodSugarPage(
{Key key, this.bloodSugarDate, this.measureUnitSelectedType, this.isUpdate = false, this.measuredTime, this.bloodSugarValue, this.lineItemNo, this.bloodSugarViewMode, this.measuredSelectedType})
: super(key: key); : super(key: key);
@override @override

@ -1,7 +1,6 @@
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart'; import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -11,7 +10,6 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BloodMonthlyPage extends StatelessWidget { class BloodMonthlyPage extends StatelessWidget {
final List<DiabtecPatientResult> diabtecPatientResult; final List<DiabtecPatientResult> diabtecPatientResult;
@ -24,10 +22,8 @@ class BloodMonthlyPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
groupData(); groupData();
return AppScaffold( return AppScaffold(
// baseViewModel: bloodSugarViewMode,
body: ListView( body: ListView(
children: [ children: [
Container( Container(
@ -69,7 +65,7 @@ class BloodMonthlyPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]), ]),
@ -79,7 +75,7 @@ class BloodMonthlyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, e) { List<TableRow> fullData(BuildContext context, e) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -88,71 +84,6 @@ class BloodMonthlyPage extends StatelessWidget {
Utils.tableColumnTitle(TranslationBase.of(context).time), Utils.tableColumnTitle(TranslationBase.of(context).time),
Utils.tableColumnTitle(TranslationBase.of(context).measured), Utils.tableColumnTitle(TranslationBase.of(context).measured),
Utils.tableColumnTitle(TranslationBase.of(context).value), Utils.tableColumnTitle(TranslationBase.of(context).value),
// Container(
// child: Container(
// decoration: BoxDecoration(
// color: Theme.of(context).primaryColor,
// borderRadius: BorderRadius.only(
// topLeft: projectViewModel.isArabic ? Radius.circular(0.0) : Radius.circular(10.0),
// topRight: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0.0),
// ),
// ),
// child: Center(
// child: Texts(
// TranslationBase.of(context).date,
// color: Colors.white,
// fontSize: 15,
// ),
// ),
// height: 40,
// ),
// ),
// Container(
// child: Container(
// decoration: BoxDecoration(
// color: Theme.of(context).primaryColor,
// ),
// child: Center(
// child: Texts(
// TranslationBase.of(context).time,
// color: Colors.white,
// fontSize: 15,
// ),
// ),
// height: 40),
// ),
// Container(
// child: Container(
// decoration: BoxDecoration(
// color: Theme.of(context).primaryColor,
// ),
// child: Center(
// child: Texts(
// TranslationBase.of(context).measured,
// color: Colors.white,
// fontSize: 15,
// ),
// ),
// height: 40),
// ),
// Container(
// child: Container(
// decoration: BoxDecoration(
// color: Theme.of(context).primaryColor,
// borderRadius: BorderRadius.only(
// topLeft: projectViewModel.isArabic ? Radius.circular(10.0) : Radius.circular(0.0),
// topRight: projectViewModel.isArabic ? Radius.circular(0.0) : Radius.circular(10.0),
// ),
// ),
// child: Center(
// child: Texts(
// TranslationBase.of(context).value,
// color: Colors.white,
// fontSize: 15,
// ),
// ),
// height: 40),
// ),
], ],
), ),
); );
@ -161,67 +92,10 @@ class BloodMonthlyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue(projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart) : DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart), Utils.tableColumnValue(DateUtil.getDayMonthYearDateFormatted(diabtec.dateChart), isCapitable: false),
isCapitable: false),
Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false),
Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false), Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false),
Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false),
// Container(
// child: Container(
// height: 70,
// padding: EdgeInsets.all(10),
// color: Colors.white,
// child: Center(
// child: Texts(
// '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart) : DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
// textAlign: TextAlign.center,
// fontSize: 12,
// ),
// ),
// ),
// ),
// Container(
// child: Container(
// height: 70,
// padding: EdgeInsets.all(10),
// color: Colors.white,
// child: Center(
// child: Texts(
// '${diabtec.dateChart.hour}:${diabtec.dateChart.minute}',
// textAlign: TextAlign.center,
// fontSize: 12,
// ),
// ),
// ),
// ),
// Container(
// child: Container(
// height: 70,
// padding: EdgeInsets.all(10),
// color: Colors.white,
// child: Center(
// child: Texts(
// '${diabtec.measuredDesc}',
// textAlign: TextAlign.center,
// fontSize: 12,
// ),
// ),
// ),
// ),
// Container(
// child: Container(
// height: 70,
// padding: EdgeInsets.all(10),
// color: Colors.white,
// child: Center(
// child: Texts(
// '${diabtec.resultValue}',
// textAlign: TextAlign.center,
// fontSize: 12,
// ),
// ),
// ),
// ),
], ],
), ),
); );

@ -1,17 +1,15 @@
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/charts/show_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BloodYearPage extends StatelessWidget { class BloodYearPage extends StatelessWidget {
final List<DiabtecPatientResult> diabtecPatientResult; final List<DiabtecPatientResult> diabtecPatientResult;
@ -20,23 +18,24 @@ class BloodYearPage extends StatelessWidget {
BloodYearPage({Key key, this.diabtecPatientResult, this.timeSeriesData, this.bloodSugarViewMode}) : super(key: key); BloodYearPage({Key key, this.diabtecPatientResult, this.timeSeriesData, this.bloodSugarViewMode}) : super(key: key);
List<List> yearlyGroup = []; List<List> yearlyGroup = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
groupData(); groupData();
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
// baseViewModel: bloodSugarViewMode,
body: ListView( body: ListView(
children: [ children: [
Container( Container(
margin: EdgeInsets.only(top: 12, left: 8, right: 8), margin: EdgeInsets.only(top: 12, left: 8, right: 8),
width: double.maxFinite, width: double.maxFinite,
color: Colors.white, color: Colors.white,
child: LineChartCurved( child: ShowChart(
title: '${TranslationBase.of(context).bloodSugar}', title: TranslationBase.of(context).weight,
timeSeries: timeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : timeSeriesData, timeSeries: timeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : timeSeriesData,
indexes: timeSeriesData.length ~/ 5.5 ?? 0, indexes: timeSeriesData.length ~/ 5.5,
)), horizontalInterval: 2,
),
),
SizedBox( SizedBox(
height: 12, height: 12,
), ),
@ -69,7 +68,7 @@ class BloodYearPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, monthly[1]), children: fullData(context, monthly[1]),
) )
]) ])
]), ]),
@ -82,7 +81,7 @@ class BloodYearPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, yearlyGroup) { List<TableRow> fullData(BuildContext context, yearlyGroup) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -99,8 +98,7 @@ class BloodYearPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue(projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart) : DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart), Utils.tableColumnValue(DateUtil.getDayMonthYearDateFormatted(diabtec.dateChart), isCapitable: false),
isCapitable: false),
Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false),
Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false), Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false),
Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false),

@ -1,18 +1,16 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart'; import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/charts/show_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'AddBloodSugarPage.dart'; import 'AddBloodSugarPage.dart';
@ -25,18 +23,17 @@ class BloodSugarWeeklyPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
// baseViewModel: bloodSugarViewMode,
body: ListView( body: ListView(
children: [ children: [
Container( Container(
margin: EdgeInsets.only(top: 12, left: 8, right: 8), margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white, color: Colors.white,
child: LineChartCurved( child: ShowChart(
title: '${TranslationBase.of(AppGlobal.context).bloodSugar}', title: TranslationBase.of(context).weight,
timeSeries: timeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : timeSeriesData, timeSeries: timeSeriesData.isEmpty ? [TimeSeriesSales2(DateTime.now(), 0.0)] : timeSeriesData,
indexes: timeSeriesData.length ~/ 5.5, indexes: timeSeriesData.length ~/ 5.5,
horizontalInterval: 2,
), ),
), ),
SizedBox( SizedBox(
@ -63,7 +60,7 @@ class BloodSugarWeeklyPage extends StatelessWidget {
0: FlexColumnWidth(1.8), 0: FlexColumnWidth(1.8),
2: FlexColumnWidth(1.8), 2: FlexColumnWidth(1.8),
}, },
children: fullData(context, projectViewModel, bloodSugarViewMode), children: fullData(context, bloodSugarViewMode),
), ),
SizedBox( SizedBox(
height: 80, height: 80,
@ -76,7 +73,7 @@ class BloodSugarWeeklyPage extends StatelessWidget {
); );
} }
List<TableRow> fullData(BuildContext context, ProjectViewModel projectViewModel, BloodSugarViewMode bloodSugarViewMode) { List<TableRow> fullData(BuildContext context, BloodSugarViewMode bloodSugarViewMode) {
List<TableRow> tableRow = []; List<TableRow> tableRow = [];
tableRow.add( tableRow.add(
TableRow( TableRow(
@ -94,8 +91,7 @@ class BloodSugarWeeklyPage extends StatelessWidget {
tableRow.add( tableRow.add(
TableRow( TableRow(
children: [ children: [
Utils.tableColumnValue(projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart) : DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart), Utils.tableColumnValue(DateUtil.getDayMonthYearDateFormatted(diabtec.dateChart), isCapitable: false),
isCapitable: false),
Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.dateChart.hour.toString() + ':' + diabtec.dateChart.minute.toString(), isCapitable: false),
Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false), Utils.tableColumnValue(diabtec.measuredDesc, isCapitable: false),
Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false), Utils.tableColumnValue(diabtec.resultValue.toString(), isCapitable: false),
@ -119,7 +115,7 @@ class BloodSugarWeeklyPage extends StatelessWidget {
), ),
), ),
).then((value) { ).then((value) {
if(bloodSugarViewMode.weekDiabtecPatientResult.isEmpty) { if (bloodSugarViewMode.weekDiabtecPatientResult.isEmpty) {
timeSeriesData.clear(); timeSeriesData.clear();
} }
}); });

@ -4,9 +4,11 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/feedback/appointment_history.dart'; import 'package:diplomaticquarterapp/pages/feedback/appointment_history.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -19,11 +21,12 @@ class MedicalReports extends StatelessWidget {
void confirmBox(AppointmentHistory model, ReportsViewModel reportsViewModel) { void confirmBox(AppointmentHistory model, ReportsViewModel reportsViewModel) {
showDialog( showDialog(
context: context, context: context,
child: ConfirmDialog( child: ConfirmWithMessageDialog(
appointmentHistory: model, message: TranslationBase.of(context).confirmMsgReport,
onOkSelected: (model) => reportsViewModel.insertRequestForMedicalReport(model, TranslationBase.of(context).successSendReport), onTap: () => reportsViewModel.insertRequestForMedicalReport(model, TranslationBase.of(context).successSendReport),
), ),
); );
return;
} }
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
@ -36,182 +39,100 @@ class MedicalReports extends StatelessWidget {
showNewAppBar: true, showNewAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
backgroundColor: Color(0xffF7F7F7), backgroundColor: Color(0xffF7F7F7),
body: ListView.separated( body: model.appointHistoryList.isEmpty
physics: BouncingScrollPhysics(), ? getNoDataWidget(context)
itemCount: model.appointHistoryList.length, : ListView.separated(
padding: EdgeInsets.all(21), physics: BouncingScrollPhysics(),
separatorBuilder: (context, index) => SizedBox(height: 14), itemCount: model.appointHistoryList.length,
itemBuilder: (context, index) { padding: EdgeInsets.all(21),
AppointmentHistory _appointmenHistory = model.appointHistoryList[index]; separatorBuilder: (context, index) => SizedBox(height: 14),
return InkWell( itemBuilder: (context, index) {
onTap: () => confirmBox(model.appointHistoryList[index], model), AppointmentHistory _appointmenHistory = model.appointHistoryList[index];
child: Container( return InkWell(
decoration: BoxDecoration( onTap: () => confirmBox(model.appointHistoryList[index], model),
borderRadius: BorderRadius.all( child: Container(
Radius.circular(10.0), decoration: BoxDecoration(
), borderRadius: BorderRadius.all(
boxShadow: [ Radius.circular(10.0),
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Padding(
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null)
Text(
_appointmenHistory.doctorTitle.toString() + " " + (_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
Text(
DateUtil.formatDateToDate(_appointmenHistory.appointmentDate, projectViewModel.isArabic),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
),
],
),
if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) SizedBox(height: 6),
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
LargeAvatar(
name: _appointmenHistory.doctorName,
url: _appointmenHistory.doctorImageURL,
width: 48,
height: 48,
), ),
SizedBox(width: 11), boxShadow: [
Expanded( BoxShadow(
child: Column( color: Color(0xff000000).withOpacity(.05),
crossAxisAlignment: CrossAxisAlignment.start, //spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Padding(
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null)
Text(
_appointmenHistory.doctorTitle.toString() + " " + (_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
Text(
DateUtil.getDayMonthYearDateFormatted(_appointmenHistory.appointmentDate),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
),
],
),
if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) SizedBox(height: 6),
Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic), LargeAvatar(
if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic), name: _appointmenHistory.doctorName,
Row( url: _appointmenHistory.doctorImageURL,
mainAxisAlignment: MainAxisAlignment.spaceBetween, width: 48,
mainAxisSize: MainAxisSize.max, height: 48,
crossAxisAlignment: CrossAxisAlignment.start, ),
children: <Widget>[ SizedBox(width: 11),
RatingBar.readOnly( Expanded(
initialRating: _appointmenHistory.actualDoctorRate.toDouble(), child: Column(
size: 16.0, crossAxisAlignment: CrossAxisAlignment.start,
filledColor: Color(0XFFD02127), mainAxisSize: MainAxisSize.min,
emptyColor: Color(0XFFD02127), children: <Widget>[
isHalfAllowed: true, if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic),
halfFilledIcon: Icons.star_half, if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic),
filledIcon: Icons.star, Row(
emptyIcon: Icons.star_border, mainAxisAlignment: MainAxisAlignment.spaceBetween,
), mainAxisSize: MainAxisSize.max,
Icon(Icons.email, color: Color(0xff2B353E)) crossAxisAlignment: CrossAxisAlignment.start,
], children: <Widget>[
RatingBar.readOnly(
initialRating: _appointmenHistory.actualDoctorRate.toDouble(),
size: 16.0,
filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127),
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
Icon(Icons.email, color: Color(0xff2B353E))
],
),
],
),
), ),
], ],
), ),
), ],
],
),
],
),
),
),
);
},
),
),
);
}
}
class ConfirmDialog extends StatefulWidget {
final Function(AppointmentHistory) onOkSelected;
final AppointmentHistory appointmentHistory;
ConfirmDialog({this.onOkSelected, this.appointmentHistory});
@override
_ConfirmDialogState createState() => _ConfirmDialogState();
}
class _ConfirmDialogState extends State<ConfirmDialog> {
@override
Widget build(BuildContext context) {
return SimpleDialog(
title: Texts(TranslationBase.of(context).confirm),
children: <Widget>[
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Texts(TranslationBase.of(context).confirmMsgReport),
SizedBox(
height: 5.0,
),
Divider(
height: 2.5,
color: Colors.grey[500],
),
SizedBox(
height: 5,
),
Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
flex: 1,
child: InkWell(
onTap: () => Navigator.pop(context),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
child: Center(
child: Texts(
TranslationBase.of(context).cancel,
color: Colors.red,
),
),
),
),
),
),
Container(
width: 1,
height: 30,
color: Colors.grey[500],
),
Expanded(
flex: 1,
child: InkWell(
onTap: () {
widget.onOkSelected(widget.appointmentHistory);
Navigator.pop(context);
},
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Texts(
TranslationBase.of(context).ok,
fontWeight: FontWeight.w400,
),
), ),
), ),
), ),
), );
], },
) ),
], ),
),
)
],
); );
} }
} }

@ -17,4 +17,5 @@ class CustomColors {
static const Color appBackgroudGreyColor = Color(0xFFF7F7F7); static const Color appBackgroudGreyColor = Color(0xFFF7F7F7);
static const Color appBackgroudGrey2Color = Color(0xFFF8F8F8); static const Color appBackgroudGrey2Color = Color(0xFFF8F8F8);
static const Color green = Color(0xFF359846); static const Color green = Color(0xFF359846);
static const Color orange = Color(0xFFCC9B14);
} }

@ -419,9 +419,7 @@ class DateUtil {
"/" + "/" +
dateTime.year.toString() + dateTime.year.toString() +
" " + " " +
dateTime.hour.toString() + DateFormat('HH:mm').format(dateTime);
":" +
dateTime.minute.toString();
else else
return ""; return "";
} }

@ -2385,6 +2385,12 @@ class TranslationBase {
String get selectSearchCriteria => localizedValues["selectSearchCriteria"][locale.languageCode]; String get selectSearchCriteria => localizedValues["selectSearchCriteria"][locale.languageCode];
String get enterComplainNumber => localizedValues["enterComplainNumber"][locale.languageCode]; String get enterComplainNumber => localizedValues["enterComplainNumber"][locale.languageCode];
String get RequesterInfo => localizedValues["RequesterInfo"][locale.languageCode];
String get PatientInfo => localizedValues["PatientInfo"][locale.languageCode];
String get OtherInfo => localizedValues["OtherInfo"][locale.languageCode];
String get inPrgress => localizedValues["inPrgress"][locale.languageCode];
String get locked => localizedValues["locked"][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -50,6 +50,7 @@ import 'gif_loader_dialog_utils.dart';
AppSharedPreferences sharedPref = new AppSharedPreferences(); AppSharedPreferences sharedPref = new AppSharedPreferences();
class Utils { class Utils {
// static ProgressDialog pr; // static ProgressDialog pr;
@ -518,6 +519,8 @@ class Utils {
return medical; return medical;
} }
static List<Widget> myMedicalListHomePage({ProjectViewModel projectViewModel, BuildContext context, bool isLogin, count}) { static List<Widget> myMedicalListHomePage({ProjectViewModel projectViewModel, BuildContext context, bool isLogin, count}) {
List<Widget> medical = List(); List<Widget> medical = List();

@ -360,7 +360,7 @@ class _AppDrawerState extends State<AppDrawer> {
onTap: () { onTap: () {
//NotificationsPage //NotificationsPage
// Navigator.of(context).pop(); // Navigator.of(context).pop();
if (!projectProvider.user.isFamily) Navigator.push(context, FadePage(page: NotificationsPage())); if (!projectProvider.isLoginChild) Navigator.push(AppGlobal.context, FadePage(page: NotificationsPage()));
}, },
), ),
if (projectProvider.havePrivilege(3)) if (projectProvider.havePrivilege(3))

@ -174,7 +174,7 @@ class MyInAppBrowser extends InAppBrowser {
applePayInsertRequest.longitude = this.long.toString(); applePayInsertRequest.longitude = this.long.toString();
applePayInsertRequest.amount = amount.toString(); applePayInsertRequest.amount = amount.toString();
applePayInsertRequest.isSchedule = "0"; applePayInsertRequest.isSchedule = "0";
applePayInsertRequest.language = getLanguageID() == 'ar' ? 'AR' : 'EN'; applePayInsertRequest.language = await getLanguageID() == 'ar' ? 'AR' : 'EN';
applePayInsertRequest.userName = authenticatedUser.patientID; applePayInsertRequest.userName = authenticatedUser.patientID;
applePayInsertRequest.responseContinueURL = "http://hmg.com/Documents/success.html"; applePayInsertRequest.responseContinueURL = "http://hmg.com/Documents/success.html";
applePayInsertRequest.backClickUrl = "http://hmg.com/Documents/success.html"; applePayInsertRequest.backClickUrl = "http://hmg.com/Documents/success.html";
@ -219,7 +219,7 @@ class MyInAppBrowser extends InAppBrowser {
AuthenticatedUser authUser, bool isLiveCareAppo, var servID, var LiveServID, AuthenticatedUser authUser, bool isLiveCareAppo, var servID, var LiveServID,
[var appoDate, var appoNo, var clinicID, var doctorID, var patientData]) async { [var appoDate, var appoNo, var clinicID, var doctorID, var patientData]) async {
getDeviceToken(); getDeviceToken();
String currentLanguageID = getLanguageID() == 'ar' ? 'AR' : 'EN'; String currentLanguageID = await getLanguageID() == 'ar' ? 'AR' : 'EN';
String form = isLiveCareAppo ? getLiveCareForm() : getForm(); String form = isLiveCareAppo ? getLiveCareForm() : getForm();
form = form.replaceFirst("EMAIL_VALUE", emailId); form = form.replaceFirst("EMAIL_VALUE", emailId);

@ -197,6 +197,7 @@ class DoctorHeader extends StatelessWidget {
res['DoctorRatingDetailsList'].forEach((v) { res['DoctorRatingDetailsList'].forEach((v) {
doctorDetailsList.add(new DoctorRateDetails.fromJson(v)); doctorDetailsList.add(new DoctorRateDetails.fromJson(v));
}); });
this.headerModel.decimalDoctorRate = res['DecimalDoctorRate'].toString();
showRatingDialog(doctorDetailsList, context); showRatingDialog(doctorDetailsList, context);
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);

@ -225,31 +225,33 @@ class SMSOTP {
}); });
} }
static void showLoadingDialog(BuildContext context, bool _loading) async {
_context = context; // todo 'sikander' remove useless code
//setSignature(); // static void showLoadingDialog(BuildContext context, bool _loading) async {
if (_loading == false) { // _context = context;
Navigator.of(context).pop(); // //setSignature();
return; // if (_loading == false) {
} // Navigator.of(context).pop();
_loading = true; // return;
await showDialog( // }
context: _context, // _loading = true;
barrierDismissible: false, // await showDialog(
builder: (BuildContext context) { // context: _context,
return SimpleDialog( // barrierDismissible: false,
elevation: 0.0, // builder: (BuildContext context) {
backgroundColor: Colors.transparent, // return SimpleDialog(
children: <Widget>[ // elevation: 0.0,
Center( // backgroundColor: Colors.transparent,
child: CircularProgressIndicator( // children: <Widget>[
valueColor: AlwaysStoppedAnimation<Color>(Colors.black), // Center(
), // child: CircularProgressIndicator(
) // valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
], // ),
); // )
}); // ],
} // );
// });
// }
static void hideSMSBox(context) { static void hideSMSBox(context) {
Navigator.pop(context); Navigator.pop(context);

Loading…
Cancel
Save