find us and prescription availability hospital location ui changes,

merge-update-with-lab-changes
Sikander Saleem 4 years ago
parent 68642c3ba4
commit f13871de9a

@ -309,7 +309,8 @@ const Map localizedValues = {
"branch": {"en": "Branch:", "ar": "الفرع"},
"emergencyServices": {"en": "Emergency Services", "ar": "خدمات الطوارئ"},
"nearester": {"en": "Nearest ER", "ar": "أقرب طوارى"},
"locationa": {"en": "location", "ar": "الموقع"},
"locationa": {"en": "Location", "ar": "الموقع"},
"call_now": {"en": "Call now", "ar": "اتصل الان"},
"ambulancerequest": {"en": "Ambulance", "ar": "طلب نقل "},
"requestA": {"en": "Request", "ar": "اسعاف"},
"MyAppointments": {"en": "My", "ar": "مواعيدي"},
@ -406,6 +407,8 @@ const Map localizedValues = {
"SelectFamilyPatientName": {"en": "Family Members", "ar": "أفراد الأسرة"},
"SelectHospital": {"en": "Select Hospital", "ar": "اختر المستشفى"},
"selectCity": {"en": "Select City", "ar": "اختر المدينة"},
"city": {"en": "City", "ar": "مدينة"},
"distance": {"en": "Distance", "ar": "مسافه"},
"MyAccount": {"en": "My Account", "ar": "حسابي"},
"OtherAccount": {"en": "Other Account", "ar": "حساب آخر"},
"SelectBeneficiary": {"en": "Select Beneficiary", "ar": "حدد المستفيد"},
@ -416,6 +419,7 @@ const Map localizedValues = {
"country": {"en": "Country", "ar": "دولة"},
"Ok": {"en": "Ok", "ar": "حسنا"},
"averageWaitingTime": {"en": "Average Waiting Time:", "ar": "متوسط ​​وقت الانتظار:"},
"waitingTime": {"en": "Waiting Time:", "ar": "وقت الانتظار:"},
"WaterConsumedInWeek": {"en": "Water consumed in a week", "ar": "معدل شرب الماء خلال الاسبوع"},
"WaterConsumedInMonth": {"en": "Water consumed in a month", "ar": "معدل شرب الماء خلال الشهر"},
"TheVerificationCodeExpiresIn": {"en": "The Verification Code Expires in", "ar": "تنتهي صلاحية رمز التحقق في"},

@ -12,6 +12,8 @@ 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/errors/app_embedded_error.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_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/network_base_view.dart';
@ -217,9 +219,9 @@ class _SearchForReferralsPageState extends State<SearchForReferralsPage> {
style: TextStyle(fontSize: 14.0, letterSpacing: -0.56, fontWeight: FontWeight.bold)),
Container(
margin: EdgeInsets.only(top: 5.0),
child: myRichText(TranslationBase.of(context).patientName + ": ", model.allReferral[index].patientName, projectViewModel.isArabic)),
myRichText(TranslationBase.of(context).hospital + ": ", model.allReferral[index].preferredBranchName, projectViewModel.isArabic),
myRichText(TranslationBase.of(context).referralDate + ": ",
child: MyRichText(TranslationBase.of(context).patientName + ": ", model.allReferral[index].patientName, projectViewModel.isArabic)),
MyRichText(TranslationBase.of(context).hospital + ": ", model.allReferral[index].preferredBranchName, projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).referralDate + ": ",
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateNoTimeZone(model.allReferral[index].referralDate)), projectViewModel.isArabic),
],
),

