Merge branch 'get_pending_orders' into 'development'

Get pending orders

See merge request Cloud_Solution/doctor_app_flutter!882
merge-requests/883/merge
Elham Ali 3 years ago
commit c4617250ae

@ -24,14 +24,14 @@ class ProfileReqModel {
{this.projectID, {this.projectID,
this.clinicID, this.clinicID,
this.doctorID, this.doctorID,
this.isRegistered =true, this.isRegistered = true,
this.license, this.license,
this.languageID, this.languageID,
this.stamp = '2020-04-26T09:32:18.317Z', this.stamp = '2020-04-26T09:32:18.317Z',
this.iPAdress='11.11.11.11', this.iPAdress = '11.11.11.11',
// this.versionID=5.5, // this.versionID=5.5,
this.channel=9, this.channel = 9,
this.sessionID='E2bsEeYEJo', this.sessionID = 'E2bsEeYEJo',
this.tokenID, this.tokenID,
this.isLoginForDoctorApp = true}); this.isLoginForDoctorApp = true});

@ -53,6 +53,7 @@ class _RegisterPatientPageState extends State<RegisterPatientPage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
///TODO Elham* Add Translation ///TODO Elham* Add Translation
return BaseView<PatientRegistrationViewModel>( return BaseView<PatientRegistrationViewModel>(
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(

@ -18,14 +18,15 @@ import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dar
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/country_textfield_custom.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class RegisterSearchPatientPage extends StatefulWidget { class RegisterSearchPatientPage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
final PatientRegistrationViewModel model; final PatientRegistrationViewModel model;
const RegisterSearchPatientPage(
const RegisterSearchPatientPage({Key key, this.changePageViewIndex, this.model}) {Key key, this.changePageViewIndex, this.model})
: super(key: key); : super(key: key);
@override @override
@ -36,23 +37,42 @@ class RegisterSearchPatientPage extends StatefulWidget {
class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> { class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
String countryError; String countryError;
dynamic _selectedCountry; dynamic _selectedCountry;
bool isSubmitted = false;
List<dynamic> countryList;
dynamic country;
TextEditingController _phoneController = TextEditingController(text: "508079569"); bool isSubmitted = false;
TextEditingController _phoneController =
TextEditingController(text: "508079569");
TextEditingController _phoneCode = TextEditingController(text: "966"); TextEditingController _phoneCode = TextEditingController(text: "966");
String phoneError; String phoneError;
TextEditingController _idController = TextEditingController(text: "1062938285"); TextEditingController _idController =
TextEditingController(text: "1062938285");
String idError; String idError;
DateTime _birthDate; DateTime _birthDate;
String birthdateError; String birthdateError;
@override
void initState() {
_phoneCode.text = "";
countryList = List();
dynamic ksaCountry = {"id": 967, "name": "Saudi Arabia"};
dynamic uaeCountry = {"id": 971, "name": "United Arab Emirates"};
countryList.add(ksaCountry);
countryList.add(uaeCountry);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
/// TODO Elham* add transaltion /// TODO Elham* add transaltion
return AppScaffold( return AppScaffold(
@ -77,15 +97,19 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
AppTextFieldCustom( CountryTextField(
height: screenSize.height * 0.075, elementList: countryList,
element: country,
elementError: countryError,
keyName: 'name',
keyId: 'id',
okFunction: (selectedValue) {
setState(() {
country = selectedValue;
_phoneCode.text = selectedValue['id'].toString();
});
},
hintText: "Country", hintText: "Country",
isTextFieldHasSuffix: true,
validationError: countryError,
dropDownText: _selectedCountry != null
? _selectedCountry['nameEn']
: "Saudi Arabia",
enabled: false,
), ),
SizedBox( SizedBox(
height: 10, height: 10,
@ -102,16 +126,18 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
inputType: TextInputType.phone, inputType: TextInputType.phone,
controller: _phoneCode, controller: _phoneCode,
validationError: phoneError, validationError: phoneError,
enabled: false,
), ),
), ),
if(_phoneController if (_phoneController.text.isEmpty && isSubmitted)
.text.isEmpty && SizedBox(
isSubmitted height: 35,
) )
SizedBox(height: 35,)
], ],
), ),
SizedBox(width: 10,), SizedBox(
width: 10,
),
Expanded( Expanded(
child: Container( child: Container(
// width: MediaQuery.of(context).size.width*0.7, // width: MediaQuery.of(context).size.width*0.7,
@ -120,12 +146,10 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
hintText: "Phone Number", hintText: "Phone Number",
inputType: TextInputType.phone, inputType: TextInputType.phone,
controller: _phoneController, controller: _phoneController,
validationError: _phoneController validationError:
.text.isEmpty && _phoneController.text.isEmpty && isSubmitted
isSubmitted ? TranslationBase.of(context).emptyMessage
? TranslationBase.of(context) : null,
.emptyMessage
: null,
), ),
), ),
), ),
@ -139,11 +163,8 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
hintText: "ID Number", hintText: "ID Number",
inputType: TextInputType.phone, inputType: TextInputType.phone,
controller: _idController, controller: _idController,
validationError: _idController validationError: _idController.text.isEmpty && isSubmitted
.text.isEmpty && ? TranslationBase.of(context).emptyMessage
isSubmitted
? TranslationBase.of(context)
.emptyMessage
: null, : null,
), ),
SizedBox( SizedBox(
@ -165,10 +186,8 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
: null, : null,
enabled: false, enabled: false,
isTextFieldHasSuffix: true, isTextFieldHasSuffix: true,
validationError: _birthDate == null && validationError: _birthDate == null && isSubmitted
isSubmitted ? TranslationBase.of(context).emptyMessage
? TranslationBase.of(context)
.emptyMessage
: null, : null,
suffixIcon: IconButton( suffixIcon: IconButton(
icon: Icon( icon: Icon(
@ -235,42 +254,48 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
setState(() { setState(() {
isSubmitted = true; isSubmitted = true;
}); });
if(isFormValid()) { if (country == null) {
countryError = TranslationBase.of(context).fieldRequired;
} else {
countryError = null;
}
if (isFormValid()) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
CheckPatientForRegistrationModel CheckPatientForRegistrationModel
checkPatientForRegistrationModel = checkPatientForRegistrationModel =
CheckPatientForRegistrationModel( CheckPatientForRegistrationModel(
patientIdentificationID: patientIdentificationID:
int.parse(_idController.text), int.parse(_idController.text),
patientMobileNumber: patientMobileNumber:
int.parse(_phoneController.text), int.parse(_phoneController.text),
zipCode: _phoneCode.text, zipCode: _phoneCode.text,
isHijri: 0, isHijri: 0,
patientID: 0, patientID: 0,
isRegister: false, isRegister: false,
isDentalAllowedBackend: false, isDentalAllowedBackend: false,
patientOutSA: 0, patientOutSA: 0,
generalid: GENERAL_ID, generalid: GENERAL_ID,
dOB: dOB:
"${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "yyyy/MM/dd")}"); "${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "yyyy/MM/dd")}");
await widget.model.checkPatientForRegistration( await widget.model.checkPatientForRegistration(
checkPatientForRegistrationModel); checkPatientForRegistrationModel);
GetPatientInfoRequestModel getPatientInfoRequestModel = GetPatientInfoRequestModel getPatientInfoRequestModel =
GetPatientInfoRequestModel( GetPatientInfoRequestModel(
//TODO Elham* this return the static to dynamic //TODO Elham* this return the static to dynamic
patientIdentificationID:"1062938285", //_idController.text, //patientIdentificationID:"1062938285", _idController.text,
isHijri: 0, isHijri: 0,
isDentalAllowedBackend: false, isDentalAllowedBackend: false,
patientOutSA: 0, patientOutSA: 0,
generalid: GENERAL_ID, generalid: GENERAL_ID,
sessionID: null, sessionID: null,
dOB:"31/07/1988",//"${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "dd/MM/yyyy")}" dOB:
"31/07/1988", //"${AppDateUtils.convertStringToDateFormat(_birthDate.toString(), "dd/MM/yyyy")}"
); );
if (widget.model.state == ViewState.ErrorLocal) { if (widget.model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(widget.model.error); Helpers.showErrorToast(widget.model.error);
} else { } else {
await widget.model.getPatientInfo(getPatientInfoRequestModel); await widget.model
.getPatientInfo(getPatientInfoRequestModel);
if (widget.model.state == ViewState.ErrorLocal) { if (widget.model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(widget.model.error); Helpers.showErrorToast(widget.model.error);
} else { } else {
@ -279,7 +304,6 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
} }
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
} }
}, },
), ),
), ),
@ -290,14 +314,17 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
); );
} }
isFormValid() { isFormValid() {
if(_phoneController.text!=null &&_phoneController.text.isNotEmpty&& _idController.text!=null &&_idController.text.isNotEmpty &&_birthDate!=null) { if (_phoneController.text != null &&
_phoneController.text.isNotEmpty &&
_idController.text != null &&
_idController.text.isNotEmpty &&
_birthDate != null) {
return true; return true;
} }
return false; return false;
} }
Future _selectDate(BuildContext context, DateTime dateTime, Future _selectDate(BuildContext context, DateTime dateTime,
Function(DateTime picked) updateDate) async { Function(DateTime picked) updateDate) async {
final DateTime picked = await showDatePicker( final DateTime picked = await showDatePicker(

@ -105,27 +105,33 @@ class _ActivationPageState extends State<ActivationPage> {
children: [ children: [
Row( Row(
children: [ children: [
Image.asset( Padding(
"assets/images/verify-sms.png", padding: EdgeInsets.symmetric(
height: MediaQuery.of(context) horizontal: 10),
.size child: Image.asset(
.height * "assets/images/verify-sms.png",
0.15, height: MediaQuery.of(context)
width: MediaQuery.of(context) .size
.size .height *
.width * 0.15,
0.15, width: MediaQuery.of(context)
.size
.width *
0.15,
),
), ),
], ],
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
AppText( Center(
"Verify through SMS", child: AppText(
fontSize: 14, "Verify through SMS",
color: Color(0xFF2E303A), fontSize: 14,
fontWeight: FontWeight.bold, color: Color(0xFF2E303A),
fontWeight: FontWeight.bold,
),
) )
], ],
), ),
@ -155,27 +161,33 @@ class _ActivationPageState extends State<ActivationPage> {
children: [ children: [
Row( Row(
children: [ children: [
Image.asset( Padding(
"assets/images/verify-whtsapp.png", padding: EdgeInsets.symmetric(
height: MediaQuery.of(context) horizontal: 10.0),
.size child: Image.asset(
.height * "assets/images/verify-whtsapp.png",
0.15, height: MediaQuery.of(context)
width: MediaQuery.of(context) .size
.size .height *
.width * 0.15,
0.15, width: MediaQuery.of(context)
.size
.width *
0.15,
),
), ),
], ],
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
AppText( Center(
"Verify through WhatsApp", child: AppText(
fontSize: 14, "Verify through WhatsApp",
color: Color(0xFF2E303A), fontSize: 14,
fontWeight: FontWeight.bold, color: Color(0xFF2E303A),
fontWeight: FontWeight.bold,
),
) )
], ],
), ),
@ -445,11 +457,12 @@ class _ActivationPageState extends State<ActivationPage> {
fontSize: 2.0, fontSize: 2.0,
onPressed: () async { onPressed: () async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await widget.model.checkActivationCode("${digit1.text}${digit2.text}${digit3.text}${digit4.text}"); await widget.model.checkActivationCode(
"${digit1.text}${digit2.text}${digit3.text}${digit4.text}");
if (widget.model.state == ViewState.ErrorLocal) { if (widget.model.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(widget.model.error); Helpers.showErrorToast(widget.model.error);
//TODO Elham* remove this //TODO Elham* remove this
widget.changePageViewIndex(2); //widget.changePageViewIndex(2);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
} else { } else {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
@ -473,7 +486,10 @@ class _ActivationPageState extends State<ActivationPage> {
Helpers.showErrorToast(widget.model.error); Helpers.showErrorToast(widget.model.error);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// TODO Elham* retuen the else // TODO Elham* retuen the else
// } else { setState(() {
isSendOtp = false;
});
} else {
setState(() { setState(() {
isSendOtp = true; isSendOtp = true;
}); });

@ -0,0 +1,77 @@
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class CountryTextField extends StatefulWidget {
final dynamic element;
final String elementError;
final List<dynamic> elementList;
final String keyName;
final String keyId;
final String hintText;
final double width;
final Function(dynamic) okFunction;
CountryTextField(
{Key key,
@required this.element,
@required this.elementError,
this.width,
this.elementList,
this.keyName,
this.keyId,
this.hintText,
this.okFunction})
: super(key: key);
@override
_CountryTextfieldState createState() => _CountryTextfieldState();
}
class _CountryTextfieldState extends State<CountryTextField> {
@override
Widget build(BuildContext context) {
return Container(
width: widget.width ?? null,
child: InkWell(
onTap: widget.elementList != null
? () {
Helpers.hideKeyboard(context);
ListSelectDialog dialog = ListSelectDialog(
list: widget.elementList,
attributeName: '${widget.keyName}',
attributeValueId: widget.elementList.length == 1
? widget.elementList[0]['${widget.keyId}']
: '${widget.keyId}',
okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) =>
widget.okFunction(selectedValue),
);
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return dialog;
},
);
}
: null,
child: AppTextFieldCustom(
hintText: widget.hintText,
dropDownText: widget.elementList.length == 1
? widget.elementList[0]['${widget.keyName}']
: widget.element != null
? widget.element['${widget.keyName}']
: null,
isTextFieldHasSuffix: true,
validationError:
widget.elementList.length != 1 ? widget.elementError : null,
enabled: false,
),
),
);
}
}
Loading…
Cancel
Save