Merge branch 'development' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into sultan-patientapp

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -122,6 +122,10 @@ const UPDATE_PRESS_ORDER =
const INSERT_ER_INERT_PRES_ORDER =
'Services/Patients.svc/REST/PatientER_InsertPresOrder';
/// ER RRT
const GET_ALL_RC_TRANSPORTATION = 'rc/api/Transportation/getalltransportation';
const GET_ALL_RRT_QUESTIONS = 'Services/Patients.svc/REST/PatientER_RRT_GetAllQuestions';
///FindUs
const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations';

@ -1268,6 +1268,31 @@ const Map localizedValues = {
"en": "Rapid Response Team",
"ar": "فريق الاستجابة السريع"
},
"AmountBeforeTax": {"en": "Amount Before Tax:", "ar": "Amount Before Tax:"},
"ApproximateServiceFee": {
"en": "Approximate Service Fee",
"ar": "Approximate Service Fee"
},
"TaxAmount": {"en": "Tax Amount:", "ar": "Tax Amount:"},
"TotalAmountPayable": {
"en": "Total Amount Payable:",
"ar": "Total Amount Payable:"
},
"iAcceptTermsConditions": {
"en": "I Accept the Terms And Conditions",
"ar": "You can pay by the following options:"
},
"YouCanPayByTheFollowingOptions": {
"en": "You can pay by the following options:",
"ar": "I Accept the Terms And Conditions"
},
"RRTDDetails": {
"en":
"The RRT service provides medical services urgent and stable cases, not life-threatening situation or extremities and the service includes providing medical care from a copmplete medical team at home",
"ar":
"The RRT service provides medical services urgent and stable cases, not life-threatening situation or extremities and the service includes providing medical care from a copmplete medical team at home"
},
"rrtService": {"en": "RRT Service", "ar": "خدمة RRT"},
"bill-amount": {"en": "Bill Amount", "ar": "مبلغ الفاتورة"},
"transport-method": {"en": "Transportation Method", "ar": "طريقة النقل"},
@ -2031,7 +2056,10 @@ const Map localizedValues = {
"ar": "علاقة الطالب"
},
"newReferral": {"en": "New Referral", "ar": "إحالة جديدة"},
"searchForReferrals": {"en": "Search For Referrals", "ar": "ابحث عن الإحالات"},
"searchForReferrals": {
"en": "Search For Referrals",
"ar": "ابحث عن الإحالات"
},
"covid-select-procedure": {
"en": "Please select the procedure:",
"ar": "الرجاء تحديد الإجراء:"

@ -0,0 +1,48 @@
import 'package:diplomaticquarterapp/core/service/base_service.dart';
import '../base_view_model.dart';
class RRTService extends BaseService{
}
class RRTViewModel extends BaseViewModel{
var _service = RRTService();
Future createRequest(){
return null;
}
Future getAllRequest(){
return null;
}
Future getRequestDetails(){
return null;
}
Future getAllQuestions(){
return null;
}
Future getCancelReasons(){
return null;
}
Future cancelRequest(){
return null;
}
}

@ -125,6 +125,7 @@ import 'core/viewModels/pharmacyModule/product_detail_view_model.dart';
import 'core/viewModels/pharmacyModule/review_view_model.dart';
import 'core/viewModels/pharmacyModule/wishlist_view_model.dart';
import 'core/viewModels/qr_view_model.dart';
import 'core/viewModels/er/rrt-view-model.dart';
import 'core/viewModels/vaccine_view_model.dart';
import 'core/service/vaccine_service.dart';
import 'core/viewModels/weather/weather_view_model.dart';
@ -250,6 +251,7 @@ void setupLocator() {
locator.registerFactory(() => QrViewModel());
locator.registerFactory(() => ReportsMonthlyViewModel());
locator.registerFactory(() => NearHospitalViewModel());
locator.registerFactory(() => RRTViewModel());
locator.registerFactory(() => AmRequestViewModel());
locator.registerFactory(() => PatientSickLeaveViewMode());
locator.registerFactory(() => MyBalanceViewModel());
@ -304,6 +306,7 @@ void setupLocator() {
locator.registerFactory(() => OfferCategoriesViewModel()); // Categories View Model
locator.registerFactory(() => PackagesViewModel()); // Products View Model
//pharmacy
// locator.registerFactory(() => PharmacyCategoriseViewModel());
// locator.registerFactory(() => OffersCategoriseViewModel());

@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-main-screen.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';

@ -1,3 +1,5 @@
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -11,11 +13,16 @@ class RRTLogPage extends StatefulWidget{
class RRTLogPageState extends State<RRTLogPage>{
@override
Widget build(BuildContext context) {
return Center(
child: ListView.builder(
itemCount: 10,
itemBuilder: (ctx, idx) => RRTLogListItem()
)
return BaseView<RRTViewModel>(
onModelReady: (viewModel){
},
builder: (ctx, vm, widget){
return ListView.builder(
itemCount: 10,
itemBuilder: (ctx, idx) => RRTLogListItem()
);
}
);
}
@ -75,7 +82,7 @@ class RRTLogListItem extends StatelessWidget{
);
}
Widget cancelButton()=> MaterialButton(
Widget cancelButton() => MaterialButton(
height: 45,
color: Color(0xFFc5272d),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-logs-page.dart';
import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-request-page.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-logs-page.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-request-page.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -13,7 +14,7 @@ class RRTMainScreenState extends State<RRTMainScreen> with SingleTickerProvider
int currentIndex = 0;
TabController tabController;
PageController pageController = PageController(initialPage: 0);
PageController pageController = PageController(initialPage: 0, keepPage: true);
@override
void initState() {
@ -39,7 +40,7 @@ class RRTMainScreenState extends State<RRTMainScreen> with SingleTickerProvider
}
Widget tabBar() => Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 15),
margin: EdgeInsets.all(15),
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: TabBar(

@ -0,0 +1,92 @@
import 'dart:async';
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class RRTRequestPickupAddressPage extends StatefulWidget{
@override
State<StatefulWidget> createState() => RRTRequestPickupAddressPageState();
}
class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage>{
bool acceptTerms = false;
Completer<GoogleMapController> mapController = Completer();
static final CameraPosition mapCamera = CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
@override
Widget build(BuildContext context) {
return BaseView<RRTViewModel>(
onModelReady: (viewModel){
},
builder: (ctx, vm, widget) => AppScaffold(
appBarTitle: TranslationBase.of(context).pickupLocation,
isShowAppBar: true,
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
selectAddress(),
Expanded(
child: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: mapCamera,
onCameraIdle: (){
},
onMapCreated: (controller){
mapController.complete(controller);
},
)
),
continueButton()
],
)
)
);
}
Widget selectAddress(){
return Container(
margin: EdgeInsets.all(15),
child: Expanded(
child: MaterialButton(
height: 50,
color: Colors.white,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
onPressed: () { },
child: Row(
children: [
Text(TranslationBase.of(context).selectAddress, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
Spacer(),
Icon(Icons.keyboard_arrow_down, size: 15, color: Colors.grey,)
],
),
),
),
);
}
Widget continueButton(){
return Padding(
padding: const EdgeInsets.all(15),
child: MaterialButton(
height: 50,
color: Theme.of(context).appBarTheme.color,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
onPressed: () { },
child: Text(TranslationBase.of(context).continues, style: TextStyle(color: Colors.white, fontSize: 15, letterSpacing: 1),),
),
);
}
}

@ -0,0 +1,176 @@
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class RRTRequestPage extends StatefulWidget{
@override
State<StatefulWidget> createState() => RRTRequestPageState();
}
class RRTRequestPageState extends State<RRTRequestPage>{
bool acceptTerms = false;
@override
Widget build(BuildContext context) {
return BaseView<RRTViewModel>(
onModelReady: (viewModel){
},
builder: (ctx, vm, widget) => Column(
children: [
Expanded(
child: ListView(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
children: [
serviceDescription(context),
SizedBox(height: 20),
priceTable(context),
acceptPolicy(),
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),// Seperator
Container(
padding: EdgeInsets.only(top: 20, bottom: 5),
alignment: Alignment.center,
child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: FontWeight.w500), maxLines: 2)
),
paymentOptions(),
],
),
),
actionButtons()
],
)
);
}
Widget serviceDescription(BuildContext context) =>
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text(
TranslationBase.of(context).RRTDDetails,
textAlign: TextAlign.justify,
style: TextStyle(color: Theme.of(context).appBarTheme.color, fontSize: 15, height: 1.5, fontWeight: FontWeight.w300),
),
);
Widget priceTable(BuildContext context){
var radius = Radius.circular(8);
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
height: 30,
decoration: BoxDecoration(color: Theme.of(context).appBarTheme.color, borderRadius: BorderRadius.only(topLeft: radius, topRight: radius)),
child: Center(child: Text(TranslationBase.of(context).ApproximateServiceFee, style: TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500, letterSpacing: 1))),
),
pricingRow(label: TranslationBase.of(context).AmountBeforeTax, value: '500 SAR'),
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
pricingRow(label: TranslationBase.of(context).TaxAmount, value: '50 SAR'),
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
pricingRow(label: TranslationBase.of(context).TotalAmountPayable, value: '550 SAR', labelBold: true),
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
],
);
}
Widget pricingRow({@required String label, @required String value, bool labelBold = false, bool valueBold = false}){
return
Container(
height: 40, margin: EdgeInsets.symmetric(horizontal: 10),
child: Row(
children: [
Text(label, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: labelBold ? FontWeight.bold : FontWeight.normal)),
Spacer(),
Container(height: 40, color: Theme.of(context).appBarTheme.color, width: 0.5,),
Container(
alignment: Alignment.center,
width: MediaQuery.of(context).size.width * 0.25,
child: Text(value, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: valueBold ? FontWeight.bold : FontWeight.normal))
),
],
),
);
}
Widget acceptPolicy(){
return Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: Row(
children: [
Checkbox(value: acceptTerms, onChanged: (v){
setState(() => acceptTerms = v);
}),
SizedBox(width: 10),
Expanded(
child: Text(TranslationBase.of(context).iAcceptTermsConditions, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color), maxLines: 2)
),
Container(
alignment: Alignment.center,
width: MediaQuery.of(context).size.width * 0.25,
child: TextButton(
child: Text(TranslationBase.of(context).clickHere, style: TextStyle(fontSize: 12, color: Colors.blue, fontWeight: FontWeight.w400)),
onPressed: (){
}
),
)
],
),
);
}
Widget paymentOptions()=> Container(
height: 30,
alignment: Alignment.center,
child: Image.asset("assets/payment_options/payment_options.png", fit: BoxFit.fill,)
);
Widget actionButtons(){
return Container(
margin: EdgeInsets.all(15),
child: Row(
children: [
Expanded(
child: MaterialButton(
height: 50,
color: Theme.of(context).appBarTheme.color,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
onPressed: () { },
child: Text(TranslationBase.of(context).cancel, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
),
),
SizedBox(width: 20,),
Expanded(
child: MaterialButton(
height: 50,
color: Theme.of(context).appBarTheme.color,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
child: Text(TranslationBase.of(context).ok, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
onPressed: () {
Navigator.push(
context,
FadePage(
page: RRTRequestPickupAddressPage()));
},
),
)
],
),
);
}
}

@ -158,19 +158,13 @@ class CurvedChartBloodPressure extends StatelessWidget {
),
leftTitles: SideTitles(
showTitles: true,
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
getTextStyles: (value) => const TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
if (value.toInt() == 0)
return '${value.toInt()}';
else if (value.toInt() % horizontalInterval == 0)
return '${value.toInt()}';
else
return '';
},
margin: 12,
),
),