@ -8,6 +8,7 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -73,8 +74,8 @@ class DoctorView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName, projectViewModel.isArabic),
if (doctor.projectName != null) myRichText(TranslationBase.of(context).branch, doctor.projectName, projectViewModel.isArabic),
if (doctor.clinicName != null) MyRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName, projectViewModel.isArabic),
if (doctor.projectName != null) MyRichText(TranslationBase.of(context).branch, doctor.projectName, projectViewModel.isArabic),
if (doctor.speciality != null)
Text(
getDoctorSpeciality(this.doctor.speciality).trim(),
@ -99,11 +100,12 @@ class DoctorView extends StatelessWidget {
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
if (isShowFlag) Icon(
Icons.arrow_forward,
color: Theme.of(context).primaryColor,
),
// if (isShowFlag) Image.network(this.doctor.nationalityFlagURL, width: 22.0, height: 22.0)
if (isShowFlag)
Icon(
Icons.arrow_forward,
color: Theme.of(context).primaryColor,
),
// if (isShowFlag) Image.network(this.doctor.nationalityFlagURL, width: 22.0, height: 22.0)
],
),
],

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/model/contactus/get_hmg_locations.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/hospital_location.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:giffy_dialog/giffy_dialog.dart';
@ -28,102 +29,7 @@ class _HospitalsPageState extends State<HospitalsPage> {
shrinkWrap: true,
padding: EdgeInsets.zero,
separatorBuilder: (context, index) => SizedBox(height: 14),
itemBuilder: (context, index) {
GetHMGLocationsModel _location = widget.findusHospitalModelList[index];
return Container(
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
showDialog(
context: context,
builder: (_) => AssetGiffyDialog(
title: Text(
_location.locationName,
style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.w600),
),
image: Image.network(
_location.projectImageURL.toString(),
fit: BoxFit.cover,
),
buttonCancelText: Text(TranslationBase.of(context).cancel),
buttonCancelColor: Colors.grey,
onlyCancelButton: true,
),
);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(12),
child: Image.network(
_location.projectImageURL.toString(),
width: 48,
height: 48,
fit: BoxFit.cover,
),
),
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 12, right: 12),
child: Text(
_location.locationName?.trim().toString() + "\n" + _location.distanceInKilometers.toString() + " " + TranslationBase.of(context).km_ ?? "",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
),
), //model.cOCItemList[index].cOCTitl
IconButton(
icon: Icon(
Icons.location_on,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
setState(() {
MapsLauncher.launchCoordinates(double.parse(_location.latitude), double.parse(_location.longitude), _location.locationName);
});
},
),
IconButton(
icon: Icon(
Icons.phone,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
setState(() {
launch("tel://" + _location.phoneNumber);
});
},
),
],
),
);
},
itemBuilder: (context, index) => HospitalLocation(widget.findusHospitalModelList[index]),
itemCount: widget.findusHospitalModelList.length,
),
Container(

@ -1,9 +1,7 @@
import 'package:diplomaticquarterapp/core/model/contactus/get_hmg_locations.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/hospital_location.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:giffy_dialog/giffy_dialog.dart';
import 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
class PharmaciesPage extends StatefulWidget {
@ -28,128 +26,7 @@ class _PharmaciesPageState extends State<PharmaciesPage> {
shrinkWrap: true,
padding: EdgeInsets.zero,
separatorBuilder: (context, index) => SizedBox(height: 14),
itemBuilder: (context, index) {
GetHMGLocationsModel _location = widget.findusPharmaciesModelList[index];
return Container(
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
showDialog(
context: context,
builder: (_) => AssetGiffyDialog(
title: Text(
_location.locationName,
style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.w600),
),
image: _location.projectImageURL != null
? Image.network(
_location.projectImageURL,
fit: BoxFit.cover,
)
: Image.network(
'https://hmgwebservices.com/Images/Hospitals/15.jpg',
fit: BoxFit.cover,
),
buttonCancelText: Text(TranslationBase.of(context).cancel),
// buttonCancelText:Text(model.user.projectID) ,
buttonCancelColor: Colors.grey,
onlyCancelButton: true,
),
);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(12),
child: Image.network(
_location?.projectImageURL?.toString() ?? 'https://hmgwebservices.com/Images/Hospitals/15.jpg',
width: 48,
height: 48,
fit: BoxFit.cover,
),
),
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 12, right: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_location.locationName?.trim() ?? "",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
SizedBox(
height: 2,
),
Text(
_location.cityName?.trim().toString() + "\n" + _location.distanceInKilometers.toString() + " " + TranslationBase.of(context).km_ ?? "",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
SizedBox(
height: 2,
),
],
),
),
),
IconButton(
icon: Icon(
Icons.location_on,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
setState(() {
MapsLauncher.launchCoordinates(double.parse(_location.latitude), double.parse(_location.longitude), _location.locationName);
});
},
),
IconButton(
icon: Icon(
Icons.phone,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
setState(() {
launch("tel://" + _location.phoneNumber);
});
},
),
],
),
);
},
itemBuilder: (context, index) => HospitalLocation(widget.findusPharmaciesModelList[index], showCity: true),
itemCount: widget.findusPharmaciesModelList.length,
),
Container(

@ -5,13 +5,12 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback-detail.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.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/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
@ -217,7 +216,7 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
margin: EdgeInsets.only(top: 5.0),
child: Text(cOCItemList[index].formType.toString(),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12))),
myRichText(TranslationBase.of(context).number + ": ", cOCItemList[index].itemID.toString(), isArabic),
MyRichText(TranslationBase.of(context).number + ": ", cOCItemList[index].itemID.toString(), isArabic),
Text(cOCItemList[index].cOCTitle,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12)),
],

