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

merge-requests/305/head
Sultan Khan 4 years ago
commit 0245875358

@ -509,6 +509,8 @@ const LAKUM_GET_USER_TERMS_AND_CONDITIONS =
"Services/ERP.svc/REST/GetUserTermsAndConditionsForEPharmcy";
const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList';
const GET_RECOMMENDED_PRODUCT = 'alsoProduct/';
const GET_MOST_VIEWED_PRODUCTS ="mostview?";
const GET_NEW_PRODUCTS = "newproducts?";
// Home Health Care
const HHC_GET_ALL_SERVICES =

@ -19,6 +19,7 @@ import 'package:provider/provider.dart';
import '../../../locator.dart';
import '../../../routes.dart';
import '../AuthenticatedUserObject.dart';
import 'dart:io' show Platform;
AppSharedPreferences sharedPref = new AppSharedPreferences();
@ -86,7 +87,7 @@ class BaseAppClient {
: IS_DENTAL_ALLOWED_BACKEND;
}
body['DeviceTypeID'] = DeviceTypeID;
body['DeviceTypeID'] = Platform.isAndroid ? 1: 2;
if (!body.containsKey('IsPublicRequest')) {
body['PatientType'] = body.containsKey('PatientType')
@ -277,7 +278,8 @@ class BaseAppClient {
: IS_DENTAL_ALLOWED_BACKEND;
}
body['DeviceTypeID'] = DeviceTypeID;
body['DeviceTypeID'] = Platform.isAndroid ? 1: 2;
if (!body.containsKey('IsPublicRequest')) {
body['PatientType'] = body.containsKey('PatientType')
@ -731,7 +733,7 @@ class BaseAppClient {
: IS_DENTAL_ALLOWED_BACKEND;
}
body['DeviceTypeID'] = DeviceTypeID;
body['DeviceTypeID'] = Platform.isAndroid ? 1: 2;
if (!body.containsKey('IsPublicRequest')) {
body['PatientType'] = body.containsKey('PatientType')

@ -316,4 +316,50 @@ class PharmacyCategoriseService extends BaseService {
},
);
}
Future getMostViewedProducts() async {
Map<String, String> queryParams = {
'fields':
'id,discount_ids,name,reviews,namen,localized_names,display_order,short_description,full_description,full_descriptionn,sku,order_minimum_quantity,order_maximum_quantity,price,old_price,images,is_rx,rx_message,rx_messagen,discount_name,discount_namen,approved_rating_sum,approved_total_reviews,allow_back_in_stock_subscriptions,stock_quantity,stock_availability,stock_availabilityn,discount_percentage',
};
try {
await baseAppClient.getPharmacy(GET_MOST_VIEWED_PRODUCTS,
onSuccess: (dynamic response, int statusCode) {
_finalProducts.clear();
response['products'].forEach((item) {
_finalProducts.add(PharmacyProduct.fromJson(item));
});
print("most viewed products ---------");
print(response);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, queryParams: queryParams);
} catch (error) {
throw error;
}
}
Future getNewProducts() async {
Map<String, String> queryParams = {
'fields':
'Id,name,namen,localized_names,price,images,sku,stock_availability,published',
};
try {
await baseAppClient.getPharmacy(GET_NEW_PRODUCTS,
onSuccess: (dynamic response, int statusCode) {
_finalProducts.clear();
response['products'].forEach((item) {
_finalProducts.add(PharmacyProduct.fromJson(item));
});
print("new products ---------");
print(response);
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, queryParams: queryParams);
} catch (error) {
throw error;
}
}
}

@ -203,4 +203,26 @@ class PharmacyCategoriseViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
}
Future getMostViewedProducts() async {
setState(ViewState.Busy);
await _pharmacyCategoriseService.getMostViewedProducts();
if (_pharmacyCategoriseService.hasError) {
error = _pharmacyCategoriseService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
Future getNewProducts() async {
setState(ViewState.Busy);
await _pharmacyCategoriseService.getNewProducts();
if (_pharmacyCategoriseService.hasError) {
error = _pharmacyCategoriseService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
}

@ -1,110 +0,0 @@
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/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:hexcolor/hexcolor.dart';
import 'advance_payment_page.dart';
import 'blood_donation.dart';
class MyBalancePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BaseView<MyBalanceViewModel>(
onModelReady: (model) => model.getPatientAdvanceBalanceAmount(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).myBalances,
body: Container(
margin: EdgeInsets.all(12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
TranslationBase.of(context).balanceAmount,
color: Colors.black,
bold: true,
),
SizedBox(
height: 15,
),
Container(
padding: EdgeInsets.all(8),
width: double.infinity,
height: 65,
decoration: BoxDecoration(
color: HexColor('#B61422'),
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(
TranslationBase.of(context).totalBalance,
color: Theme.of(context).primaryColor,
),
Texts(
'${model.totalAdvanceBalanceAmount ?? 0} SAR',
color: Theme.of(context).primaryColor,
bold: true,
),
],
),
),
SizedBox(
height: 9,
),
...List.generate(
model.patientAdvanceBalanceAmountList.length,
(index) => Container(
padding: EdgeInsets.all(8),
height: 65,
margin: EdgeInsets.only(top: 8),
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(model.patientAdvanceBalanceAmountList[index]
.projectDescription),
Texts(
'${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} SAR',
bold: true,
),
],
),
),
),
],
),
),
bottomSheet: Container(
height: MediaQuery.of(context).size.height * 0.1,
width: double.infinity,
padding: EdgeInsets.all(12),
child: SecondaryButton(
// color: Colors.grey[900],
textColor: Colors.white,
label: TranslationBase.of(context).createAdvancedPayment,
onTap: () {
Navigator.push(
context,
//FadePage(page: AdvancePaymentPage()));
FadePage(page: BloodDonationPage()));
},
),
),
),
);
}
}