@ -80,7 +80,6 @@ class LineChartCurved extends StatelessWidget {
}
}
}
LineChartData sampleData1(context) {
return LineChartData(
lineTouchData: LineTouchData(
@ -122,26 +121,13 @@ class LineChartCurved extends StatelessWidget {
),
leftTitles: SideTitles(
showTitles: true,
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
getTextStyles: (value) => const TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
// if (value.toInt() == 0)
// return '${value.toInt()}';
// else if (value.toInt() % horizontalInterval == 0)
// return '${value.toInt()}';
// else
// return '';
// if (value.toInt() == 0)
// return '${value.toInt()}';
// else if (value.toInt() % horizontalInterval == 0)
// return '${value.toInt()}';
// else
return '${value.toInt()}';//'${(value.toInt() +(horizontalInterval - value.toInt() % horizontalInterval) )}';
},
margin: 12,
),
),
@ -166,7 +152,7 @@ class LineChartCurved extends StatelessWidget {
minX: 0,
maxX: (timeSeries.length - 1).toDouble(),
maxY: getMaxY() + 0.3,
minY: getMinY(),
minY: 0,//getMinY(),
lineBarsData: getData(context),
);
}

@ -137,19 +137,21 @@ class MonthCurvedChartBloodPressure extends StatelessWidget {
),
leftTitles: SideTitles(
showTitles: true,
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
getTextStyles: (value) => const TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
// if (value.toInt() == 0)
// return '${value.toInt()}';
// else if (value.toInt() % horizontalInterval == 0)
// return '${value.toInt()}';
// else
return '${value.toInt()}';
},
// getTitles: (value) {
// // if (value.toInt() == 0)
// // return '${value.toInt()}';
// // else if (value.toInt() % horizontalInterval == 0)
// // return '${value.toInt()}';
// // else
// return '${value.toInt()}';
// },
margin: 12,
),
),