@ -4,7 +4,7 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -12,6 +12,7 @@ import 'package:provider/provider.dart';
class InsuranceApprovalDetail extends StatelessWidget {
final InsuranceApprovalModel insuranceApprovalModel;
InsuranceApprovalDetail({Key key, this.insuranceApprovalModel}) : super(key: key);
@override
@ -71,15 +72,15 @@ class InsuranceApprovalDetail extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
myRichText(TranslationBase.of(context).clinic + ":", insuranceApprovalModel?.clinicName ?? "", projectViewModel.isArabic),
myRichText(TranslationBase.of(context).approvalNo, insuranceApprovalModel?.approvalNo.toString() ?? "", projectViewModel.isArabic),
myRichText(TranslationBase.of(context).unusedCount, insuranceApprovalModel?.unUsedCount.toString() ?? "", projectViewModel.isArabic),
myRichText(TranslationBase.of(context).companyName, insuranceApprovalModel?.companyName ?? "", projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).clinic + ":", insuranceApprovalModel?.clinicName ?? "", projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).approvalNo, insuranceApprovalModel?.approvalNo.toString() ?? "", projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).unusedCount, insuranceApprovalModel?.unUsedCount.toString() ?? "", projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).companyName, insuranceApprovalModel?.companyName ?? "", projectViewModel.isArabic),
SizedBox(height: 6),
myRichText(TranslationBase.of(context).receiptOn,
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.receiptOn)) ?? "", projectViewModel.isArabic),
myRichText(TranslationBase.of(context).expiryOn,
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.expiryDate)) ?? "", projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).receiptOn, DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.receiptOn)) ?? "",
projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).expiryOn, DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDateTime(insuranceApprovalModel.expiryDate)) ?? "",
projectViewModel.isArabic),
],
),
),

@ -2,12 +2,11 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/theme/colors.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/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
@ -47,126 +46,128 @@ class _InsuranceApprovalState extends State<InsuranceApproval> {
description: TranslationBase.of(context).infoApprovals,
infoList: TranslationBase.of(context).infoApprovalPoints,
imagesInfo: imagesInfo,
body: model.insuranceApproval.length > 0 ? ListView.separated(
padding: EdgeInsets.all(21),
physics: BouncingScrollPhysics(),
itemBuilder: (_, index) {
Color _patientStatusColor;
String _patientStatusString;
body: model.insuranceApproval.length > 0
? ListView.separated(
padding: EdgeInsets.all(21),
physics: BouncingScrollPhysics(),
itemBuilder: (_, index) {
Color _patientStatusColor;
String _patientStatusString;
if (model.insuranceApproval[index].isLiveCareAppointment) {
_patientStatusColor = Color(0xff2E303A);
_patientStatusString = TranslationBase.of(context).liveCare.capitalizeFirstofEach;
} else if (!model.insuranceApproval[index].isInOutPatient) {
_patientStatusColor = Color(0xffD02127);
_patientStatusString = TranslationBase.of(context).inPatient.capitalizeFirstofEach;
} else {
_patientStatusString = TranslationBase.of(context).outpatient.capitalizeFirstofEach;
_patientStatusColor = Color(0xffa9a089);
}
return InkWell(
onTap: () {
Navigator.push(context, FadePage(page: InsuranceApprovalDetail(insuranceApprovalModel: model.insuranceApproval[index])));
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: _patientStatusColor),
child: Row(
children: [
SizedBox(
width: 16,
child: RotatedBox(
quarterTurns: 3,
child: Text(
_patientStatusString,
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w700, color: Colors.white, letterSpacing: -0.2, height: 16 / 10),
if (model.insuranceApproval[index].isLiveCareAppointment) {
_patientStatusColor = Color(0xff2E303A);
_patientStatusString = TranslationBase.of(context).liveCare.capitalizeFirstofEach;
} else if (!model.insuranceApproval[index].isInOutPatient) {
_patientStatusColor = Color(0xffD02127);
_patientStatusString = TranslationBase.of(context).inPatient.capitalizeFirstofEach;
} else {
_patientStatusString = TranslationBase.of(context).outpatient.capitalizeFirstofEach;
_patientStatusColor = Color(0xffa9a089);
}
return InkWell(
onTap: () {
Navigator.push(context, FadePage(page: InsuranceApprovalDetail(insuranceApprovalModel: model.insuranceApproval[index])));
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
),
Expanded(
child: Container(
padding: EdgeInsets.fromLTRB(12, 10, 12, 10),
decoration: BoxDecoration(
border: Border.all(color: Colors.white, width: 1),
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(10.0),
topRight: Radius.circular(10.0),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: _patientStatusColor),
child: Row(
children: [
SizedBox(
width: 16,
child: RotatedBox(
quarterTurns: 3,
child: Text(
_patientStatusString,
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w700, color: Colors.white, letterSpacing: -0.2, height: 16 / 10),
),
color: Colors.white),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
model.insuranceApproval[index].approvalStatusDescption,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: model.insuranceApproval[index].status == 9 ? Color(0xff359846) : Color(0xffD02127),
letterSpacing: -0.4,
height: 18 / 10),
),
Text(
model.insuranceApproval[index].doctorName,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.64,
),
),
SizedBox(height: 6),
Row(
children: [
LargeAvatar(
name: model.insuranceApproval[index].doctorName,
url: model.insuranceApproval[index].doctorImageURL,
width: 48,
height: 48,
),
),
Expanded(
child: Container(
padding: EdgeInsets.fromLTRB(12, 10, 12, 10),
decoration: BoxDecoration(
border: Border.all(color: Colors.white, width: 1),
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(10.0),
topRight: Radius.circular(10.0),
),
SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
myRichText(TranslationBase.of(context).clinic + ":", model.insuranceApproval[index]?.clinicName.toLowerCase().capitalizeFirstofEach ?? "",
projectViewModel.isArabic),
myRichText(TranslationBase.of(context).approvalNo, model.insuranceApproval[index]?.approvalNo.toString() ?? "", projectViewModel.isArabic),
],
),
color: Colors.white),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
model.insuranceApproval[index].approvalStatusDescption,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: model.insuranceApproval[index].status == 9 ? Color(0xff359846) : Color(0xffD02127),
letterSpacing: -0.4,
height: 18 / 10),
),
Container(
height: 48,
alignment: Alignment.bottomRight,
child: Icon(
Icons.arrow_forward,
Text(
model.insuranceApproval[index].doctorName,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.64,
),
),
SizedBox(height: 6),
Row(
children: [
LargeAvatar(
name: model.insuranceApproval[index].doctorName,
url: model.insuranceApproval[index].doctorImageURL,
width: 48,
height: 48,
),
SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
MyRichText(TranslationBase.of(context).clinic + ":", model.insuranceApproval[index]?.clinicName.toLowerCase().capitalizeFirstofEach ?? "",
projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).approvalNo, model.insuranceApproval[index]?.approvalNo.toString() ?? "", projectViewModel.isArabic),
],
),
),
Container(
height: 48,
alignment: Alignment.bottomRight,
child: Icon(
Icons.arrow_forward,
color: Color(0xff2E303A),
),
)
],
)
],
)
],
),
),
),
),
],
),
],
),
),
);
},
separatorBuilder: (context, index) => SizedBox(height: 12),
itemCount: model.insuranceApproval.length) : getNoDataWidget(context)),
),
);
},
separatorBuilder: (context, index) => SizedBox(height: 12),
itemCount: model.insuranceApproval.length)
: getNoDataWidget(context)),
);
}