@ -107,7 +107,7 @@ class _HospitalsPageState extends State<HospitalsPage> {
bottom: 1),
child: Texts(
'${widget.findusHospitalModelList[index].locationName}',
textAlign: TextAlign.center,
textAlign: TextAlign.start,
))), //model.cOCItemList[index].cOCTitl
Expanded(
flex: 2,
@ -116,7 +116,12 @@ class _HospitalsPageState extends State<HospitalsPage> {
CrossAxisAlignment.center,
children: [
IconButton(
icon: Icon(Icons.location_on,color: Theme.of(context).primaryColor,size: 35,),
icon: Icon(
Icons.location_on,
color: Theme.of(context)
.primaryColor,
size: 35,
),
// icon: new Image.asset(
// 'assets/images/new-design/navigate.png'),
tooltip: '',
@ -139,7 +144,12 @@ class _HospitalsPageState extends State<HospitalsPage> {
},
),
IconButton(
icon: Icon(Icons.phone,color: Theme.of(context).primaryColor,size: 35,),
icon: Icon(
Icons.phone,
color: Theme.of(context)
.primaryColor,
size: 35,
),
// icon: new Image.asset(
// 'assets/images/new-design/call.png'),
tooltip: '',

@ -124,7 +124,7 @@ class _AmbulanceRequestIndexPageState extends State<AmbulanceRequestIndexPage> {
: Column(
children: [
SizedBox(
height: 80,
height: 20,
),
Container(
margin: EdgeInsets.only(left: 12, right: 12),

@ -210,71 +210,77 @@ class _SelectTransportationMethodState
SizedBox(
height: 5,
),
Row(
children: [
Expanded(
child: InkWell(
onTap: () {
setState(() {
_way = Way.OneWay;
});
},
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(8),
border:
Border.all(color: Colors.grey, width: 0.5),
color: Colors.white,
),
child: ListTile(
title:
Texts(TranslationBase.of(context).oneDirec),
leading: Radio(
value: Way.OneWay,
groupValue: _way,
onChanged: (value) {
setState(() {
_way = value;
});
},
Container(
margin: EdgeInsets.only(bottom:65 ),
child: Row(
children: [
Expanded(
child: InkWell(
onTap: () {
setState(() {
_way = Way.OneWay;
});
},
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(8),
border:
Border.all(color: Colors.grey, width: 0.5),
color: Colors.white,
),
child: ListTile(
title:
Texts(TranslationBase.of(context).oneDirec),
leading: Radio(
value: Way.OneWay,
groupValue: _way,
onChanged: (value) {
setState(() {
_way = value;
});
},
),
),
),
),
),
),
Expanded(
child: InkWell(
onTap: () {
setState(() {
_way = Way.TwoWays;
});
},
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(8),
border:
Border.all(color: Colors.grey, width: 0.5),
color: Colors.white,
),
child: ListTile(
title:
Texts(TranslationBase.of(context).twoDirec),
leading: Radio(
value: Way.TwoWays,
groupValue: _way,
onChanged: (value) {
setState(() {
_way = value;
});
},
Expanded(
child: InkWell(
onTap: () {
setState(() {
_way = Way.TwoWays;
});
},
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(8),
border:
Border.all(color: Colors.grey, width: 0.5),
color: Colors.white,
),
child: ListTile(
title:
Texts(TranslationBase.of(context).twoDirec),
leading: Radio(
value: Way.TwoWays,
groupValue: _way,
onChanged: (value) {
setState(() {
_way = value;
});
},
),
),
),
),
),
),
],
],
),
),
SizedBox(
height: 30,
),
],
),

@ -73,6 +73,7 @@ class _SummaryState extends State<Summary> {
Texts(TranslationBase.of(context).billAmount,textAlign: TextAlign.start,),
SizedBox(height: 5,),
Container(
height: 55,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
@ -87,8 +88,8 @@ class _SummaryState extends State<Summary> {
],
),
),
SizedBox(height: 250),
SizedBox(height: 45,),
],
),

@ -41,6 +41,10 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
model.getManufacturerProducts(id);
} else if (widget.productType == 3) {
model.getLastVisitedProducts();
} else if (widget.productType == 4){
model.getMostViewedProducts();
} else if (widget.productType == 5){
model.getNewProducts();
} else {
model.getBestSellerProducts();
}

@ -94,7 +94,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).primaryColor),
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -125,7 +125,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).primaryColor),
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -168,7 +168,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).primaryColor),
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -189,7 +189,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
height: 65,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).primaryColor),
color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [

@ -158,7 +158,7 @@ class _NewTextFieldsState extends State<NewTextFields> {
duration: Duration(milliseconds: 300),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).primaryColor),
color: Colors.white),
child: Container(
margin: EdgeInsets.only(top: 8),
child: TextFormField(

@ -37,54 +37,56 @@ class _PharmacyCategorisePageState extends State<PharmacyCategorisePage> {
baseViewModel: model,
body: Column(
children: [
Container(
height: 400,
margin: EdgeInsets.only(bottom: 22),
child: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 0.5,
mainAxisSpacing: 1.0,
childAspectRatio: 3.2,
),
itemCount: model.categorise.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.all(4.0),
child: InkWell(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: Colors.grey.withOpacity(0.24),
),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? model.categorise[index].namen
: model.categorise[index].name,
fontWeight: FontWeight.w600,
Expanded(
child: Container(
height: 400,
margin: EdgeInsets.only(bottom: 22),
child: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 0.5,
mainAxisSpacing: 1.0,
childAspectRatio: 3.2,
),
itemCount: model.categorise.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.all(4.0),
child: InkWell(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: Colors.grey.withOpacity(0.24),
),
),
),
onTap: () => {
Navigator.push(
context,
FadePage(
page: model.categorise[index].id != '12'
? ParentCategorisePage(
id: model.categorise[index].id,
titleName: model.categorise[index].name,
)
: FinalProductsPage(
id: model.categorise[index].id,
),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? model.categorise[index].namen
: model.categorise[index].name,
fontWeight: FontWeight.w600,
),
),
),
},
),
);
},
onTap: () => {
Navigator.push(
context,
FadePage(
page: model.categorise[index].id != '12'
? ParentCategorisePage(
id: model.categorise[index].id,
titleName: model.categorise[index].name,
)
: FinalProductsPage(
id: model.categorise[index].id,
),
),
),
},
),
);
},
),
),
),
Container(
@ -110,7 +112,7 @@ class _PharmacyCategorisePageState extends State<PharmacyCategorisePage> {
FadePage(
page: FinalProductsPage(
id: "",
productType: 4,
productType: 6,
),
),
);
@ -140,21 +142,35 @@ class _PharmacyCategorisePageState extends State<PharmacyCategorisePage> {
Expanded(
child: Padding(
padding: EdgeInsets.all(4.0),
child: Container(
height: 50.0,
width: 55.0,
decoration: BoxDecoration(
color: Colors.orangeAccent.shade200
.withOpacity(0.34),
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? 'الاكثر مشاهدة'
: 'Most Viewed',
fontWeight: FontWeight.w600,
child: InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: FinalProductsPage(
id: "",
productType: 4,
),
),
);
},
child: Container(
height: 50.0,
width: 55.0,
decoration: BoxDecoration(
color: Colors.orangeAccent.shade200
.withOpacity(0.34),
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? 'الاكثر مشاهدة'
: 'Most Viewed',
fontWeight: FontWeight.w600,
),
),
),
),
@ -167,20 +183,34 @@ class _PharmacyCategorisePageState extends State<PharmacyCategorisePage> {
Expanded(
child: Padding(
padding: EdgeInsets.all(4.0),
child: Container(
height: 50.0,
width: 55.0,
decoration: BoxDecoration(
color: Colors.blue.shade200.withOpacity(0.34),
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? 'منتجات جديدة'
: 'New Products',
fontWeight: FontWeight.w600,
child: InkWell(
onTap: () {
Navigator.push(
context,
FadePage(
page: FinalProductsPage(
id: "",
productType: 5,
),
),
);
},
child: Container(
height: 50.0,
width: 55.0,
decoration: BoxDecoration(
color: Colors.blue.shade200.withOpacity(0.34),
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: 10.0),
child: Texts(
projectViewModel.isArabic
? 'منتجات جديدة'
: 'New Products',
fontWeight: FontWeight.w600,
),
),
),
),

@ -8,7 +8,6 @@ import 'package:connectivity/connectivity.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/Blood/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_card_screen.dart';
@ -16,6 +15,7 @@ import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dar
import 'package:diplomaticquarterapp/pages/medical/active_medications/ActiveMedicationsPage.dart';
import 'package:diplomaticquarterapp/pages/medical/allergies_page.dart';
import 'package:diplomaticquarterapp/pages/medical/ask_doctor/ask_doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/eye/EyeMeasurementsPage.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';

@ -23,18 +23,21 @@ class FlowChartPage extends StatelessWidget {
appBarTitle: filterName,
baseViewModel: model,
body: SingleChildScrollView(
child: model.labOrdersResultsList.isNotEmpty
child: model. labOrdersResultsList.isNotEmpty
? Container(
child: LabResultChartAndDetails(
name: filterName,
labResult: model.labOrdersResultsList,
),
)
: Container(
child: Center(
child: Texts('no Data'),
: Center(
child: Container(
padding: EdgeInsets.only(top: MediaQuery.of(context).size.height *0.42),
child: Center(
child: Texts('No Data'),
),
),
),
),
),
),
);

@ -17,7 +17,6 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/my_web_view.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.dart';
import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart';
import 'package:diplomaticquarterapp/pages/Blood/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/DoctorProfile.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
@ -35,6 +34,7 @@ import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/pages/login/welcome.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/advance_payment_page.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';

Loading…
Cancel
Save