@ -111,14 +111,16 @@ class MonthLineChartCurved extends StatelessWidget {
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
if (value.toInt() == 0)
return '${value.toInt()}';
else if (value.toInt() % horizontalInterval == 0)
return '${value.toInt()}';
else
return '';
},
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
// getTitles: (value) {
// if (value.toInt() == 0)
// return '${value.toInt()}';
// else if (value.toInt() % horizontalInterval == 0)
// return '${value.toInt()}';
// else
// return '';
// },
margin: 12,
),
),

@ -134,21 +134,8 @@ class LineChartCurved extends StatelessWidget {
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
if (timeSeries.length < 15) {
return '${value.toInt()}';
} else {
if (value == minY)
return '${value.toInt()}';
if (value == getMaxY())
return '${value.toInt()}';
//if (yAxixs.contains(value)) {
return '${value.toInt()}';
return '';
}
return '${value.toInt()}';
},
interval:getMaxY() - getMinY() <=500?getMaxY() - getMinY() <=50?10:50:getMaxY() - getMinY() <=1000?100:getMaxY() - getMinY()>=10000?5000:200,
margin: 12,
),
),

@ -151,9 +151,8 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
fontWeight: FontWeight.bold,
fontSize: 10,
),
getTitles: (value) {
return '${value.toInt()}';
},
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
margin: 12,
),
),

