Conflicts:
	lib/config/config.dart
	lib/pages/landing/home_page.dart
	lib/pages/landing/landing_page.dart
merge-requests/224/merge
Mohammad Aljammal 4 years ago
commit a556e8c1f8

Binary file not shown.

@ -0,0 +1,9 @@
{\rtf1\ansi\ansicpg1252\cocoartf2513
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs24 \cf0 keyPassword=HmGsa123\
storePassword=HmGsa123}

@ -3,5 +3,6 @@
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

@ -4,4 +4,5 @@
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>

@ -0,0 +1,4 @@
storePassword=HmGsa123
keyPassword=HmGsa123
keyAlias=DQKey
storeFile=DQKey.jks

@ -7,7 +7,7 @@ import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
const MAX_SMALL_SCREEN = 660;
const BASE_URL = 'https://uat.hmgwebservices.com/';
const BASE_URL = 'https://uat.hmgwebservices.com/';
// const BASE_URL = 'https://hmgwebservices.com/';
const GET_PROJECT = 'Services/Lists.svc/REST/GetProject';
@ -244,8 +244,8 @@ const LANGUAGE = 2;
const PATIENT_OUT_SA = 0;
const SESSION_ID = 'TMRhVmkGhOsvamErw';
const IS_DENTAL_ALLOWED_BACKEND = false;
const PATIENT_TYPE = 2;
const PATIENT_TYPE_ID = 2;
const PATIENT_TYPE = 1;
const PATIENT_TYPE_ID = 1;
var DEVICE_TOKEN = "";
var DeviceTypeID = Platform.isIOS ? 1 : 2;
const LANGUAGE_ID = 2;

@ -1032,4 +1032,41 @@ const Map localizedValues = {
"searchItemError": {"en": "Item name should be more than 3 character ", "ar": "يجب أن يكون اسم العنصر أكثر من 3 أحرف"},
"YouCanFind": {"en": "YouCanFind", "ar": "باستطاعتك العثور على "},
"ItemInSearch": {"en": " Item In Search", "ar": " عنصر في البحث "},
"InvoiceNo": {"en": " Invoice No", "ar": "رقم الفاتورة"},
"SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"},
"GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"},
"show-more-btn": {
"en": "Flow Chart",
"ar": "النتائج التراكمية"
},
"value": {
"en": "Value",
"ar": "القيمة"
},
"range": {
"en": "Range",
"ar": "المدى"
},
"out-patient": {
"en": "Out Patient",
"ar": "عيادات خارجية"
},
"in-patient": {
"en": "In Patient",
"ar": "تنويم"
},
"report": {
"en": "Radiology Report",
"ar": "تقرير الاشعة"
},
"open-rad": {
"en": "Open Image",
"ar": "فتح صور الاشعة"
},
"send-copy": {
"en": "Email the Report",
"ar": "أرسل التقرير"
},
};