@ -10,7 +10,7 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@ -113,13 +113,13 @@ class _InvoiceDetailState extends State<InvoiceDetail> {
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)),
),
myRichText(
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 + ": ",
widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID != null ? widget.dentalInvoiceDetailResponse.listEInvoiceForDental[0].insuranceID : "N/A",
projectViewModel.isArabic),

@ -1,14 +1,13 @@
import 'package:diplomaticquarterapp/core/model/contactus/get_hmg_locations.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/hospital_location.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:giffy_dialog/giffy_dialog.dart';
import 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
class PharmacyForPrescriptionsPage extends StatelessWidget {
final itemID;
@ -28,211 +27,63 @@ class PharmacyForPrescriptionsPage extends StatelessWidget {
baseViewModel: model,
body: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10, left: 10, right: 10),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(color: Colors.grey[200], width: 0.5),
),
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)),
child: Image.network(
prescriptionReport.imageSRCUrl,
fit: BoxFit.cover,
width: 60,
height: 70,
Padding(
padding: const EdgeInsets.fromLTRB(21, 21, 21, 0),
child: Container(
width: double.infinity,
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Texts(prescriptionReport.itemDescription.isNotEmpty ? prescriptionReport.itemDescription : prescriptionReport.itemDescriptionN ?? ''),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)),
child: Image.network(
prescriptionReport.imageSRCUrl,
fit: BoxFit.cover,
width: 60,
height: 70,
),
),
)
],
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Texts(prescriptionReport.itemDescription.isNotEmpty ? prescriptionReport.itemDescription : prescriptionReport.itemDescriptionN ?? ''),
),
),
)
],
),
),
),
model.pharmacyPrescriptionsList.isNotEmpty == true
? Expanded(
child: ListView.builder(
scrollDirection: Axis.vertical,
padding: EdgeInsets.all(21),
physics: BouncingScrollPhysics(),
itemBuilder: (context, index) => Container(
margin: EdgeInsets.all(12.0),
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
showDialog(
context: context,
builder: (_) => AssetGiffyDialog(
title: Text(
model.pharmacyPrescriptionsList[index].locationDescription,
style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.w600),
),
image: Image.network(
model.pharmacyPrescriptionsList[index].projectImageURL.toString(),
fit: BoxFit.cover,
),
buttonCancelText: Text(TranslationBase.of(context).cancel),
buttonCancelColor: Colors.grey,
onlyCancelButton: true,
),
);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(12),
child: Image.network(
model.pharmacyPrescriptionsList[index].projectImageURL.toString(),
width: 48,
height: 48,
fit: BoxFit.cover,
),
),
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 12, right: 12),
child: Text(
model.pharmacyPrescriptionsList[index].locationDescription?.trim().toString() +
"\n" +
model.pharmacyPrescriptionsList[index].cityName.trim().toString() +
"\n" +
model.pharmacyPrescriptionsList[index].distanceInKilometers.toString() +
" " +
TranslationBase.of(context).km_ ??
"",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
),
), //model.cOCItemList[index].cOCTitl
IconButton(
icon: Icon(
Icons.location_on,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
// setState(() {
MapsLauncher.launchCoordinates(double.parse(model.pharmacyPrescriptionsList[index].latitude), double.parse(model.pharmacyPrescriptionsList[index].longitude),
model.pharmacyPrescriptionsList[index].locationDescription);
// });
},
),
IconButton(
icon: Icon(
Icons.phone,
color: Color(0xff2B353E),
),
constraints: BoxConstraints(),
padding: EdgeInsets.all(8),
tooltip: '',
onPressed: () {
// setState(() {
launch("tel://" + model.pharmacyPrescriptionsList[index].phoneNumber);
// });
},
),
],
),
),
// Container(
// width: double.infinity,
// margin: EdgeInsets.only(top: 10, left: 10, right: 10),
// padding: EdgeInsets.all(8.0),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.all(
// Radius.circular(10.0),
// ),
// border: Border.all(color: Colors.grey[200], width: 0.5),
// ),
// child: Row(
// children: <Widget>[
// ClipRRect(
// borderRadius: BorderRadius.all(Radius.circular(5)),
// child: Image.network(
// model.pharmacyPrescriptionsList[index].projectImageURL,
// fit: BoxFit.cover,
// width: 60,
// height: 70,
// ),
// ),
// Expanded(
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// Texts(model.pharmacyPrescriptionsList[index].locationDescription),
// SizedBox(
// height: 5,
// ),
// Texts(model.pharmacyPrescriptionsList[index].cityName),
// ],
// ),
// ),
// ),
// InkWell(
// onTap: () {
// MapsLauncher.launchCoordinates(double.parse(model.pharmacyPrescriptionsList[index].latitude), double.parse(model.pharmacyPrescriptionsList[index].longitude));
// },
// child: Icon(
// Icons.pin_drop,
// size: 18,
// color: Colors.red[900],
// ),
// ),
// SizedBox(
// width: 15,
// ),
// InkWell(
// onTap: Feedback.wrapForTap(() {
// launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}");
// }, context),
// child: Container(
// child: Icon(
// Icons.call,
// size: 18,
// color: Colors.red[900],
// ),
// ),
// )
// ],
// ),
// ),
itemBuilder: (context, index) {
GetHMGLocationsModel location = GetHMGLocationsModel();
location.locationName = model.pharmacyPrescriptionsList[index].locationDescription;
location.cityName = model.pharmacyPrescriptionsList[index].cityName;
location.phoneNumber = model.pharmacyPrescriptionsList[index].phoneNumber;
location.latitude = model.pharmacyPrescriptionsList[index].latitude;
location.longitude = model.pharmacyPrescriptionsList[index].longitude;
location.distanceInKilometers = model.pharmacyPrescriptionsList[index].distanceInKilometers;
return HospitalLocation(location, showCity: true);
},
itemCount: model.pharmacyPrescriptionsList.length,
),
)