@ -1,47 +0,0 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class RRTRequestPage extends StatefulWidget{
@override
State<StatefulWidget> createState() => RRTRequestPageState();
}
class RRTRequestPageState extends State<RRTRequestPage>{
@override
Widget build(BuildContext context) {
return ListView(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
children: [
serviceDescription(context),
SizedBox(height: 20),
priceTable(context),
],
);
}
Widget serviceDescription(BuildContext context) =>
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text(
"The RRT service provides medical services urgent and stable cases, not life-threatening situation or extremities and the service includes providing medical care from a copmplete medical team at home",
textAlign: TextAlign.justify,
style: TextStyle(color: Theme.of(context).appBarTheme.color, fontSize: 15, height: 1.5, fontWeight: FontWeight.w300),
),
);
Widget priceTable(BuildContext context){
var radius = Radius.circular(8);
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
height: 30,
decoration: BoxDecoration(color: Theme.of(context).appBarTheme.color, borderRadius: BorderRadius.only(topLeft: radius, topRight: radius)),
child: Center(child: Text("Approximate Service Fee", style: TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500, letterSpacing: 1))),
)
],
);
}
}

@ -1165,6 +1165,18 @@ class TranslationBase {
String get RRTSummary => localizedValues['RRT-Summary'][locale.languageCode];
String get RapidResponseTeam =>
localizedValues['Rapid-Response-Team'][locale.languageCode];
String get RRTDDetails => localizedValues['RRTDDetails'][locale.languageCode];
String get ApproximateServiceFee =>
localizedValues['ApproximateServiceFee'][locale.languageCode];
String get AmountBeforeTax =>
localizedValues['AmountBeforeTax'][locale.languageCode];
String get TaxAmount => localizedValues['TaxAmount'][locale.languageCode];
String get TotalAmountPayable =>
localizedValues['TotalAmountPayable'][locale.languageCode];
String get iAcceptTermsConditions =>
localizedValues['iAcceptTermsConditions'][locale.languageCode];
String get YouCanPayByTheFollowingOptions =>
localizedValues['YouCanPayByTheFollowingOptions'][locale.languageCode];
String get rrtService => localizedValues['rrtService'][locale.languageCode];
String get billAmount => localizedValues['bill-amount'][locale.languageCode];
String get transportMethod =>
@ -1626,7 +1638,8 @@ class TranslationBase {
String get insuranceID =>
localizedValues["insurance-id"][locale.languageCode];
String get enterFile => localizedValues["enter-file"][locale.languageCode];
String get feedbackType => localizedValues["feedback-type"][locale.languageCode];
String get feedbackType =>
localizedValues["feedback-type"][locale.languageCode];
String get allow => localizedValues["allow"][locale.languageCode];
String get reject => localizedValues["reject"][locale.languageCode];

@ -224,6 +224,7 @@ flutter:
- assets/images/pharmacy_module/payment/
- assets/images/pharmacy_module/lakum/
- assets/images/nfc/
- assets/payment_options/
fonts:

Loading…
Cancel
Save