@ -82,7 +82,7 @@ class RequestPrescriptionReport {
data['EpisodeID'] = this.episodeID;
data['ClinicID'] = this.clinicID;
data['ProjectID'] = this.projectID;
data['DischargeNo'] = this.dischargeNo;
// data['DischargeNo'] = this.dischargeNo;
return data;
}
}

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
@ -23,6 +24,7 @@ AppSharedPreferences sharedPref = new AppSharedPreferences();
///
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
VitalSignService _vitalSignService = locator<VitalSignService>();
class BaseAppClient {
post(String endPoint,
@ -35,7 +37,7 @@ class BaseAppClient {
//Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
String token = await sharedPref.getString(TOKEN);
var languageID =
await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar');
await sharedPref.getString(APP_LANGUAGE);
var user = await sharedPref.getObject(USER_PROFILE);
if (body.containsKey('SetupID')) {
body['SetupID'] = body.containsKey('SetupID')
@ -87,8 +89,8 @@ class BaseAppClient {
body['PatientTypeID'] = body.containsKey('PatientTypeID')
? body['PatientTypeID'] != null
? body['PatientTypeID']
: user['PatientTypeID'] != null
? user['PatientTypeID']
:user['PatientType'] != null
? user['PatientType']
: PATIENT_TYPE_ID
: PATIENT_TYPE_ID;
if (user != null) {
@ -196,6 +198,8 @@ class BaseAppClient {
await sharedPref.remove(LOGIN_TOKEN_ID);
await authenticatedUserObject.getUser();
Provider.of<ProjectViewModel>(AppGlobal.context, listen: false).isLogin = false;
_vitalSignService.weightKg ="";
_vitalSignService.heightCm="";
Navigator.of(AppGlobal.context).pushReplacementNamed(HOME);
}

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart';
@ -24,7 +22,8 @@ class MyBalanceService extends BaseService {
String logInTokenID;
String verificationCode;
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
getPatientAdvanceBalanceAmount() async {
hasError = false;
@ -61,13 +60,14 @@ class MyBalanceService extends BaseService {
}, body: body);
}
getPatientInfoByPatientIDAndMobileNumber() async {
getPatientInfoByPatientIDAndMobileNumber(AdvanceModel advanceModel) async {
hasError = false;
super.error = "";
Map<String, dynamic> body = Map();
body['isDentalAllowedBackend'] = false;
body['MobileNo'] = authenticatedUserObject.user.mobileNumber;
body['ProjectID'] = authenticatedUserObject.user.projectID;
body['MobileNo'] = advanceModel.mobileNumber;
body['ProjectID'] = advanceModel.hospitalsModel.iD;
body['PatientID'] = advanceModel.fileNumber;
await baseAppClient.post(GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER,
onSuccess: (response, statusCode) async {
@ -81,7 +81,7 @@ class MyBalanceService extends BaseService {
}, body: body);
}
sendActivationCodeForAdvancePayment({int patientID,int projectID}) async {
sendActivationCodeForAdvancePayment({int patientID, int projectID}) async {
hasError = false;
super.error = "";
Map<String, dynamic> body = Map();
@ -111,9 +111,8 @@ class MyBalanceService extends BaseService {
body['LogInTokenID'] = logInTokenID;
await baseAppClient.post(CHECK_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT,
onSuccess: (response, statusCode) async {
}, onFailure: (String error, int statusCode) {
onSuccess: (response, statusCode) async {},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
super.error = error;

@ -57,20 +57,30 @@ class PrescriptionsService extends BaseService {
List<PrescriptionReport> prescriptionReportList = List();
Future getPrescriptionReport(
{int dischargeNo, int projectId, int clinicID, String setupID,int episodeID}) async {
{Prescriptions prescriptions}) async {
hasError = false;
_requestPrescriptionReport.dischargeNo = dischargeNo;
_requestPrescriptionReport.projectID = projectId;
_requestPrescriptionReport.clinicID = clinicID;
_requestPrescriptionReport.setupID = setupID;
_requestPrescriptionReport.episodeID = episodeID;
await baseAppClient.post(GET_PRESCRIPTION_REPORT,
_requestPrescriptionReport.dischargeNo = prescriptions.dischargeNo;
_requestPrescriptionReport.projectID = prescriptions.projectID;
_requestPrescriptionReport.clinicID = prescriptions.clinicID;
_requestPrescriptionReport.setupID = prescriptions.setupID;
_requestPrescriptionReport.episodeID = prescriptions.episodeID;
_requestPrescriptionReport.appointmentNo = prescriptions.appointmentNo;
await baseAppClient.post(prescriptions.isInOutPatient? GET_PRESCRIPTION_REPORT_ENH : GET_PRESCRIPTION_REPORT,
onSuccess: (dynamic response, int statusCode) {
prescriptionReportList.clear();
response['INP_GetPrescriptionReport_List'].forEach((prescriptions) {
prescriptionReportList.add(PrescriptionReport.fromJson(prescriptions));
});
prescriptionReportEnhList.clear();
if(prescriptions.isInOutPatient){
response['ListPRM'].forEach((prescriptions) {
prescriptionReportEnhList.add(PrescriptionReportEnh.fromJson(prescriptions));
});
}else{
response['INP_GetPrescriptionReport_List'].forEach((prescriptions) {
prescriptionReportList.add(PrescriptionReport.fromJson(prescriptions));
});
}
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;

@ -112,10 +112,10 @@ class MyBalanceViewModel extends BaseViewModel {
}
}
Future getPatientInfoByPatientIDAndMobileNumber() async {
Future getPatientInfoByPatientIDAndMobileNumber(AdvanceModel advanceModel) async {
setState(ViewState.Busy);
await _myBalanceService
.getPatientInfoByPatientIDAndMobileNumber();
.getPatientInfoByPatientIDAndMobileNumber(advanceModel);
if (_myBalanceService.hasError) {
error = _myBalanceService.error;
setState(ViewState.ErrorLocal);
@ -154,7 +154,7 @@ class MyBalanceViewModel extends BaseViewModel {
Future getFamilyFiles() async {
setState(ViewState.Busy);
await _myBalanceService.getFamilyFiles();
await _myBalanceService.getSharedRecordByStatus();
if (_myBalanceService.hasError) {
error = _myBalanceService.error;
setState(ViewState.ErrorLocal);

@ -103,9 +103,9 @@ class PrescriptionsViewModel extends BaseViewModel {
notifyListeners();
}
getPrescriptionReport({int dischargeNo,int projectId,int clinicID,String setupID,int episodeID}) async {
getPrescriptionReport({Prescriptions prescriptions}) async {
setState(ViewState.Busy);
await _prescriptionsService.getPrescriptionReport(dischargeNo: dischargeNo,projectId: projectId,clinicID: clinicID,setupID: setupID,episodeID: episodeID);
await _prescriptionsService.getPrescriptionReport(prescriptions: prescriptions);
if (_prescriptionsService.hasError) {
error = _prescriptionsService.error;
setState(ViewState.ErrorLocal);

@ -23,6 +23,7 @@ void main() async {
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final themeNotifier = Provider.of<ThemeNotifier>(context);
return LayoutBuilder(
builder: (context, constraints) {
@ -48,6 +49,7 @@ class MyApp extends StatelessWidget {
],
child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp(
showSemanticsDebugger: false,
title: 'Diplomatic Quarter App',
locale: projectProvider.appLocal,
@ -61,8 +63,9 @@ class MyApp extends StatelessWidget {
const Locale('ar', ''), // Arabic
const Locale('en', ''), // English
],
theme: ThemeData(
fontFamily: projectProvider.isArabic? 'Cairo' : 'WorkSans',
//theme: themeNotifier.getTheme(),
theme:ThemeData(
fontFamily:projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,

@ -213,6 +213,9 @@ class ConfirmPaymentPage extends StatelessWidget {
appo.projectID.toString(),
authenticatedUser.emailAddress,
paymentMethod,
authenticatedUser.patientType,
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
browser);
}

@ -573,6 +573,9 @@ class _BookSuccessState extends State<BookSuccess> {
appo.projectID.toString(),
authenticatedUser.emailAddress,
paymentMethod,
authenticatedUser.patientType,
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
widget.browser);
}

@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
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/widgets/buttons/defaultButton.dart';
@ -144,7 +145,7 @@ class _AddMember extends State<AddMember> {
request.zipCode = countryCode;
request.isRegister = false;
request.patientStatus = 2;
loading(true);
GifLoaderDialogUtils.showMyDialog(context);
familyFileProvider
.addFamilyFile(request)
.then((value) => manageFamily(value))
@ -154,18 +155,21 @@ class _AddMember extends State<AddMember> {
}
manageFamily(addMemberResult) {
loading(false);
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: addMemberResult['ShareFamilyFileObj']['Message'],
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => {
insertFamilyData(addMemberResult),
ConfirmDialog.closeAlertDialog(context)
},
cancelFunction: () => {});
dialog.showAlertDialog(context);
GifLoaderDialogUtils.hideDialog(context);
if(addMemberResult is String ==false){
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: addMemberResult['ShareFamilyFileObj']['Message'],
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => {
insertFamilyData(addMemberResult),
ConfirmDialog.closeAlertDialog(context)
},
cancelFunction: () => {});
dialog.showAlertDialog(context);
}
}
insertFamilyData(addMemberResult) {

@ -75,7 +75,7 @@ class AddFamilyMemberType extends StatelessWidget {
),
AppText(
TranslationBase.of(context)
.nationalID,
.idNo,
fontSize: SizeConfig
.textMultiplier *
2,
@ -113,9 +113,10 @@ class AddFamilyMemberType extends StatelessWidget {
AppText(
TranslationBase.of(context)
.fileNo,
textAlign: TextAlign.center,
fontSize: SizeConfig
.textMultiplier *
2,
1.8,
)
],
),

@ -1,7 +1,10 @@
import 'dart:ui';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -31,7 +34,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
AppSharedPreferences sharedPref = new AppSharedPreferences();
var userID;
TabController _tabController;
int _tabIndex = 0;
@override
void initState() {
_tabController = new TabController(length: 2, vsync: this, initialIndex: 0);
@ -41,41 +44,102 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
bool expandFlag = false;
Widget build(BuildContext context) {
// return Scaffold(
// appBar: AppBar(
// bottom: TabBar(
// indicatorColor: Colors.red,
// tabs: [
// Padding(
// padding: EdgeInsets.all(6),
// child: AppText(
// TranslationBase.of(context).family,
// color: Colors.white,
// )),
// Padding(
// padding: EdgeInsets.all(6),
// child: AppText(
// TranslationBase.of(context).request,
// color: Colors.white,
// )),
// ],
// controller: _tabController,
// ),
//
// ),
// body: TabBarView(
// // physics: NeverScrollableScrollPhysics(),
// children: [myFamilyDetails(context), myFamilyRequest(context)],
// controller: _tabController),
// );
// //bottomNavigationBar: BottomBarSearch());
return AppScaffold(
appBarTitle: TranslationBase.of(context).myFamilyFiles,
isShowAppBar: widget.isAppbarVisible,
body: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
preferredSize: Size.fromHeight(65.0),
child: Stack(
children: <Widget>[
Positioned(
bottom: 1,
left: 0,
right: 0,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Theme.of(context)
.scaffoldBackgroundColor
.withOpacity(0.8),
height: 70.0,
),
),
),
Center(
child: Container(
height: 60.0,
margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.92, // 0.9,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 0.9), //width: 0.7
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: true,
controller: _tabController,
indicatorWeight: 5.0,
//indicatorSize: TabBarIndicatorSize.label,
indicatorSize: TabBarIndicatorSize.tab,
indicatorColor: Colors.red[800],
labelColor: Theme.of(context).primaryColor,
labelPadding:
EdgeInsets.only(top: 4.0, left: 35.0, right: 35.0),
unselectedLabelColor: Colors.grey[800],
tabs: [
Container(
width: MediaQuery.of(context).size.width * 0.30,
child: Center(
child: AppText(TranslationBase.of(context).family),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.30,
child: Center(
child: AppText(TranslationBase.of(context).request),
),
),
],
),
),
),
),
],
),
),
body: Column(
children: <Widget>[
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: [
myFamilyDetails(context),
myFamilyRequest(context)
],
),
)
],
),
),
);
return AppScaffold(
appBarTitle: TranslationBase.of(context).myFamilyFiles,
isShowAppBar: widget.isAppbarVisible,
body: SingleChildScrollView(
child: Container(
height: SizeConfig.screenHeight,
height: SizeConfig.screenHeight *.9,
width: SizeConfig.realScreenWidth,
padding: EdgeInsets.all(20),
child: Stack(
@ -84,12 +148,11 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
controller: _tabController,
indicatorColor: Colors.red,
tabs: [
Padding(
padding: EdgeInsets.all(6),
child: Text(TranslationBase.of(context).family)),
Padding(
padding: EdgeInsets.all(6),
child: Text(TranslationBase.of(context).request)),
Tab( // padding: EdgeInsets.all(6),
child:AppText(TranslationBase.of(context).family)),
Tab(
// padding: EdgeInsets.all(6),
child:AppText(TranslationBase.of(context).request)),
],
),
TabBarView(
@ -228,7 +291,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
SingleChildScrollView(
child: Container(
height: MediaQuery.of(context).size.height,
margin: EdgeInsets.only(top:50),
margin: EdgeInsets.only(top:65),
child: Column(
children: <Widget>[
RoundedContainer(
@ -255,34 +318,37 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
else
return Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
flex: 3,
child: Text(TranslationBase.of(context)
.request)),
Expanded(
flex: 2,
child: Text(
TranslationBase.of(context)
.switchUser,
)),
Expanded(
flex: 1,
child: Text(
TranslationBase.of(context)
.deleteView,
)),
],
),
// Padding(padding: EdgeInsets.only(left:10, right:10),
// child:
// Row(
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: <Widget>[
// Expanded(
// flex: 3,
// child: Text(TranslationBase.of(context)
// .request)),
// Expanded(
// flex: 2,
// child: Text(
// TranslationBase.of(context)
// .switchUser,
// )),
// Expanded(
// flex: 1,
// child: Text(
// TranslationBase.of(context)
// .deleteView,
// )),
// ],
// )),
Column(children: [
Row(children: [
Padding(
padding: EdgeInsets.only(left:10, right:10), child:Row(children: [
Expanded(flex: 3, child: AppText('Name')),
Expanded(flex: 1, child: AppText('Allow')),
Expanded(flex: 1, child: AppText('Reject')),
]),
])),
Column(
children:familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList
.map<Widget>((result) {
@ -302,8 +368,8 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
color: Colors.black,
),
onPressed: () {
acceptRequest(
result, context);
acceptRemoveRequest(
result.iD, 3, context);
},
)),
Expanded(
@ -314,8 +380,8 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
color: Colors.black,
),
onPressed: () {
deleteRequest(
result, context);
acceptRemoveRequest(
result.iD,4, context);
},
))
],
@ -371,7 +437,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
flex: 2,
child: AppText(
result.statusDescription,
color: Colors.red,
color: result.status==3 ? Colors.green: Colors.red,
)),
],
));
@ -405,31 +471,36 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
else
return Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
flex: 3,
child: Text(
TranslationBase.of(context).request)),
Expanded(
flex: 2,
child: Text(
TranslationBase.of(context).switchUser,
)),
Expanded(
flex: 1,
child: Text(
TranslationBase.of(context).deleteView,
)),
],
),
// Padding(
// padding:EdgeInsets.only(left:10, right:10),
// child: Row(
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: <Widget>[
// Expanded(
// flex: 3,
// child: AppText(
// TranslationBase.of(context).request),
// ),
// Expanded(
// flex: 2,
// child: AppText(
// TranslationBase.of(context).switchUser,
// )),
// Expanded(
// flex: 1,
// child: AppText(
// TranslationBase.of(context).deleteView,
// )),
// ],
// )),
Column(children: [
Row(children: [
Padding(
padding:EdgeInsets.only(left:10, right:10),
child: Row(children: [
Expanded(flex: 3, child: AppText('Name')),
Expanded(flex: 1, child: AppText('Delete')),
]),
])),
Column(
children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList
.map<Widget>((result) {
@ -439,7 +510,7 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
children: <Widget>[
Expanded(
flex: 3,
child: Text(result.patientName)),
child: AppText(result.patientName)),
Expanded(
flex: 1,
child: IconButton(
@ -448,8 +519,8 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
color: Colors.black,
),
onPressed: () {
deleteRequest(
result, context);
deactivateRequest(result.iD,
5, context);
},
)),
],
@ -514,8 +585,10 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
}
refreshFamily(context) {
sharedPref.remove(FAMILY_FILE);
(context as Element).reassemble();
//sharedPref.remove(FAMILY_FILE);
setState(() {
sharedPref.remove(FAMILY_FILE);
});
}
switchUser(user, context) {
@ -541,6 +614,24 @@ class _MyFamily extends State<MyFamily> with TickerProviderStateMixin {
);
}
deleteRequest(result, context) {}
acceptRequest(result, context) {}
deactivateRequest(ID, status, context) {
GifLoaderDialogUtils.showMyDialog(context);
Map<String, dynamic> request = {};
request["ID"] = ID;
request["Status"] = status;
this.familyFileProvider.deactivateFamily(request).then((value) => {
GifLoaderDialogUtils.hideDialog(context),
refreshFamily(context)
});
}
acceptRemoveRequest(ID, status, context) {
GifLoaderDialogUtils.showMyDialog(context);
Map<String, dynamic> request = {};
request["ID"] = ID;
request["Status"] = status;
this.familyFileProvider.acceptRejectFamily(request).then((value) => {
GifLoaderDialogUtils.hideDialog(context),
refreshFamily(context)
});
}
}

@ -203,6 +203,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails>
MaterialPageRoute(
builder: (context) => BookConfirm(
doctor: getDoctorObject(),
isLiveCareAppointment: widget.appo.isLiveCareAppointment,
selectedDate: DocAvailableAppointments.selectedDate,
selectedTime: DocAvailableAppointments.selectedTime)));
}

@ -606,6 +606,9 @@ class _ToDoState extends State<ToDo> {
appo.projectID.toString(),
authenticatedUser.emailAddress,
paymentMethod,
authenticatedUser.patientType,
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
widget.browser);
}

@ -74,7 +74,7 @@ class _FeedbackHomePageState extends State<FeedbackHomePage>
controller: _tabController,
indicatorWeight: 5.0,
indicatorSize: TabBarIndicatorSize.label,
indicatorColor: Colors.red[800],
indicatorColor: Theme.of(context).primaryColor,
labelColor: Theme.of(context).primaryColor,
labelPadding:
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),

@ -514,7 +514,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio(
value: MessageType.ComplaintOnAnAppointment,
groupValue: model.messageTypeDialog,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) =>
model.setMessageDialogType(value),
),
@ -538,7 +538,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio(
value: MessageType.ComplaintWithoutAppointment,
groupValue: model.messageTypeDialog,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) =>
model.setMessageDialogType(value),
),
@ -562,7 +562,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio(
value: MessageType.Question,
groupValue: model.messageTypeDialog,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) =>
model.setMessageDialogType(value),
),
@ -586,7 +586,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio(
value: MessageType.Compliment,
groupValue: model.messageTypeDialog,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) =>
model.setMessageDialogType(value),
),
@ -610,7 +610,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
leading: Radio(
value: MessageType.Suggestion,
groupValue: model.messageTypeDialog,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) =>
model.setMessageDialogType(value),
),
@ -644,7 +644,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
child: Center(
child: Texts(
TranslationBase.of(context).cancel,
color: Colors.red,
color: Theme.of(context).primaryColor,
),
),
),

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_index_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_index_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/all_habib_medical_service_page.dart';
@ -22,6 +24,8 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../locator.dart';
class HomePage extends StatefulWidget {
final Function goToMyProfile;
@ -32,9 +36,22 @@ class HomePage extends StatefulWidget {
}
class _HomePageState extends State<HomePage> {
ToDoCountProviderModel toDoProvider;
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
getToDoCount();
});
super.initState();
}
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
return BaseView<DashboardViewModel>(
onModelReady: (model) => model.getPatientRadOrders(),
builder: (_, model, wi) => AppScaffold(
@ -55,7 +72,7 @@ class _HomePageState extends State<HomePage> {
decoration: BoxDecoration(
image: DecorationImage(
image: ExactAssetImage(
'assets/images/dashboard_top_bg.png'),
'assets/images/dq_home_page_bg_image.png'),
fit: BoxFit.cover),
),
child: Stack(
@ -206,12 +223,12 @@ class _HomePageState extends State<HomePage> {
Orientation.landscape
? 0.02
: 0.03),
child: (!model.isLogin && projectViewModel.user == null)
child: (!model.isLogin )
? Container(
width: double.infinity,
height: 125,
height: 160,
decoration: BoxDecoration(
color: HexColor('#A59E9E'),
color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
border: Border.all(
color: Colors.transparent, width: 0.5),
@ -246,31 +263,36 @@ class _HomePageState extends State<HomePage> {
),
Align(
alignment: projectViewModel.isArabic
? Alignment.bottomRight
: Alignment.bottomLeft,
? Alignment.bottomLeft
: Alignment.bottomRight,
child: InkWell(
onTap: () {
widget.goToMyProfile();
},
child: Container(
margin: EdgeInsets.all(2),
width: 90,
width: MediaQuery.of(context)
.size
.width *
0.30,
height: 30,
decoration: BoxDecoration(
color: HexColor('#D81A2E'),
color: Colors.white,
shape: BoxShape.rectangle,
border: Border.all(
color: Colors.transparent,
width: 0.5),
borderRadius: BorderRadius.all(
Radius.circular(9)),
Radius.circular(4)),
),
child: Center(
child: Texts(
TranslationBase.of(context)
.viewMore,
color: Colors.white,
fontSize: 12,
color: Theme.of(context)
.primaryColor,
fontSize: 14,
),
),
),
@ -282,9 +304,9 @@ class _HomePageState extends State<HomePage> {
)
: Container(
width: double.infinity,
height: 130,
height: projectViewModel.isArabic ? 180 : 150,
decoration: BoxDecoration(
color: HexColor('#A59E9E'),
color: Theme.of(context).primaryColor,
shape: BoxShape.rectangle,
border: Border.all(
color: Colors.transparent, width: 0.5),
@ -699,25 +721,23 @@ class _HomePageState extends State<HomePage> {
child: Container(),
),
Texts(
TranslationBase.of(context).viewMore,
TranslationBase.of(context).viewAll,
color: Colors.white,
//fontWeight: FontWeight.normal,
bold: true,
)
],
),
),
height: 100,
imageName: 'contact_us_bg.png',
opacity: 0.5,
color: Colors.grey[700],
imageName: 'ask_doctor_bg.png',
//color: Colors.grey[700],
width: MediaQuery.of(context).size.width * 0.45,
onTap: () => Navigator.push(
context, FadePage(page: AllHabibMedicalService())),
),
DashboardItem(
opacity:1.0,
onTap: () {
// Navigator.push(
// context, FadePage(page: FeedbackHomePage()));
Navigator.push(
context, FadePage(page: ContactUsPage()));
},
@ -742,16 +762,15 @@ class _HomePageState extends State<HomePage> {
child: Container(),
),
Texts(
TranslationBase.of(context).viewMore,
TranslationBase.of(context).viewAll,
color: Colors.white,
fontWeight: FontWeight.normal,
bold: true,
)
],
),
),
height: 100,
imageName: 'contact_us_bg.png',
opacity: 0.5,
imageName: 'rectangle.png',
color: Colors.grey[700],
width: MediaQuery.of(context).size.width * 0.45,
),
@ -773,6 +792,23 @@ class _HomePageState extends State<HomePage> {
Navigator.push(context,
MaterialPageRoute(builder: (context) => CovidDrivethruLocation()));
}
getToDoCount() {
toDoProvider.setState(0);
ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) {
setState(() {
toDoProvider.setState(res['AppointmentActiveNumber']);
});
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
print(err);
});
}
}
}
class DashboardItem extends StatelessWidget {
@ -786,7 +822,7 @@ class DashboardItem extends StatelessWidget {
this.height,
this.color,
this.opacity = 0.4,
this.hasColorFilter = true})
this.hasColorFilter = true, this.margin, this.icon})
: super(key: key);
final bool hasBorder;
final String imageName;
@ -796,6 +832,8 @@ class DashboardItem extends StatelessWidget {
final double height;
final Color color;
final double opacity;
final double margin;
final Widget icon;
final bool hasColorFilter;
@override
@ -813,7 +851,7 @@ class DashboardItem extends StatelessWidget {
color: !hasBorder
? color != null
? color
: HexColor('#050705').withOpacity(opacity)
: Colors.black.withOpacity(opacity)
: Colors.white,
borderRadius: BorderRadius.circular(6.0),
border: hasBorder
@ -823,11 +861,12 @@ class DashboardItem extends StatelessWidget {
? DecorationImage(
image: ExactAssetImage('assets/images/$imageName'),
fit: BoxFit.cover,
colorFilter: hasColorFilter ? new ColorFilter.mode(
Colors.black.withOpacity(0.2), BlendMode.dstIn) : null,
colorFilter: new ColorFilter.mode(
Colors.black.withOpacity(opacity), BlendMode.dstIn),
)
: null,
: icon,
),
margin: EdgeInsets.all(margin),
child: Center(
child: child,
),

@ -15,6 +15,8 @@ import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/LocalNotification.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -46,9 +48,9 @@ class LandingPage extends StatefulWidget {
class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
int currentTab = 0;
PageController pageController;
ProjectViewModel projectProvider;
ProjectViewModel projectViewModel;
var notificationCount = '';
var themeNotifier;
///inject the user data
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
@ -91,6 +93,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
print("didChangeAppLifecycleState");
print('state = $state');
AppGlobal.context = context;
if (state == AppLifecycleState.resumed) {
print(LandingPage.isOpenCallPage);
if (LandingPage.isOpenCallPage) {
@ -135,13 +138,16 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
pageController = PageController(keepPage: true);
_firebaseMessaging.setAutoInitEnabled(true);
if (Platform.isIOS) {
_firebaseMessaging.requestNotificationPermissions();
}
_firebaseMessaging.getToken().then((String token) {
_firebaseMessaging.getToken().then((String token) async {
sharedPref.setString(PUSH_TOKEN, token);
if (token != null && DEVICE_TOKEN == "") {
if (token != null && await sharedPref.getObject(USER_PROFILE) ==null) {
DEVICE_TOKEN = token;
checkUserStatus(token);
}
@ -151,6 +157,8 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
});
//
// //_firebase Background message handler
Future.delayed(Duration.zero, () => setTheme());
//_firebase Background message handler
// _firebaseMessaging.configure(
// // onMessage: (Map<String, dynamic> message) async {
// // showDialog("onMessage: $message");
@ -334,8 +342,9 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
projectViewModel = Provider.of<ProjectViewModel>(context);
themeNotifier = Provider.of<ThemeNotifier>(context);
//setTheme();
return Scaffold(
appBar: AppBar(
elevation: 0,
@ -403,9 +412,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
SETTINGS,
);
else
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
login();
}, //do something,
)
],
@ -453,14 +460,53 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
case 1:
return TranslationBase.of(context).medicalProfile;
case 2:
return TranslationBase.of(context).mySchedule;
return TranslationBase.of(context).bookAppo;
case 3:
return TranslationBase.of(context).services;
case 4:
return TranslationBase.of(context).bookAppo;
}
}
setTheme() async{
//
// defaultTheme =
// ThemeData(
// fontFamily:projectViewModel.isArabic ? 'Cairo' : 'WorkSans',
// primarySwatch: Colors.blue,
// visualDensity: VisualDensity.adaptivePlatformDensity,
// brightness: Brightness.light,
// pageTransitionsTheme: const PageTransitionsTheme(
// builders: {
// TargetPlatform.android: ZoomPageTransitionsBuilder(),
// TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
// },
// ),
// hintColor: Colors.grey[400],
// disabledColor: Colors.grey[300],
// errorColor: Color.fromRGBO(235, 80, 60, 1.0),
// scaffoldBackgroundColor: Color(0xffEEEEEE),
// textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
// textSelectionHandleColor: Colors.grey,
// canvasColor: Colors.white,
// backgroundColor: Colors.white,
// highlightColor: Colors.grey[100].withOpacity(0.4),
// splashColor: Colors.transparent,
// primaryColor: Color(0xff40ACC9),
// bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
// cursorColor: Colors.grey,
// cardColor: Colors.white,
// iconTheme: IconThemeData(),
// appBarTheme: AppBarTheme(
// color: Color(0xff40ACC9),
// brightness: Brightness.dark,
// elevation: 10.0,
// actionsIconTheme: IconThemeData(
// color: Color(0xff40ACC9),
// ),
// ),
// );
// themeNotifier.setTheme(defaultTheme);
}
void checkUserStatus(token) async {
authService
.selectDeviceImei(token)
@ -507,4 +553,15 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
_changeCurrentTab(2);
}
}
login() async {
var data = await sharedPref.getObject(IMEI_USER_DATA);
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN);
if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(
WELCOME_LOGIN,
);
}
}
}

@ -285,6 +285,9 @@ class _clinic_listState extends State<ClinicList> {
"12",
authenticatedUser.emailAddress,
paymentMethod,
authenticatedUser.patientType,
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
browser);
}

@ -370,7 +370,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
if (authenticated == true) {
if(user.logInType==2 || user.logInType ==3){
if(user !=null && (user.logInType==2 || user.logInType ==3)){
this.checkActivationCode();
}else{
var request = this.getCommonRequest(type: type);
@ -460,7 +460,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
this.deviceToken = await sharedPref.getString(PUSH_TOKEN);
this.lastLogin = await sharedPref.getInt(LAST_LOGIN) != null
? await sharedPref.getInt(LAST_LOGIN)
: user.logInType !=null ? user.logInType : null;
: user !=null ? user.logInType : null;
//this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN);
}
@ -525,6 +525,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
}
else
{
sharedPref.remove(FAMILY_FILE),
result.list.isFamily = false,
userData = result.list,
sharedPref.setObject(MAIN_USER, result.list),

@ -241,6 +241,7 @@ class _Login extends State<Login> {
}
// request.isRegister = false;
this.authService.checkActivationCode(request, code).then((result) => {
sharedPref.remove(FAMILY_FILE),
result = CheckActivationCode.fromJson(result),
result.list.isFamily =false,
this.sharedPref.setObject(USER_PROFILE, result.list),

@ -1,5 +1,9 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart';
import 'package:diplomaticquarterapp/models/Authentication/register_info_response.dart';
import 'package:diplomaticquarterapp/models/Authentication/register_user_requet.dart';
@ -7,6 +11,7 @@ import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -20,6 +25,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hijri/hijri_calendar.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
class RegisterInfo extends StatefulWidget {
@override
@ -45,6 +51,11 @@ class _RegisterInfo extends State<RegisterInfo> {
String email = '';
String location = '1';
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
AppointmentRateViewModel appointmentRateViewModel =
locator<AppointmentRateViewModel>();
ProjectViewModel projectViewModel;
@override
void initState() {
@ -56,6 +67,7 @@ class _RegisterInfo extends State<RegisterInfo> {
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return AppScaffold(
appBarTitle: TranslationBase.of(context).register,
isShowAppBar: true,
@ -296,27 +308,34 @@ class _RegisterInfo extends State<RegisterInfo> {
}else
{
result.list.isFamily = false,
sharedPref.setObject(USER_PROFILE, result.list),
this.sharedPref.setObject(MAIN_USER, result.list),
sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
sharedPref.setString(TOKEN, result.authenticationTokenID),
Navigator.of(context).pushNamed(HOME)
sharedPref.remove(FAMILY_FILE),
result['List'][0]['IsFamily'] = false,
sharedPref.setObject(USER_PROFILE, result['List'][0]),
this.sharedPref.setObject(MAIN_USER, result['List'][0]),
sharedPref.setObject(LOGIN_TOKEN_ID, result["LogInTokenID"]),
sharedPref.setString(TOKEN, result["AuthenticationTokenID"]),
authenticatedUserObject.isLogin = true,
appointmentRateViewModel.isLogin = true,
projectViewModel.isLogin = true,
Navigator.of(context).pushNamed(HOME),
AppToast.showSuccessToast(message: result["ErrorEndUserMessage"])
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: err,
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => {
ConfirmDialog.closeAlertDialog(context)
},
cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)});
dialog.showAlertDialog(context);
});
});
// .catchError((err) {
// GifLoaderDialogUtils.hideDialog(context);
// ConfirmDialog dialog = new ConfirmDialog(
// context: context,
// confirmMessage: err,
// okText: TranslationBase.of(context).confirm,
// cancelText: TranslationBase.of(context).cancel_nocaps,
// okFunction: () => {
// ConfirmDialog.closeAlertDialog(context)
// },
// cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)});
// dialog.showAlertDialog(context);
//
// });
}
getRegisterInfo() async {
@ -349,15 +368,15 @@ class _RegisterInfo extends State<RegisterInfo> {
"PatientOutSA": registerd_data.zipCode == '966' ? 0 : 1,
"FirstNameN":registerInfo.firstNameAr =='-' ?"": registerInfo.firstNameAr,
"FirstName": registerInfo.firstNameEn =='-' ?"":registerInfo.firstNameEn,
"MiddleNameN":registerInfo.secondNameAr =='-' ? "" : registerInfo.secondNameAr,
"MiddleName":registerInfo.secondNameEn == '-' ? "": registerInfo.secondNameEn,
"MiddleNameN":registerInfo.secondNameAr,
"MiddleName":registerInfo.secondNameEn,
"LastNameN": registerInfo.lastNameAr =='-'? "" : registerInfo.lastNameAr,
"LastName": registerInfo.lastNameEn =='-' ? "": registerInfo.lastNameEn,
"StrDateofBirth": registerInfo.dateOfBirth,
"DateofBirth": DateUtil.convertISODateToJsonDate(
registerInfo.dateOfBirth.replaceAll('/', '-')),
"Gender": registerInfo.gender == 'M' ? 1 : 2,
"NationalityID": registerInfo.nationality,
"NationalityID": registerInfo.nationalityCode,
"DateofBirthN": date,
"EmailAddress": email,
"SourceType": location,
@ -374,8 +393,8 @@ class _RegisterInfo extends State<RegisterInfo> {
}
bool isValid() {
if (location != null ||
language != null ||
if (location != null &&
language != null &&
Utils.validEmail(email) == true) {
return true;
} else {

@ -298,7 +298,7 @@ class _Register extends State<Register> {
// DOB: this.dateOption === '1' ? this.dateOfBirth : moment(this.dateOfBirth).format('DD/MM/YYYY'),
// IsHijri: Number(this.dateOption)
// }
showLoader(true);
GifLoaderDialogUtils.showMyDialog(context);
var request = CheckUserStatusRequest();
request.patientIdentificationID = nationalIDorFile.text;
request.dOB = isHijri == 1
@ -307,7 +307,7 @@ class _Register extends State<Register> {
request.isHijri = isHijri;
request.patientOutSA = countryCode == '966' ? 0 : 1;
this.authService.checkUserStatus(request).then((result) => {
showLoader(false),
GifLoaderDialogUtils.hideDialog(context),
if (result is Map)
{
result = CheckUserStatusResponse.fromJson(result),

@ -29,7 +29,6 @@ import 'new_text_Field.dart';
enum BeneficiaryType { MyAccount, MyFamilyFiles, OtherAccount, NON }
class AdvancePaymentPage extends StatefulWidget {
@override
_AdvancePaymentPageState createState() => _AdvancePaymentPageState();
@ -238,13 +237,35 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
_fileTextController.text.isEmpty ||
_selectedHospital == null,
onTap: () {
var mobileNum;
var patientName;
if (beneficiaryType == BeneficiaryType.MyFamilyFiles) {
mobileNum = selectedPatientFamily.mobileNumber;
patientName = selectedPatientFamily.patientName;
}
if (beneficiaryType == BeneficiaryType.MyAccount) {
mobileNum = model.user.mobileNumber;
patientName = model.user.firstName;
}
if (beneficiaryType == BeneficiaryType.OtherAccount) {
mobileNum = _selectedPatientInfo.mobileNumber;
patientName = _selectedPatientInfo.fullName;
}
advanceModel.fileNumber = _fileTextController.text;
advanceModel.hospitalsModel = _selectedHospital;
advanceModel.note = _notesTextController.text;
advanceModel.email = email ?? model.user.emailAddress;
advanceModel.amount = amount;
advanceModel.mobileNumber = mobileNum;
advanceModel.patientName = patientName;
model.getPatientInfoByPatientIDAndMobileNumber().then((value) {
model
.getPatientInfoByPatientIDAndMobileNumber(advanceModel)
.then((value) {
if (model.state != ViewState.Error &&
model.state != ViewState.ErrorLocal) {
Utils.hideKeyboard(context);
@ -269,8 +290,8 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
);
}
}).showProgressBar(
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
text: "Loading",
backgroundColor: Colors.blue.withOpacity(0.6));
},
),
)),
@ -331,22 +352,22 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
void confirmSelectFamilyDialog(
List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList) {
if(getAllSharedRecordsByStatusList.isNotEmpty)
showDialog(
context: context,
child: SelectPatientFamilyDialog(
getAllSharedRecordsByStatusList: getAllSharedRecordsByStatusList,
selectedPatientFamily: selectedPatientFamily,
onValueSelected: (value) {
setState(() {
selectedPatientFamily = value;
_fileTextController.text =
selectedPatientFamily.patientID.toString();
advanceModel.depositorName = value.patientName;
});
},
),
);
if (getAllSharedRecordsByStatusList.isNotEmpty)
showDialog(
context: context,
child: SelectPatientFamilyDialog(
getAllSharedRecordsByStatusList: getAllSharedRecordsByStatusList,
selectedPatientFamily: selectedPatientFamily,
onValueSelected: (value) {
setState(() {
selectedPatientFamily = value;
_fileTextController.text =
selectedPatientFamily.responseID.toString();
advanceModel.depositorName = value.patientName;
});
},
),
);
}
String getBeneficiaryType() {

@ -137,7 +137,11 @@ class ConfirmPaymentPage extends StatelessWidget {
),
NewTextFields(
hintText: TranslationBase.of(context).depositorName,
initialValue: advanceModel.depositorName,
initialValue: model.user.firstName +
" " +
model.user.middleName +
" " +
model.user.lastName,
isEnabled: false,
),
SizedBox(
@ -217,6 +221,9 @@ class ConfirmPaymentPage extends StatelessWidget {
advanceModel.hospitalsModel.iD.toString(),
advanceModel.email,
paymentMethod,
patientInfoAndMobileNumber.patientType,
advanceModel.patientName,
advanceModel.fileNumber,
authenticatedUser,
browser);
}
@ -276,6 +283,9 @@ class ConfirmPaymentPage extends StatelessWidget {
res['Amount'],
res['Fort_id'],
res['PaymentMethod'],
patientInfoAndMobileNumber.patientType,
advanceModel.patientName,
advanceModel.fileNumber,
AppGlobal.context)
.then((res) {
print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']);

@ -35,9 +35,11 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
(index) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if(widget.getAllSharedRecordsByStatusList[index].status==3)
SizedBox(
height: 2,
),
if(widget.getAllSharedRecordsByStatusList[index].status==3)
Row(
children: <Widget>[
Expanded(
@ -65,6 +67,8 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
)
],
),
if(widget.getAllSharedRecordsByStatusList[index].status==3)
SizedBox(
height: 5.0,
),

@ -40,7 +40,7 @@ class LabsHomePage extends StatelessWidget {
leading: Radio(
value: FilterType.Clinic,
groupValue: model.filterType,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) {
model.setFilterType(value);
},
@ -57,7 +57,7 @@ class LabsHomePage extends StatelessWidget {
leading: Radio(
value: FilterType.Hospital,
groupValue: model.filterType,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) =>
model.setFilterType(value),
),

@ -136,7 +136,7 @@ class PrescriptionDetailsPage extends StatelessWidget {
height: 50,
width: double.infinity,
child: Center(
child: Text(prescriptionReport.frequencyN))),
child: Text(prescriptionReport.frequencyN?? ''))),
Container(
color: Colors.white,
height: 50,

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.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/pages/medical/prescriptions/prescription_details_page.dart';
@ -20,63 +21,124 @@ class PrescriptionItemsPage extends StatelessWidget {
Widget build(BuildContext context) {
return BaseView<PrescriptionsViewModel>(
onModelReady: (model) =>
model.getPrescriptionReport(dischargeNo: prescriptions.dischargeNo,setupID:prescriptions.setupID,clinicID: prescriptions.clinicID,projectId: prescriptions.projectID,episodeID: prescriptions.episodeID),
model.getPrescriptionReport(prescriptions: prescriptions),
builder: (_, model, widget) => AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).prescriptions,
baseViewModel: model,
body: Container(
height: MediaQuery.of(context).size.height * 0.8,
child: ListView.builder(
itemBuilder: (context, index) => InkWell(
onTap: () => Navigator.push(
context,
FadePage(
page: PrescriptionDetailsPage(
prescriptionReport: model.prescriptionReportList[index],
child: Column(
children: [
if(!prescriptions.isInOutPatient)
...List.generate(model.prescriptionReportList.length, (index) => InkWell(
onTap: () => Navigator.push(
context,
FadePage(
page: PrescriptionDetailsPage(
prescriptionReport: model.prescriptionReportList[index],
),
),
),
),
),
child: Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10, left: 10, right: 10),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
child: 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.prescriptionReportList[index].imageSRCUrl,
fit: BoxFit.cover,
width: 60,
height: 70,
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Texts(model.prescriptionReportList[index].itemDescription.isNotEmpty?
model.prescriptionReportList[index].itemDescription :model
.prescriptionReportList[index].itemDescriptionN)),
)),
Icon(
Icons.arrow_forward_ios,
size: 18,
color: Colors.grey[500],
)
],
),
),
))
else
...List.generate(
model.prescriptionReportEnhList.length,
(index) => InkWell(
onTap: (){
PrescriptionReport prescriptionReport = PrescriptionReport(
imageSRCUrl: model.prescriptionReportEnhList[index].imageSRCUrl,
itemDescription: model.prescriptionReportEnhList[index].itemDescription,
itemDescriptionN: model.prescriptionReportEnhList[index].itemDescription,
routeN: model.prescriptionReportEnhList[index].route,
frequency: model.prescriptionReportEnhList[index].frequency,
frequencyN: model.prescriptionReportEnhList[index].frequency,
doseDailyQuantity: model.prescriptionReportEnhList[index].doseDailyQuantity,
days: model.prescriptionReportEnhList[index].days,
itemID: model.prescriptionReportEnhList[index].itemID,
remarks: model.prescriptionReportEnhList[index].remarks
);
Navigator.push(
context,
FadePage(
page: PrescriptionDetailsPage(
prescriptionReport:prescriptionReport,
),
),
);
},
child: Container(
margin: EdgeInsets.all(8.0),
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)),
child: Image.network(
model.prescriptionReportEnhList[index].imageSRCUrl,
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.prescriptionReportEnhList[index]
.itemDescription),
],
),
),
),
],
),
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.prescriptionReportList[index].imageSRCUrl,
fit: BoxFit.cover,
width: 60,
height: 70,
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Texts(model.prescriptionReportList[index].itemDescription.isNotEmpty?
model.prescriptionReportList[index].itemDescription :model
.prescriptionReportList[index].itemDescriptionN)),
)),
Icon(
Icons.arrow_forward_ios,
size: 18,
color: Colors.grey[500],
)
],
),
),
),
itemCount: model.prescriptionReportList.length,
)
],
),
),
bottomSheet: Container(

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/radiology_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
@ -21,7 +22,7 @@ class RadiologyDetailsPage extends StatelessWidget {
lineItem: finalRadiology.invoiceLineItemNo,
invoiceNo: finalRadiology.invoiceNo),
builder: (_, model, widget) => AppScaffold(
appBarTitle: 'Radiology Report',
appBarTitle: TranslationBase.of(context).report,
isShowAppBar: true,
baseViewModel: model,
body: SingleChildScrollView(
@ -45,7 +46,7 @@ class RadiologyDetailsPage extends StatelessWidget {
onTap: () {
launch(model.radImageURL);
},
label: 'Open Radio Image',
label: TranslationBase.of(context).openRad,
backgroundColor: Colors.grey[800],
),
),
@ -54,9 +55,9 @@ class RadiologyDetailsPage extends StatelessWidget {
child: Button(
onTap: () => model.sendRadReportEmail(
finalRadiology: finalRadiology),
label: 'Send Copy',
label: TranslationBase.of(context).sendCopyRad,
loading: model.state == ViewState.BusyLocal,
backgroundColor: Colors.red[800],
backgroundColor: Theme.of(context).primaryColor,
),
)
],

@ -38,7 +38,7 @@ class RadiologyHomePage extends StatelessWidget {
leading: Radio(
value: FilterType.Clinic,
groupValue: model.filterType,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) {
model.setFilterType(value);
},
@ -56,7 +56,7 @@ class RadiologyHomePage extends StatelessWidget {
leading: Radio(
value: FilterType.Hospital,
groupValue: model.filterType,
activeColor: Colors.red[800],
activeColor: Theme.of(context).primaryColor,
onChanged: (FilterType value) {
model.setFilterType(value);
},
@ -85,6 +85,7 @@ class RadiologyHomePage extends StatelessWidget {
),
),
child: DoctorCard(
isInOutPatient: radiology.isInOutPatient,
name: radiology.doctorName,
profileUrl: radiology.doctorImageURL,
subName: '${radiology.projectName} \n${TranslationBase.of(context).billNo} ${radiology.invoiceNo}',

@ -19,14 +19,14 @@ class GeneralSettings extends StatefulWidget {
class _GeneralSettings extends State<GeneralSettings>
with TickerProviderStateMixin {
var themeNotifier;
var mediaQueryData;
int blindValue = 0;
bool vibration =false;
bool accsibility =false;
bool camera =false;
bool location =false;
bool vibration =false;
bool accsibility =false;
bool camera =false;
bool location =false;
var sharedPref = new AppSharedPreferences();
var permission = new PermissionService();
var mediaQueryData;
@override
void initState() {
getValues();
@ -81,104 +81,104 @@ class _GeneralSettings extends State<GeneralSettings>
setState(() {
accsibility = value;
});
//setAccisibility(value);
permission.openSettings();
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
)
],
)),
Container(
padding: EdgeInsets.all(10),
child: AppText(
TranslationBase.of(context).blindMode,
color: Colors.black,
fontWeight: FontWeight.bold,
),
),
new Container(
color: Colors.white,
padding: EdgeInsets.all(8.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text(
TranslationBase.of(context).offTheme,
style: new TextStyle(fontSize: 16.0),
),
Radio(
value: 0,
groupValue: blindValue,
onChanged: (value) {
setState(() => {this.blindValue = value});
setTheme(value);
},
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text(
TranslationBase.of(context).invertTheme,
style: new TextStyle(
fontSize: 16.0,
),
),
new Radio(
value: 1,
groupValue: blindValue,
onChanged: (value) {
setState(() => {this.blindValue = value});
setTheme(value);
},
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text(
TranslationBase.of(context).dimTheme,
style: new TextStyle(fontSize: 16.0),
),
new Radio(
value: 2,
groupValue: blindValue,
onChanged: (value) {
setState(() => {this.blindValue = value});
setTheme(value);
},
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text(
TranslationBase.of(context).bwTheme,
style: new TextStyle(fontSize: 16.0),
),
new Radio(
value: 3,
groupValue: blindValue,
onChanged: (value) {
setState(() => {this.blindValue = value});
setTheme(value);
},
),
],
),
],
)
])),
// Container(
// padding: EdgeInsets.all(10),
// child: AppText(
// TranslationBase.of(context).blindMode,
// color: Colors.black,
// fontWeight: FontWeight.bold,
// ),
// ),
// new Container(
// color: Colors.white,
// padding: EdgeInsets.all(8.0),
// child: new Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[
// new Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// new Text(
// TranslationBase.of(context).offTheme,
// style: new TextStyle(fontSize: 16.0),
// ),
// Radio(
// value: 0,
// groupValue: blindValue,
// onChanged: (value) {
// setState(() => {this.blindValue = value});
// setTheme(value);
// },
// ),
// ],
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// new Text(
// TranslationBase.of(context).invertTheme,
// style: new TextStyle(
// fontSize: 16.0,
// ),
// ),
// new Radio(
// value: 1,
// groupValue: blindValue,
// onChanged: (value) {
// setState(() => {this.blindValue = value});
// setTheme(value);
// },
// )
// ],
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// new Text(
// TranslationBase.of(context).dimTheme,
// style: new TextStyle(fontSize: 16.0),
// ),
// new Radio(
// value: 2,
// groupValue: blindValue,
// onChanged: (value) {
// setState(() => {this.blindValue = value});
// setTheme(value);
// },
// ),
// ],
// ),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// new Text(
// TranslationBase.of(context).bwTheme,
// style: new TextStyle(fontSize: 16.0),
// ),
// new Radio(
// value: 3,
// groupValue: blindValue,
// onChanged: (value) {
// setState(() => {this.blindValue = value});
//
// setTheme(value);
// },
// ),
// ],
// ),
// ],
// )
// ])),
Container(
padding: EdgeInsets.all(10),
child: AppText(
@ -200,6 +200,7 @@ class _GeneralSettings extends State<GeneralSettings>
setState(() {
camera = value;
});
permission.setCameraLocationPermission(context);
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
@ -219,6 +220,7 @@ class _GeneralSettings extends State<GeneralSettings>
setState(() {
location = value;
});
permission.setCameraLocationPermission(context);
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
@ -238,43 +240,7 @@ class _GeneralSettings extends State<GeneralSettings>
break;
case 1:
{
themeNotifier.setTheme(ThemeData(
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey,
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Colors.grey,
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Colors.grey,
bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey,
iconTheme: IconThemeData(),
appBarTheme: AppBarTheme(
color: Colors.grey,
brightness: Brightness.dark,
elevation: 10.0,
actionsIconTheme: IconThemeData(
color: Colors.grey,
),
),
));
themeNotifier.setTheme(await getTheme(value));
Screen.setBrightness(1.0);
}
break;
@ -295,28 +261,31 @@ class _GeneralSettings extends State<GeneralSettings>
}
break;
}
//permission.setTheme(value);
permission.setTheme(value);
}
setVibration(value){
permission.setVibrationPermission(value);
}
setAccisibility(){
if(!accsibility){
}
// permission.setVibrationPermission(value);
}
getValues() async{
blindValue= permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled();
vibration = permission.isVibrationEnabled() ==null ? false : permission.isVibrationEnabled();
accsibility =mediaQueryData.accessibleNavigation;
blindValue= permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled();
vibration = permission.isVibrationEnabled() ==null ? false : permission.isVibrationEnabled();
camera = await permission.isCameraEnabled();
location = await permission.isLocationEnabled();
setState(() {
location =location;
camera = camera;
vibration = vibration;
blindValue =blindValue;
accsibility = mediaQueryData.accessibleNavigation;
});
}
getTheme(value) async{
if(value ==1){
return ThemeData(
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'en' ? 'WorkSans' : 'Cairo',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
@ -355,7 +324,7 @@ class _GeneralSettings extends State<GeneralSettings>
}else if(value ==3){
return ThemeData(
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'en' ? 'WorkSans' : 'Cairo',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
@ -394,7 +363,7 @@ class _GeneralSettings extends State<GeneralSettings>
}else {
return ThemeData(
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'en' ? 'WorkSans' : 'Cairo',
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,

@ -1,5 +1,8 @@
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -8,17 +11,31 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ProfileSettings extends StatefulWidget {
@override
_ProfileSettings createState() => _ProfileSettings();
}
class _ProfileSettings extends State<ProfileSettings>
with TickerProviderStateMixin {
bool smsAlert = true;
bool emailAlert = true;
int language = 1;
final authService = new AuthProvider();
TextEditingController emergencyContact = new TextEditingController();
TextEditingController emailController = new TextEditingController();
TextEditingController emergencyContactName = new TextEditingController();
@override
void initState() {
Future.delayed(new Duration(seconds: 0), () {
getSettings(context);
});
super.initState();
}
Widget build(BuildContext context) {
bool isVibration = true;
var language = 1;
return BaseView<DashboardViewModel>(
onModelReady: (model) => model.getPatientRadOrders(),
onModelReady: (model) =>{},
builder: (_, model, wi) => Container(
child:
ListView(scrollDirection: Axis.vertical, children: <Widget>[
@ -62,7 +79,10 @@ class _ProfileSettings extends State<ProfileSettings>
value: 2,
groupValue: language,
onChanged: (value) {
language = value;
setState(() {
language = value;
});
},
)
],
@ -79,7 +99,10 @@ class _ProfileSettings extends State<ProfileSettings>
value: 1,
groupValue: language,
onChanged: (value) {
language = value;
setState(() {
language = value;
});
},
)
],
@ -97,10 +120,10 @@ class _ProfileSettings extends State<ProfileSettings>
children: [
AppText(TranslationBase.of(context).emailAlert),
Switch(
value: isVibration,
value: emailAlert,
onChanged: (value) {
setState(() {
isVibration = value;
emailAlert = value;
});
},
activeTrackColor: Colors.lightGreenAccent,
@ -117,10 +140,10 @@ class _ProfileSettings extends State<ProfileSettings>
children: [
AppText(TranslationBase.of(context).smsAlert),
Switch(
value: isVibration,
value: smsAlert,
onChanged: (value) {
setState(() {
isVibration = value;
smsAlert = value;
});
},
activeTrackColor: Colors.lightGreenAccent,
@ -141,7 +164,7 @@ class _ProfileSettings extends State<ProfileSettings>
children: [
AppText(TranslationBase.of(context).email),
TextField(
style: TextStyle(color: Colors.red),
controller: emailController,
decoration: InputDecoration(
suffixIcon: Icon(Icons.edit),
))
@ -156,7 +179,7 @@ class _ProfileSettings extends State<ProfileSettings>
children: [
AppText(TranslationBase.of(context).emergencyName),
TextField(
style: TextStyle(color: Colors.red),
controller: emergencyContactName,
decoration: InputDecoration(
suffixIcon: Icon(Icons.edit),
))
@ -171,7 +194,7 @@ class _ProfileSettings extends State<ProfileSettings>
children: [
AppText(TranslationBase.of(context).emergencyContact),
TextField(
style: TextStyle(color: Colors.red),
controller: emergencyContact,
decoration: InputDecoration(
suffixIcon: Icon(Icons.edit),
),
@ -186,11 +209,44 @@ class _ProfileSettings extends State<ProfileSettings>
child: DefaultButton(
TranslationBase.of(context).submit,
() {
// print(mobileNo.text);
saveSettings();
},
)),
],
))
])));
}
getSettings(context){
GifLoaderDialogUtils.showMyDialog(context);
authService.getSettings().then((result)=>{
GifLoaderDialogUtils.hideDialog(context),
setValue(result["PateintInfoForUpdateList"][0])
});
}
setValue(value){
setState(() {
this.language = int.parse(value["PreferredLanguage"]);
this.emailAlert = value["IsEmailAlertRequired"];
this.smsAlert = value["IsSMSAlertRequired"];
this.emailController.text = value["EmailAddress"];
this.emergencyContact.text = value["EmergencyContactNo"];
this.emergencyContactName.text = value["EmergencyContactName"];
});
}
saveSettings(){
GifLoaderDialogUtils.showMyDialog(context);
Map<String, dynamic> request = {};
request["EmailAddress"] =this.emailController.text;
request["EmergencyContactName"] = this.emergencyContactName.text;
request["EmergencyContactNo"] = this.emergencyContact.text;
request["IsEmailAlertRequired"] = this.emailAlert;
request["IsSMSAlertRequired"] = this.smsAlert;
request["PreferredLanguage"] = this.language.toString();
authService.saveSettings(request).then((result)=>{
print(result),
GifLoaderDialogUtils.hideDialog(context)
});
}
}

@ -1168,6 +1168,9 @@ class DoctorsListService extends BaseService {
double payedAmount,
String paymentReference,
String paymentMethodName,
dynamic patientType,
String patientName,
dynamic patientID,
BuildContext context) async {
Map<String, dynamic> request;
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
@ -1179,12 +1182,12 @@ class DoctorsListService extends BaseService {
Request req = appGlobal.getPublicRequest();
request = {
"CustName": authUser.firstName + " " + authUser.lastName,
"CustID": authUser.patientID,
"CustName": patientName,
"CustID": patientID,
"SetupID": "010266",
"ProjectID": projectID,
"PatientID": authUser.patientID,
"AccountID": authUser.patientID,
"PatientID": patientID,
"AccountID": patientID,
"PaymentAmount": payedAmount,
"NationalityID": null,
"DepositorName": authUser.firstName + " " + authUser.lastName,
@ -1201,8 +1204,8 @@ class DoctorsListService extends BaseService {
"SessionID": "YckwoXhUmWBsnHKEKig",
"isDentalAllowedBackend": false,
"TokenID": "@dm!n",
"PatientTypeID": authUser.patientType,
"PatientType": authUser.patientType
"PatientTypeID": patientType,
"PatientType": patientType
};
dynamic localRes;
await baseAppClient.post(HIS_CREATE_ADVANCE_PAYMENT,

@ -48,7 +48,8 @@ const LOGGED_IN_USER_URL =
const FORGOT_PATIENT_ID =
'Services/Authentication.svc/REST/SendPatientIDSMSByMobileNumber';
const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard';
const PROFILE_SETTING = 'Services/Patients.svc/REST/GetPateintInfoForUpdate';
const SAVE_SETTING = 'Services/Patients.svc/REST/UpdatePateintInfo';
class AuthProvider with ChangeNotifier {
bool isLogin = false;
bool isLoading = true;
@ -457,4 +458,40 @@ class AuthProvider with ChangeNotifier {
//return Future.value(error);
}
}
getSettings() async{
dynamic localRes;
try {
await new BaseAppClient().post(PROFILE_SETTING,
onSuccess: (dynamic response, int statusCode) {
localRes = response; //CheckActivationCode.fromJson();
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
// throw error;
}, body: {});
return Future.value(localRes);
} catch (error) {
throw error;
//return Future.value(error);
}
}
Future saveSettings(request) async{
dynamic localRes;
try {
await new BaseAppClient().post(SAVE_SETTING,
onSuccess: (dynamic response, int statusCode) {
localRes = response; //CheckActivationCode.fromJson();
}, onFailure: (String error, int statusCode) {
localRes = error;
return Future.value(error);
// throw error;
}, body: request);
return Future.value(localRes);
} catch (error) {
throw error;
//return Future.value(error);
}
}
}

@ -37,6 +37,8 @@ const String SENT_REQUEST_URL =
'Services/Authentication.svc/REST/GetAllSharedRecordsByStatus';
const String RECEVIED_REQUEST_URL =
'Services/Authentication.svc/REST/GetAllPendingRecordsByResponseId';
const ACCEPT_REJECT_FAMILY = 'Services/Authentication.svc/REST/Update_FileStatus';
const DEACTIVATE_FAMILY = 'Services/Authentication.svc/REST/DeactivateRequestByRensponse';
class FamilyFilesProvider with ChangeNotifier {
bool isLogin = false;
@ -300,4 +302,43 @@ class FamilyFilesProvider with ChangeNotifier {
throw error;
}
}
Future<dynamic> acceptRejectFamily(request) async {
try {
dynamic localRes;
await new BaseAppClient().post(ACCEPT_REJECT_FAMILY,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
AppToast.showErrorToast(message: error);
throw error;
}, body: request);
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
}
Future<dynamic> deactivateFamily(request) async {
try {
dynamic localRes;
await new BaseAppClient().post(DEACTIVATE_FAMILY,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
AppToast.showErrorToast(message: error);
throw error;
}, body: request);
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
}
}

@ -1,3 +1,4 @@
import 'package:android_intent/android_intent.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart';
@ -8,7 +9,8 @@ import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:localstorage/localstorage.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:vibration/vibration.dart';
class PermissionService extends BaseService {
final LocalStorage storage = new LocalStorage("permission");
@ -19,12 +21,21 @@ class PermissionService extends BaseService {
}
isVibrationEnabled() {
return storage.getItem('isVibration') ==null ? false :true;
return (storage.getItem('isVibration') ==null) || (storage.getItem('isVibration')) ==false ? false :true;
}
vibrate(){
vibrate(callback, context) async{
if (callback == null)
return null;
if(isVibrationEnabled() ==true){
HapticFeedback.vibrate();
if (await Vibration.hasVibrator()) {
Vibration.vibrate(duration: 100);
callback();
}
}else{
callback();
}
}
@ -35,5 +46,23 @@ class PermissionService extends BaseService {
isThemeEnabled() {
return storage.getItem('isTheme');
}
cameraPermission() async{
Map<Permission, PermissionStatus> statuses = await [
Permission.camera,
].request();
}
isCameraEnabled() async{
print(await Permission.camera.status);
return await Permission.camera.status == PermissionStatus.granted ? true : false;
}
setCameraLocationPermission(context) async{
Navigator.pop(context);
openAppSettings();
}
isLocationEnabled() async{
return await Permission.location.status == PermissionStatus.granted ? true : false;
}
openSettings() async{
openAppSettings();
}
}

@ -53,7 +53,7 @@ final blueBackground = Color(0xFFFFFFFF);
),
);
final defaultTheme = ThemeData(
var defaultTheme = ThemeData(
//fontFamily: ProjectViewModel().isArabic? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,

@ -864,6 +864,17 @@ String get fileno => localizedValues['fileno'][locale.languageCode];
String get searchItemError => localizedValues['searchItemError'][locale.languageCode];
String get youCanFind => localizedValues['YouCanFind'][locale.languageCode];
String get itemInSearch => localizedValues['ItemInSearch'][locale.languageCode];
String get invoiceNo => localizedValues['InvoiceNo'][locale.languageCode];
String get specialResult => localizedValues['SpecialResult'][locale.languageCode];
String get generalResult => localizedValues['GeneralResult'][locale.languageCode];
String get showMoreBtn => localizedValues['show-more-btn'][locale.languageCode];
String get value => localizedValues['value'][locale.languageCode];
String get range => localizedValues['range'][locale.languageCode];
String get outpatient => localizedValues['out-patient'][locale.languageCode];
String get inPatient => localizedValues['in-patient'][locale.languageCode];
String get report => localizedValues['report'][locale.languageCode];
String get openRad => localizedValues['open-rad'][locale.languageCode];
String get sendCopyRad => localizedValues['send-copy'][locale.languageCode];
}

@ -90,7 +90,7 @@ class _ButtonState extends State<Button> with TickerProviderStateMixin {
onTapCancel: () {
_animationController.forward();
},
onTap: (){Feedback.wrapForTap(widget.onTap, context); permission.vibrate();},
onTap: (){permission.vibrate(widget.onTap, context);},
behavior: HitTestBehavior.opaque,
child: Transform.scale(
scale: _buttonSize,

@ -24,6 +24,6 @@ class DefaultButton extends StatelessWidget {
this.text,
style: TextStyle(fontSize: SizeConfig.textMultiplier * 2),
),
onPressed: () =>{ this.onPress(), permission.vibrate()}));
onPressed:(){permission.vibrate(this.onPress, context); }));
}
}

@ -63,7 +63,7 @@ class _FloatingButtonState extends State<FloatingButton>
onTapCancel: () {
_animationController.forward();
},
onTap:(){ Feedback.wrapForTap(widget.onTap, context); permission.vibrate();},
onTap: (){permission.vibrate(widget.onTap, context);},
behavior: HitTestBehavior.opaque,
child: Transform.scale(
scale: _buttonSize,

@ -88,7 +88,7 @@ class _MiniButtonState extends State<MiniButton> with TickerProviderStateMixin {
_animationController.forward();
},
// onTap: Feedback.wrapForTap(widget.onTap, context),
onTap: () =>{ widget.onTap(), permission.vibrate()},
onTap: (){permission.vibrate(widget.onTap, context);},
behavior: HitTestBehavior.opaque,
child: Transform.scale(
scale: _buttonSize,

@ -144,7 +144,7 @@ class _SecondaryButtonState extends State<SecondaryButton>
onTapCancel: () {
_animationController.forward();
},
onTap: () =>{ widget.disabled ? null : widget.onTap(), permission.vibrate()},
onTap: () =>{ widget.disabled ? null : permission.vibrate(widget.onTap, context)},
// onTap: widget.disabled?null:Feedback.wrapForTap(widget.onTap, context),
behavior: HitTestBehavior.opaque,
child: Transform.scale(

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/model/labs/lab_result.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -32,7 +33,7 @@ class LabResultWidget extends StatelessWidget {
//TODO model.getPatientLabResult(patientLabOrder: widget.patientLabOrder);
},
child: Texts(
'Flow Chart',
TranslationBase.of(context).showMoreBtn,
decoration: TextDecoration.underline,
color: Colors.blue,
),
@ -44,13 +45,13 @@ class LabResultWidget extends StatelessWidget {
inside: BorderSide(
width: 2.0, color: Colors.grey[300]),
),
children: fullData(patientLabResultList),
children: fullData(patientLabResultList,context),
),
],
),
);
}
List<TableRow> fullData(List<LabResult> labResultList) {
List<TableRow> fullData(List<LabResult> labResultList,context) {
List<TableRow> tableRow = [];
tableRow.add(
TableRow(
@ -58,7 +59,7 @@ class LabResultWidget extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
color: Color(0xff515B5D),
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic
? Radius.circular(0.0)
@ -70,7 +71,7 @@ class LabResultWidget extends StatelessWidget {
),
child: Center(
child: Texts(
'Description',
TranslationBase.of(context).description,
color: Colors.white,
),
),
@ -80,17 +81,17 @@ class LabResultWidget extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
color: Color(0xff515B5D),
color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts('Value', color: Colors.white),
child: Texts(TranslationBase.of(context).value, color: Colors.white),
),
height: 60),
),
Container(
child: Container(
decoration: BoxDecoration(
color: Color(0xff515B5D),
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic
? Radius.circular(10.0)
@ -101,7 +102,7 @@ class LabResultWidget extends StatelessWidget {
),
),
child: Center(
child: Texts('Range', color: Colors.white),
child: Texts(TranslationBase.of(context).range, color: Colors.white),
),
height: 60),
),

@ -1,3 +1,5 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
@ -5,6 +7,7 @@ import 'package:diplomaticquarterapp/widgets/others/rounded_container_widget.dar
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
class DoctorCard extends StatelessWidget {
final String name;
@ -26,22 +29,22 @@ class DoctorCard extends StatelessWidget {
this.billNo,
this.onTap,
this.onEmailTap,
this.isInOutPatient});
this.isInOutPatient});
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(
width: 0.5,
color: Theme.of(context).primaryColor,
),
borderRadius: BorderRadius.all(
Radius.circular(8.0),
),
color: Colors.white
),
border: Border.all(
width: 0.5,
color: Theme.of(context).primaryColor,
),
borderRadius: BorderRadius.all(
Radius.circular(8.0),
),
color: Colors.white),
child: InkWell(
onTap: onTap,
child: Column(
@ -50,18 +53,34 @@ class DoctorCard extends StatelessWidget {
Row(
children: <Widget>[
Container(
width: 20,
height: date == null ? 100 : 130,
width:projectViewModel.isArabic? 27:20,
height: date == null ? projectViewModel.isArabic? 170 :100 : 150,
decoration: BoxDecoration(
color: !isInOutPatient? Colors.red[900]: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(8),
bottomLeft: Radius.circular(8))),
color: !isInOutPatient
? Colors.red[900]
: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic
? Radius.circular(0)
: Radius.circular(8),
bottomLeft: projectViewModel.isArabic
? Radius.circular(0)
: Radius.circular(8),
topRight: projectViewModel.isArabic? Radius.circular(8):Radius.circular(0),
bottomRight: projectViewModel.isArabic? Radius.circular(8):Radius.circular(0),
),
),
child: RotatedBox(
quarterTurns: 3,
child: Center(
child: Text(
!isInOutPatient? 'In Patient'.toUpperCase():'OutPatient'.toUpperCase(),
!isInOutPatient
? TranslationBase.of(context)
.inPatient
.toUpperCase()
: TranslationBase.of(context)
.outpatient
.toUpperCase(),
style: TextStyle(color: Colors.white),
),
)),
@ -116,14 +135,14 @@ class DoctorCard extends StatelessWidget {
),
),
),
if(onEmailTap!=null)
InkWell(
onTap: onEmailTap,
child: Icon(
Icons.email,
color: Colors.red,
),
)
if (onEmailTap != null)
InkWell(
onTap: onEmailTap,
child: Icon(
Icons.email,
color: Colors.red,
),
)
],
),
),

@ -3,6 +3,8 @@ import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_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:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -41,139 +43,139 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return Container(
margin: EdgeInsets.all(15),
child: Column(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
return BaseView<LabsViewModel>(
onModelReady: (model) =>
model.getPatientLabResult(patientLabOrder: widget.patientLabOrder),
builder: (_, model, w) => NetworkBaseView(
baseViewModel: model,
child: Container(
margin: EdgeInsets.all(15),
child: Column(
children: <Widget>[
Container(
margin: EdgeInsets.all(15),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts('Invoice No'),
Texts(widget.billNo),
],
),
),
),
InkWell(
onTap: widget.onTap,
child: Container(
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.red[800],
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Container(
padding: EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon(
Icons.email,
color: Colors.white,
),
Texts(
'Send a copy',
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.all(15),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
)
],
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(TranslationBase.of(context).invoiceNo),
Texts(widget.billNo),
],
),
),
),
InkWell(
onTap: widget.onTap,
child: Container(
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Container(
padding: EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon(
Icons.email,
color: Colors.white,
),
Texts(
TranslationBase.of(context).sendCopy,
color: Colors.white,
)
],
),
),
),
)
],
),
),
SizedBox(
height: 10,
),
InkWell(
onTap: () {
setState(() {
_isShowMore = !_isShowMore;
});
},
child: Container(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Row(
children: <Widget>[
Expanded(child: Texts(TranslationBase.of(context).specialResult)),
Container(
width: 25,
height: 25,
decoration: BoxDecoration(
shape: BoxShape.circle, color: Theme.of(context).primaryColor),
child: Icon(
_isShowMore
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
color: Colors.white,
size: 22,
),
)
],
),
)
],
),
),
SizedBox(
height: 10,
),
InkWell(
onTap: () {
setState(() {
_isShowMore = !_isShowMore;
});
},
child: Container(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(5.0),
)),
child: Row(
children: <Widget>[
Expanded(child: Texts('Special Result')),
Container(
width: 25,
height: 25,
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.red[900]),
child: Icon(
_isShowMore
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
),
),
if (_isShowMore)
AnimatedContainer(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
size: 22,
),
)
],
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0),
)),
duration: Duration(milliseconds: 7000),
child: Container(
width: double.infinity,
child: Html(
data: widget.details ?? 'No Data',
)),
),
SizedBox(
height: 12,
),
),
),
if (_isShowMore)
AnimatedContainer(
padding: EdgeInsets.all(10.0),
margin: EdgeInsets.only(left: 5, right: 5),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: Colors.white,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0),
)),
duration: Duration(milliseconds: 7000),
child: Container(
width: double.infinity,
child: Html(
data: widget.details ?? 'No Data',
)),
),
SizedBox(
height: 12,
),
BaseView<LabsViewModel>(
onModelReady: (model) => model.getPatientLabResult(
patientLabOrder: widget.patientLabOrder),
builder: (_, model, w) => NetworkBaseView(
baseViewModel: model,
child: Container(
Container(
child: Column(
children: [
InkWell(
onTap: () {
setState(
() {
() {
_isShowMoreGeneral = !_isShowMoreGeneral;
},
);
@ -189,13 +191,13 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
)),
child: Row(
children: <Widget>[
Expanded(child: Texts('General Result')),
Expanded(child: Texts(TranslationBase.of(context).generalResult)),
Container(
width: 25,
height: 25,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.red[900]),
color: Theme.of(context).primaryColor),
child: Icon(
_isShowMoreGeneral
? Icons.keyboard_arrow_up
@ -224,11 +226,12 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
child: Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
...List.generate(
model.labResultLists.length,
(index) => LabResultWidget(
(index) => LabResultWidget(
filterName: model
.labResultLists[index].filterName,
patientLabResultList: model
@ -242,15 +245,13 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
),
],
),
),
),
)
)
],
),
],
),
],
),
),
);
}
}