@ -11,14 +11,14 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.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/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import '../../../widgets/dialogs/confirm_send_email_dialog.dart';
import 'PrescriptionIDeliveryAddressPage.dart';
@ -285,8 +285,8 @@ class PrescriptionItemsPage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
myRichText(TranslationBase.of(context).route + ": ", model.prescriptionReportEnhList[index].route, projectViewModel.isArabic),
myRichText(TranslationBase.of(context).dailyDoses + ": ", model.prescriptionReportEnhList[index].doseDailyQuantity.toString(),
MyRichText(TranslationBase.of(context).route + ": ", model.prescriptionReportEnhList[index].route, projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).dailyDoses + ": ", model.prescriptionReportEnhList[index].doseDailyQuantity.toString(),
projectViewModel.isArabic),
mHeight(9),
Text(

@ -9,8 +9,8 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.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/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -27,93 +27,95 @@ class ReportListWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return reportList.length > 0 ? ListView.separated(
physics: BouncingScrollPhysics(),
padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
separatorBuilder: (context, index) => SizedBox(height: 14),
itemBuilder: (context, index) {
Reports report = reportList[index];
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
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: [
if (report.doctorName != null)
Text(
report.doctorName,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
if (report.doctorName != null) SizedBox(height: 6),
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
LargeAvatar(
name: report.doctorName,
url: report.doctorImageURL,
width: 48,
height: 48,
return reportList.length > 0
? ListView.separated(
physics: BouncingScrollPhysics(),
padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
separatorBuilder: (context, index) => SizedBox(height: 14),
itemBuilder: (context, index) {
Reports report = reportList[index];
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
SizedBox(width: 11),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
boxShadow: [
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: [
if (report.doctorName != null)
Text(
report.doctorName,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
if (report.doctorName != null) SizedBox(height: 6),
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (report.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", report.projectName, projectViewModel.isArabic),
if (report.clinicDescription != null) myRichText(TranslationBase.of(context).hospital + ":", report.clinicDescription, projectViewModel.isArabic),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
RatingBar.readOnly(
initialRating: report.actualDoctorRate.toDouble(),
size: 16.0,
filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127),
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
if (reportList[index].status == 2)
IconButton(
icon: Icon(Icons.email),
color: Color(0xff28323A),
constraints: BoxConstraints(),
padding: EdgeInsets.zero,
onPressed: () {
showConfirmMessage(reportList[index]);
})
],
LargeAvatar(
name: report.doctorName,
url: report.doctorImageURL,
width: 48,
height: 48,
),
SizedBox(width: 11),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (report.projectName != null) MyRichText(TranslationBase.of(context).clinic + ":", report.projectName, projectViewModel.isArabic),
if (report.clinicDescription != null) MyRichText(TranslationBase.of(context).hospital + ":", report.clinicDescription, projectViewModel.isArabic),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
RatingBar.readOnly(
initialRating: report.actualDoctorRate.toDouble(),
size: 16.0,
filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127),
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
if (reportList[index].status == 2)
IconButton(
icon: Icon(Icons.email),
color: Color(0xff28323A),
constraints: BoxConstraints(),
padding: EdgeInsets.zero,
onPressed: () {
showConfirmMessage(reportList[index]);
})
],
),
],
),
),
],
),
),
],
],
),
),
],
),
),
);
},
itemCount: reportList.length,
) : getNoDataWidget(context) ;
);
},
itemCount: reportList.length,
)
: getNoDataWidget(context);
}
void showConfirmMessage(Reports report) {

@ -6,9 +6,8 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.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/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -100,8 +99,8 @@ class MedicalReports extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic),
if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic),
if (_appointmenHistory.projectName != null) MyRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic),
if (_appointmenHistory.clinicName != null) MyRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
@ -135,4 +134,4 @@ class MedicalReports extends StatelessWidget {
),
);
}
}
}

@ -1,26 +1,20 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/rate/appointment_details.dart';
import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.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/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart';
import 'package:diplomaticquarterapp/widgets/my_rich_text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
class RateAppointmentClinic extends StatefulWidget {
@ -28,8 +22,7 @@ class RateAppointmentClinic extends StatefulWidget {
final String doctorNote;
final int doctorRate;
RateAppointmentClinic(
{this.appointmentDetails, this.doctorRate, this.doctorNote});
RateAppointmentClinic({this.appointmentDetails, this.doctorRate, this.doctorNote});
@override
_RateAppointmentClinicState createState() => _RateAppointmentClinicState();
@ -61,12 +54,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
),
Text(
TranslationBase.of(context).lastAppointment,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.64,
height: 23 / 16),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
),
SizedBox(
height: 25,
@ -75,8 +63,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
elevation: 0,
shape: cardRadius(10),
child: Padding(
padding: const EdgeInsets.only(
left: 12, right: 12, top: 12, bottom: 12),
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
@ -88,21 +75,11 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
children: [
Text(
model.appointmentDetails.projectName,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.64,
height: 25 / 16),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
Text(
model.appointmentDetails.startTime.toString().substring(0, 5),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff2E303A),
letterSpacing: -0.64,
height: 25 / 16),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
),
],
),
@ -111,11 +88,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
mainAxisSize: MainAxisSize.min,
children: <Widget>[
LargeAvatar(
url:
'https://hmgwebservices.com/Images/Hospitals/' +
model.appointmentDetails.projectID
.toString() +
'.jpg',
url: 'https://hmgwebservices.com/Images/Hospitals/' + model.appointmentDetails.projectID.toString() + '.jpg',
width: 48,
height: 48,
),
@ -125,16 +98,8 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
myRichText(
TranslationBase.of(context).clinic + ":",
model.appointmentDetails.projectName,
projectViewModel.isArabic),
myRichText(
TranslationBase.of(context).date + ":",
DateUtil.getDayMonthYearDateFormatted(
DateUtil.convertStringToDate(model
.appointmentDetails
.appointmentDate)),
MyRichText(TranslationBase.of(context).clinic + ":", model.appointmentDetails.projectName, projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).date + ":", DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(model.appointmentDetails.appointmentDate)),
projectViewModel.isArabic),
],
),
@ -160,12 +125,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
children: [
Text(
TranslationBase.of(context).rateClinic,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.64,
height: 23 / 16),
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
),
SizedBox(
height: 12,
@ -179,21 +139,13 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
duration: Duration(milliseconds: 300),
switchInCurve: Curves.elasticOut,
switchOutCurve: Curves.elasticIn,
transitionBuilder: (Widget child,
Animation<double> animation) {
return ScaleTransition(
child: child, scale: animation);
transitionBuilder: (Widget child, Animation<double> animation) {
return ScaleTransition(child: child, scale: animation);
},
child: rating == (index + 1)
? Container(
margin: EdgeInsets.only(
left: 3.0, right: 3.0),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(100),
border: Border.all(
width: 3,
color: CustomColors.green)),
margin: EdgeInsets.only(left: 3.0, right: 3.0),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(100), border: Border.all(width: 3, color: CustomColors.green)),
key: ValueKey<int>(rating),
child: IconButton(
onPressed: () {
@ -202,10 +154,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
});
},
iconSize: 35,
icon: SvgPicture.asset(
'assets/images/new/appointment-rating/' +
(index + 1).toString() +
'.svg'),
icon: SvgPicture.asset('assets/images/new/appointment-rating/' + (index + 1).toString() + '.svg'),
),
)
: Container(
@ -217,10 +166,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
});
},
iconSize: 35,
icon: SvgPicture.asset(
'assets/images/new/appointment-rating/' +
(index + 1).toString() +
'.svg'),
icon: SvgPicture.asset('assets/images/new/appointment-rating/' + (index + 1).toString() + '.svg'),
),
),
),
@ -270,25 +216,18 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
: () {
model
.sendAppointmentRate(
rating,
widget.appointmentDetails.appointmentNo,
widget.appointmentDetails.projectID,
widget.appointmentDetails.doctorID,
widget.appointmentDetails.clinicID,
note)
rating, widget.appointmentDetails.appointmentNo, widget.appointmentDetails.projectID, widget.appointmentDetails.doctorID, widget.appointmentDetails.clinicID, note)
.then(
(value) => {
model
.sendDoctorRate(
widget.doctorRate,
widget
.appointmentDetails.appointmentNo,
widget.appointmentDetails.appointmentNo,
widget.appointmentDetails.projectID,
widget.appointmentDetails.doctorID,
widget.appointmentDetails.clinicID,
note,
widget.appointmentDetails
.appointmentDate,
widget.appointmentDetails.appointmentDate,
widget.appointmentDetails.doctorName,
widget.appointmentDetails.projectName,
widget.appointmentDetails.clinicName)

@ -127,6 +127,8 @@ class TranslationBase {
String get waitingForDoctor => localizedValues['waitingForDoctor'][locale.languageCode];
String get waitingTime => localizedValues['waitingTime'][locale.languageCode];
String get confirmLater => localizedValues['confirmLater'][locale.languageCode];
String get todoList => localizedValues['todoList'][locale.languageCode];
@ -615,6 +617,8 @@ class TranslationBase {
String get locationa => localizedValues['locationa'][locale.languageCode];
String get callNow => localizedValues['call_now'][locale.languageCode];
String get ambulancerequest => localizedValues['ambulancerequest'][locale.languageCode];
String get requestA => localizedValues['requestA'][locale.languageCode];
@ -825,6 +829,10 @@ class TranslationBase {
String get selectCity => localizedValues['selectCity'][locale.languageCode];
String get city => localizedValues['city'][locale.languageCode];
String get distance => localizedValues['distance'][locale.languageCode];
String get myAccount => localizedValues['MyAccount'][locale.languageCode];
String get otherAccount => localizedValues['OtherAccount'][locale.languageCode];

@ -11,6 +11,8 @@ import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart';
import '../../my_rich_text.dart';
class DoctorCard extends StatelessWidget {
final String name;
final String subName;
@ -164,12 +166,12 @@ class DoctorCard extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
myRichText(isSortByClinic ? TranslationBase.of(context).branch : TranslationBase.of(context).clinic + ":", subName, projectViewModel.isArabic),
MyRichText(isSortByClinic ? TranslationBase.of(context).branch : TranslationBase.of(context).clinic + ":", subName, projectViewModel.isArabic),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (rating == null && billNo != "") myRichText(TranslationBase.of(context).invoiceNo, billNo ?? "", projectViewModel.isArabic),
if (vaccineName != "") myRichText("", vaccineName ?? "", projectViewModel.isArabic),
if (rating == null && billNo != "") MyRichText(TranslationBase.of(context).invoiceNo, billNo ?? "", projectViewModel.isArabic),
if (vaccineName != "") MyRichText("", vaccineName ?? "", projectViewModel.isArabic),
if (rating != null)
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -216,10 +218,12 @@ class DoctorCard extends StatelessWidget {
color: Theme.of(context).primaryColor,
),
)
: onTap != null ? Icon(
Icons.arrow_forward,
color: Theme.of(context).primaryColor,
) : SizedBox(),
: onTap != null
? Icon(
Icons.arrow_forward,
color: Theme.of(context).primaryColor,
)
: SizedBox(),
),
),
],
@ -234,19 +238,3 @@ class DoctorCard extends StatelessWidget {
);
}
}
// todo 'sikander' move this widget to separate file
Widget myRichText(String title, String value, bool isArabic) {
return RichText(
maxLines: 1,
text: TextSpan(
text: title,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10),
children: <TextSpan>[
TextSpan(
text: " $value",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
)
]),
);
}