@ -1,6 +1,7 @@
import 'dart:io';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
@ -39,8 +40,9 @@ class _AppDrawerState extends State<AppDrawer> {
var familyFileProvider = FamilyFilesProvider();
AuthenticatedUser user;
AuthenticatedUser mainUser;
AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
VitalSignService _vitalSignService = locator<VitalSignService>();
@override
Widget build(BuildContext context) {
@ -265,10 +267,12 @@ class _AppDrawerState extends State<AppDrawer> {
),
Expanded(
flex: 7,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
child: Padding(
padding:EdgeInsets.only(left:5, right:5),
child:Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
AppText(result.patientName, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
AppText(TranslationBase.of(context).fileno + ": " + result.iD.toString(), color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
])),
]))),
],
)))
: SizedBox();
@ -406,6 +410,8 @@ class _AppDrawerState extends State<AppDrawer> {
authenticatedUserObject.logout();
projectProvider.isLogin = false;
await authenticatedUserObject.getUser();
_vitalSignService.heightCm ="";
_vitalSignService.weightKg ="";
await sharedPref.clear();
this.user = null;
Navigator.of(context).pushNamed(HOME);

@ -107,13 +107,16 @@ class MyInAppBrowser extends InAppBrowser {
String projId,
String emailId,
String paymentMethod,
dynamic patientType,
String patientName,
dynamic patientID,
AuthenticatedUser authenticatedUser,
InAppBrowser browser) {
getDeviceToken();
this.browser = browser;
this.browser.openUrl(
url: generateURL(amount, orderDesc, transactionID, projId, emailId,
paymentMethod, authenticatedUser));
paymentMethod, patientType, patientName, patientID, authenticatedUser));
}
openBrowser(String url) {
@ -128,6 +131,9 @@ class MyInAppBrowser extends InAppBrowser {
String projId,
String emailId,
String paymentMethod,
dynamic patientType,
String patientName,
dynamic patientID,
AuthenticatedUser authUser,
[var patientData,
var servID,
@ -136,11 +142,11 @@ class MyInAppBrowser extends InAppBrowser {
String currentLanguageID = getLanguageID() == 'ar' ? 'AR' : 'EN';
String form = getForm();
if (authUser != null) {
form = form.replaceFirst("EMAIL_VALUE", authUser.emailAddress);
} else {
// if (authUser != null) {
// form = form.replaceFirst("EMAIL_VALUE", authUser.emailAddress);
// } else {
form = form.replaceFirst("EMAIL_VALUE", emailId);
}
// }
form = form.replaceFirst('AMOUNT_VALUE', amount.toString());
form = form.replaceFirst('ORDER_DESCRIPTION_VALUE', orderDesc);
@ -152,7 +158,7 @@ class MyInAppBrowser extends InAppBrowser {
form = form.replaceFirst('PATIENT_OUT_SA',
authUser.outSA == 0 ? false.toString() : true.toString());
form = form.replaceFirst('PATIENT_TYPE_ID',
patientData == null ? authUser.patientType.toString() : "1");
patientData == null ? patientType.toString() : "1");
// form = form.replaceFirst('DEVICE_TOKEN', this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false) + "," + this.cs.sharedService.getSharedData(AuthenticationService.APNS_TOKEN, false));
// form = form.replaceFirst('LATITUDE_VALUE', this.cs.sharedService.getSharedData('userLat', false));
@ -172,13 +178,13 @@ class MyInAppBrowser extends InAppBrowser {
form = form.replaceFirst('LIVE_SERVICE_ID', "2");
}
if (patientData == null) {
form = form.replaceFirst('CUSTNAME_VALUE', authUser.firstName);
form = form.replaceFirst('CUSTID_VALUE', authUser.patientID.toString());
} else {
form = form.replaceFirst('CUSTNAME_VALUE', patientData.depositorName);
form = form.replaceFirst('CUSTID_VALUE', patientData.fileNumber);
}
// if (patientData == null) {
form = form.replaceFirst('CUSTNAME_VALUE', patientName);
form = form.replaceFirst('CUSTID_VALUE', patientID.toString());
// } else {
// form = form.replaceFirst('CUSTNAME_VALUE', patientData.depositorName);
// form = form.replaceFirst('CUSTID_VALUE', patientData.fileNumber);
// }
form = form.replaceFirst('LATITUDE_VALUE', "24.708488");
form = form.replaceFirst('LONGITUDE_VALUE', "46.665925");

@ -152,7 +152,7 @@ dependencies:
after_layout: ^1.0.7
twilio_programmable_video: ^0.5.0+3
flutter_tts: ^1.2.6
vibration: ^1.7.2
speech_to_text:
path: speech_to_text

Loading…
Cancel
Save