@ -0,0 +1,108 @@
import 'package:diplomaticquarterapp/core/model/contactus/get_hmg_locations.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import 'my_rich_text.dart';
class HospitalLocation extends StatelessWidget {
final GetHMGLocationsModel location;
final bool showCity;
HospitalLocation(this.location, {Key key, this.showCity = false}) : super(key: key);
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Container(
padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
boxShadow: [
BoxShadow(
color: Color(0xff000000).withOpacity(.05),
//spreadRadius: 5,
blurRadius: 27,
offset: Offset(0, -3),
),
],
color: Colors.white),
child: Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
location.locationName.trim(),
style: TextStyle(fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600, color: Color(0xff2E303A)),
),
SizedBox(height: 10),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(30),
child: Image.network(
location?.projectImageURL?.toString() ?? 'https://hmgwebservices.com/Images/Hospitals/15.jpg',
width: 48,
height: 48,
fit: BoxFit.cover,
),
),
SizedBox(width: 10),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (showCity) MyRichText(TranslationBase.of(context).city + ":", location.cityName?.trim().toString(), projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).distance + ":", location.distanceInKilometers.toString() + " " + TranslationBase.of(context).km_ ?? "", projectViewModel.isArabic),
],
),
)
],
),
],
),
),
Column(
children: [
contactButton(Icons.location_on, TranslationBase.of(context).locationa, () {
MapsLauncher.launchCoordinates(double.parse(location.latitude), double.parse(location.longitude), location.locationName);
}),
SizedBox(height: 10),
contactButton(Icons.call, TranslationBase.of(context).callNow, () {
launch("tel://" + location.phoneNumber);
}),
],
),
],
),
);
}
Widget contactButton(IconData _iconData, String title, VoidCallback callback) {
return SizedBox(
height: 32,
child: FlatButton.icon(
color: Color(0xffF5F5F5),
shape: StadiumBorder(side: BorderSide(color: Color(0xffF0F0F0), width: 1)),
onPressed: callback,
icon: Icon(
_iconData,
size: 12,
color: Color(0xff2E303A),
),
label: Text(
title,
style: TextStyle(fontSize: 12, letterSpacing: -0.48, fontWeight: FontWeight.w600, color: Color(0xff2E303A)),
),
),
);
}
}

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
class MyRichText extends StatelessWidget {
final String title;
final String value;
final bool isArabic;
MyRichText(this.title,this.value,this.isArabic,{Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return RichText(
maxLines: 1,
text: TextSpan(
text: title,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10),
children: <TextSpan>[
TextSpan(
text: " $value",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
)
]),
);
}
}

@ -7,8 +7,8 @@ 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/widgets/avatar/large_avatar.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/my_rich_text.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
@ -68,8 +68,8 @@ class DoctorHeader extends StatelessWidget {
_speciality,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
),
headerModel.invoiceNo.isNotEmpty ? myRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo, projectViewModel.isArabic) : Container(),
myRichText(TranslationBase.of(context).branch, headerModel.projectName, projectViewModel.isArabic),
headerModel.invoiceNo.isNotEmpty ? MyRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo, projectViewModel.isArabic) : Container(),
MyRichText(TranslationBase.of(context).branch, headerModel.projectName, projectViewModel.isArabic),
],
),
),

Loading…
Cancel
Save