@ -8,6 +8,7 @@ import 'package:diplomaticquarterapp/locator.dart';
import ' package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart ' ;
import ' package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart ' as checkActivation ;
import ' package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart ' as checkActivation ;
import ' package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/countries_list.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/register_info_response.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/register_info_response.dart ' ;
import ' package:diplomaticquarterapp/pages/landing/landing_page.dart ' ;
import ' package:diplomaticquarterapp/pages/landing/landing_page.dart ' ;
import ' package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doctor.dart ' ;
import ' package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doctor.dart ' ;
@ -45,21 +46,30 @@ class RegisterInfo extends StatefulWidget {
class _RegisterInfo extends State < RegisterInfo > {
class _RegisterInfo extends State < RegisterInfo > {
final authService = new AuthProvider ( ) ;
final authService = new AuthProvider ( ) ;
final sharedPref = new AppSharedPreferences ( ) ;
final sharedPref = new AppSharedPreferences ( ) ;
RegisterInfoResponse registerInfo ;
RegisterInfoResponse registerInfo = RegisterInfoResponse ( ) ;
bool isLoading ;
bool isLoading ;
int page ;
int page ;
final List < Location > locationList = [
final List < Location > locationList = [
new Location ( name: ' KSA ' , value: ' 1 ' ),
new Location ( name: ' KSA ' , value: ' 1 ' , nameAr: " السعودية " ),
new Location ( name: ' Dubai ' , value: ' 2 ' ),
new Location ( name: ' Dubai ' , value: ' 2 ' , nameAr: " دبي " ),
] ;
] ;
String language = ' 1 ' ;
String language = ' 1 ' ;
var registerd_data ;
CheckPatientAuthenticationReq registerd_data ;
final List < Language > languageList = [
final List < Language > languageList = [
new Language ( name: ' English ' , value: ' 2 ' ) ,
new Language ( name: ' English ' , value: ' 2 ' , nameAr: " إنجليزي " ) ,
new Language ( name: ' Arabic ' , value: ' 1 ' ) ,
new Language ( name: ' Arabic ' , value: ' 1 ' , nameAr: " عربي " ) ,
] ;
final List < Language > genderList = [
new Language ( name: ' Male ' , value: ' M ' , nameAr: " ذكر " ) ,
new Language ( name: ' Female ' , value: ' F ' , nameAr: " أنثى " ) ,
] ;
final List < Language > maritalList = [
new Language ( name: ' Married ' , value: ' M ' , nameAr: " متزوج " ) ,
new Language ( name: ' Single ' , value: ' S ' , nameAr: " اعزب " ) ,
new Language ( name: ' Divorce ' , value: ' D ' , nameAr: " الطلاق " ) ,
] ;
] ;
String email = ' ' ;
String email = ' ' ;
List < CountriesLists > countriesList = [ ] ;
ToDoCountProviderModel toDoProvider ;
ToDoCountProviderModel toDoProvider ;
String location = ' 1 ' ;
String location = ' 1 ' ;
AuthenticatedUserObject authenticatedUserObject = locator < AuthenticatedUserObject > ( ) ;
AuthenticatedUserObject authenticatedUserObject = locator < AuthenticatedUserObject > ( ) ;
@ -67,16 +77,22 @@ class _RegisterInfo extends State<RegisterInfo> {
ProjectViewModel projectViewModel ;
ProjectViewModel projectViewModel ;
AppointmentRateViewModel appointmentRateViewModel = locator < AppointmentRateViewModel > ( ) ;
AppointmentRateViewModel appointmentRateViewModel = locator < AppointmentRateViewModel > ( ) ;
bool isDubai = false ;
RegisterInfoResponse data = RegisterInfoResponse ( ) ;
CheckPatientAuthenticationReq data2 ;
String gender = ' M ' ;
String maritalStatus = ' M ' ;
String nationality = ' SAU ' ;
@ override
@ override
void initState ( ) {
void initState ( ) {
if ( widget . page = = 1 ) {
getCountries ( ) ;
}
WidgetsBinding . instance . addPostFrameCallback ( ( timeStamp ) {
WidgetsBinding . instance . addPostFrameCallback ( ( timeStamp ) {
getRegisterInfo ( ) ;
getRegisterInfo ( ) ;
} ) ;
} ) ;
setState ( ( ) {
page = widget . page ;
page = widget . page ;
} ) ;
super . initState ( ) ;
super . initState ( ) ;
}
}
@ -105,169 +121,279 @@ class _RegisterInfo extends State<RegisterInfo> {
] ,
] ,
) ,
) ,
SizedBox ( height: 20 ) ,
SizedBox ( height: 20 ) ,
registerInfo ! = null & & page = = 1
( isDubai & & page = = 1 )
? Column (
? Column (
children: [
children: [
SizedBox ( height: 20 ) ,
SizedBox ( height: 20 ) ,
getnameField ( TranslationBase . of ( context ) . identificationNumber , registerInfo . idNumber , TranslationBase . of ( context ) . firstName ,
getnameField ( TranslationBase . of ( context ) . identificationNumber , registerd_data . patientIdentificationID , TranslationBase . of ( context ) . mobileNumber ,
registerInfo . firstNameEn = = ' - ' ? registerInfo . firstNameAr : registerInfo . firstNameEn ) ,
registerd_data . patientMobileNumber . toString ( ) ) ,
SizedBox ( height: 20 ) ,
/ / SizedBox ( height: 20 ) ,
getnameField ( TranslationBase . of ( context ) . middleName , registerInfo . secondNameEn = = ' - ' ? registerInfo . secondNameEn : registerInfo . secondNameEn ,
projectViewModel . isArabic
TranslationBase . of ( context ) . lastName , registerInfo . lastNameEn = = ' - ' ? registerInfo . lastNameEn : registerInfo . lastNameEn ) ,
? getnameField (
' ' ,
inputWidget ( " First Name " , " First Name English " , ' fNameEn ' ) ,
' ' ,
inputWidget ( " Last Name " , " Last Name English " , ' lNameEn ' ) ,
)
: SizedBox (
height: 0 ,
) ,
getnameField (
' ' ,
inputWidget ( TranslationBase . of ( context ) . firstName , TranslationBase . of ( context ) . firstName , ' fName ' ) ,
' ' ,
inputWidget ( TranslationBase . of ( context ) . middleName , TranslationBase . of ( context ) . middleName , ' sName ' ) ,
) ,
getnameField (
' ' ,
inputWidget ( TranslationBase . of ( context ) . lastName , TranslationBase . of ( context ) . lastName , ' lName ' ) ,
TranslationBase . of ( context ) . gender ,
Container (
height: 20 ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: gender ,
hint: Text ( TranslationBase . of ( context ) . gender ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
gender = value ;
registerInfo . gender = value ;
} )
} ,
items: genderList . map < DropdownMenuItem < String > > ( ( Language value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text (
projectViewModel . isArabic = = 1 ? value . nameAr : value . name ,
) ,
) ;
} ) . toList ( ) ) ) ) ,
) ,
SizedBox ( height: 20 ) ,
SizedBox ( height: 20 ) ,
getnameField (
getnameField (
TranslationBase . of ( context ) . gender ,
registerInfo . maritalStatusCode = = ' U '
? ' Unknown '
: registerInfo . maritalStatusCode = = ' M '
? ' Male '
: ' Female ' ,
TranslationBase . of ( context ) . maritalStatus ,
TranslationBase . of ( context ) . maritalStatus ,
registerInfo . maritalStatus ) ,
Container (
SizedBox ( height: 20 ) ,
height: 18 ,
getnameField ( TranslationBase . of ( context ) . nationality , registerInfo . nationality , TranslationBase . of ( context ) . mobileNumber , registerd_data . patientMobileNumber . toString ( ) ) ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: maritalStatus ,
hint: Text ( TranslationBase . of ( context ) . maritalStatus ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
maritalStatus = value ;
registerInfo . maritalStatusCode = value ;
} )
} ,
items: maritalList . map < DropdownMenuItem < String > > ( ( Language value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text (
projectViewModel . isArabic = = 1 ? value . nameAr : value . name ,
) ,
) ;
} ) . toList ( ) ) ) ) ,
TranslationBase . of ( context ) . nationality ,
Container (
height: 22 ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: nationality ,
hint: Text ( TranslationBase . of ( context ) . nationality ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
nationality = value ;
registerInfo . nationalityCode = value ;
} )
} ,
items: countriesList . map < DropdownMenuItem < String > > ( ( CountriesLists value ) {
return DropdownMenuItem < String > (
value: value . iD ,
child: Text (
value . name ,
) ,
) ;
} ) . toList ( ) ) ) ) ) ,
SizedBox ( height: 20 ) ,
SizedBox ( height: 20 ) ,
getnameField ( TranslationBase . of ( context ) . dateOfBirth , registerInfo . dateOfBirth , " " , " " ) ,
getnameField ( TranslationBase . of ( context ) . dateOfBirth , register d_data. dob , " " , " " ) ,
SizedBox ( height: 20 ) ,
SizedBox ( height: 20 ) ,
] ,
] ,
)
)
: registerInfo ! = null & & widget . page = = 2
: ( registerInfo . healthId ! = null & & page = = 1 )
? Column (
? Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
children: < Widget > [
SizedBox ( height: 20 ) ,
Container (
getnameField ( TranslationBase . of ( context ) . identificationNumber , registerInfo . idNumber , TranslationBase . of ( context ) . firstName ,
width: double . infinity ,
registerInfo . firstNameEn = = ' - ' ? registerInfo . firstNameAr : registerInfo . firstNameEn ) ,
decoration: containerRadius ( Colors . white , 12 ) ,
SizedBox ( height: 20 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 25 ) ,
getnameField ( TranslationBase . of ( context ) . middleName , registerInfo . secondNameEn = = ' - ' ? registerInfo . secondNameEn : registerInfo . secondNameEn ,
child: Row ( children: [
TranslationBase . of ( context ) . lastName , registerInfo . lastNameEn = = ' - ' ? registerInfo . lastNameEn : registerInfo . lastNameEn ) ,
Flexible (
SizedBox ( height: 20 ) ,
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
getnameField (
Text (
TranslationBase . of ( context ) . gender ,
TranslationBase . of ( context ) . prefferedLanguage ,
registerInfo . maritalStatusCode = = ' U '
style: TextStyle (
? ' Unknown '
fontSize: 11 ,
: registerInfo . maritalStatusCode = = ' M '
letterSpacing: - 0.44 ,
? ' Male '
fontWeight: FontWeight . w600 ,
: ' Female ' ,
) ,
TranslationBase . of ( context ) . maritalStatus ,
) ,
registerInfo . maritalStatus ) ,
Container (
SizedBox ( height: 20 ) ,
height: 18 ,
getnameField ( TranslationBase . of ( context ) . nationality , registerInfo . nationality , TranslationBase . of ( context ) . mobileNumber , registerd_data . patientMobileNumber . toString ( ) ) ,
child: DropdownButtonHideUnderline (
SizedBox ( height: 20 ) ,
child: DropdownButton (
getnameField ( TranslationBase . of ( context ) . dateOfBirth , registerInfo . dateOfBirth , " " , " " ) ,
isExpanded: true ,
SizedBox ( height: 20 ) ,
value: language ,
hint: Text ( TranslationBase . of ( context ) . prefferedLanguage ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
language = value ;
} )
} ,
items: languageList . map < DropdownMenuItem < String > > ( ( Language value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text ( value . name ) ,
) ;
} ) . toList ( ) ) ) )
] ) )
] ) ) ,
SizedBox (
height: 20 ,
) ,
Container (
width: double . infinity ,
decoration: containerRadius ( Colors . white , 12 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 25 ) ,
child: Row ( children: [
Flexible (
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
Text (
TranslationBase . of ( context ) . selectLocation ,
style: TextStyle (
fontSize: 11 ,
letterSpacing: - 0.44 ,
fontWeight: FontWeight . w600 ,
) ,
) ,
Container (
height: 18 ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: location ,
hint: Text ( TranslationBase . of ( context ) . selectLocation ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
location = value ;
} )
} ,
items: locationList . map < DropdownMenuItem < String > > ( ( Location value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text (
value . name ,
) ,
) ;
} ) . toList ( ) ) ) )
] ) )
] ) ) ,
SizedBox (
height: 20 ,
) ,
Container (
width: double . infinity ,
decoration: containerRadius ( Colors . white , 12 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 12 ) ,
margin: EdgeInsets . only ( bottom: 0 ) ,
child: Row ( children: [
Flexible (
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
Text (
TranslationBase . of ( context ) . email ,
style: TextStyle (
fontSize: 11 ,
letterSpacing: - 0.44 ,
fontWeight: FontWeight . w600 ,
) ,
) ,
Container (
child: TextField (
onChanged: ( value ) {
setState ( ( ) {
email = value ;
} ) ;
} ,
style: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
decoration: InputDecoration (
isDense: true ,
hintStyle: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff575757 ) ,
letterSpacing: - 0.56 ,
) ,
prefixIconConstraints: BoxConstraints ( minWidth: 50 ) ,
contentPadding: EdgeInsets . zero ,
border: InputBorder . none ,
focusedBorder: InputBorder . none ,
enabledBorder: InputBorder . none ,
) ,
) )
] ) )
] ) ) ,
] ,
] ,
)
)
: SizedBox ( ) ,
: widget . page = = 2
? Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: < Widget > [
Container (
width: double . infinity ,
decoration: containerRadius ( Colors . white , 12 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 25 ) ,
child: Row ( children: [
Flexible (
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
Text (
TranslationBase . of ( context ) . prefferedLanguage ,
style: TextStyle (
fontSize: 11 ,
letterSpacing: - 0.44 ,
fontWeight: FontWeight . w600 ,
) ,
) ,
Container (
height: 18 ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: language ,
hint: Text ( TranslationBase . of ( context ) . prefferedLanguage ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
language = value ;
} )
} ,
items: languageList . map < DropdownMenuItem < String > > ( ( Language value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text (
projectViewModel . isArabic = = 1 ? value . nameAr : value . name ,
) ,
) ;
} ) . toList ( ) ) ) )
] ) )
] ) ) ,
SizedBox (
height: 20 ,
) ,
Container (
width: double . infinity ,
decoration: containerRadius ( Colors . white , 12 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 25 ) ,
child: Row ( children: [
Flexible (
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
Text (
TranslationBase . of ( context ) . selectLocation ,
style: TextStyle (
fontSize: 11 ,
letterSpacing: - 0.44 ,
fontWeight: FontWeight . w600 ,
) ,
) ,
Container (
height: 18 ,
child: DropdownButtonHideUnderline (
child: DropdownButton (
isExpanded: true ,
value: location ,
hint: Text ( TranslationBase . of ( context ) . selectLocation ) ,
iconSize: 40 ,
elevation: 16 ,
onChanged: ( value ) = > {
setState ( ( ) {
location = value ;
} )
} ,
items: locationList . map < DropdownMenuItem < String > > ( ( Location value ) {
return DropdownMenuItem < String > (
value: value . value ,
child: Text (
projectViewModel . isArabic = = 1 ? value . nameAr : value . name ,
) ,
) ;
} ) . toList ( ) ) ) )
] ) )
] ) ) ,
SizedBox (
height: 20 ,
) ,
Container (
width: double . infinity ,
decoration: containerRadius ( Colors . white , 12 ) ,
padding: EdgeInsets . only ( left: 10 , right: 10 , top: 5 , bottom: 12 ) ,
margin: EdgeInsets . only ( bottom: 0 ) ,
child: Row ( children: [
Flexible (
child: Column ( crossAxisAlignment: CrossAxisAlignment . start , children: [
Text (
TranslationBase . of ( context ) . email ,
style: TextStyle (
fontSize: 11 ,
letterSpacing: - 0.44 ,
fontWeight: FontWeight . w600 ,
) ,
) ,
Container (
child: TextField (
keyboardType: TextInputType . emailAddress ,
onChanged: ( value ) {
setState ( ( ) {
email = value ;
} ) ;
} ,
style: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
decoration: InputDecoration (
isDense: true ,
hintStyle: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff575757 ) ,
letterSpacing: - 0.56 ,
) ,
prefixIconConstraints: BoxConstraints ( minWidth: 50 ) ,
contentPadding: EdgeInsets . zero ,
border: InputBorder . none ,
focusedBorder: InputBorder . none ,
enabledBorder: InputBorder . none ,
) ,
) )
] ) )
] ) ) ,
] ,
)
: SizedBox ( ) ,
] ) ,
] ) ,
) ,
) ,
bottomSheet: Container (
bottomSheet: Container (
@ -289,24 +415,40 @@ class _RegisterInfo extends State<RegisterInfo> {
child: DefaultButton ( page = = 1 ? TranslationBase . of ( context ) . next : TranslationBase . of ( context ) . register , ( ) {
child: DefaultButton ( page = = 1 ? TranslationBase . of ( context ) . next : TranslationBase . of ( context ) . register , ( ) {
nextPage ( ) ;
nextPage ( ) ;
page = = 1 ? locator < GAnalytics > ( ) . loginRegistration . registration_personal_info ( ) : locator < GAnalytics > ( ) . loginRegistration . registration_patient_info ( ) ;
page = = 1 ? locator < GAnalytics > ( ) . loginRegistration . registration_personal_info ( ) : locator < GAnalytics > ( ) . loginRegistration . registration_patient_info ( ) ;
} , textColor: Colors . white , color: isValid ( ) = = true && page = = 2 | | page = = 1 ? Color ( 0xff359846 ) : Colors . grey ) ) ,
} , textColor: Colors . white , color: isValid ( ) = = true ? Color ( 0xff359846 ) : Colors . grey ) ) ,
) ,
) ,
] ,
] ,
) ) ) ;
) ) ) ;
}
}
nextPage ( ) {
nextPage ( ) async {
if ( page = = 1 ) {
if ( page = = 1 ) {
setState ( ( ) {
if ( isDubai ) {
await setRegisterData ( ) ;
widget . changePageViewIndex ( 2 ) ;
widget . changePageViewIndex ( 2 ) ;
} ) ;
} else {
widget . changePageViewIndex ( 2 ) ;
}
} else {
} else {
registerNow ( ) ;
registerNow ( ) ;
}
}
}
}
setRegisterData ( ) async {
registerInfo . gender = gender ;
registerInfo . maritalStatusCode = maritalStatus ;
registerInfo . nationalityCode = nationality ;
projectViewModel . setRegisterData ( registerInfo ) ;
/ / await sharedPref . setObject ( REGISTER_INFO_DUBAI , registerInfo ) ;
}
registerNow ( ) {
registerNow ( ) {
dynamic request = getTempUserRequest ( ) ;
dynamic request ;
if ( isDubai )
request = getTempUserRequestDubai ( ) ;
else
request = getTempUserRequest ( ) ;
GifLoaderDialogUtils . showMyDialog ( context ) ;
GifLoaderDialogUtils . showMyDialog ( context ) ;
dynamic res ;
dynamic res ;
this
this
@ -374,14 +516,17 @@ class _RegisterInfo extends State<RegisterInfo> {
}
}
getRegisterInfo ( ) async {
getRegisterInfo ( ) async {
var data = RegisterInfoResponse . fromJson ( await sharedPref . getObject ( NHIC_DATA ) ) ;
if ( await sharedPref . getObject ( NHIC_DATA ) ! = null ) {
data = RegisterInfoResponse . fromJson ( await sharedPref . getObject ( NHIC_DATA ) ) ;
this . registerInfo = data ;
}
if ( await sharedPref . getObject ( REGISTER_DATA_FOR_LOGIIN ) ! = null ) {
if ( await sharedPref . getObject ( REGISTER_DATA_FOR_LOGIIN ) ! = null ) {
var data2 = CheckPatientAuthenticationReq . fromJson ( await sharedPref . getObject ( REGISTER_DATA_FOR_LOGIIN ) ) ;
data2 = CheckPatientAuthenticationReq . fromJson ( await sharedPref . getObject ( REGISTER_DATA_FOR_LOGIIN ) ) ;
setState ( ( ) {
setState ( ( ) {
this . registerInfo = data ;
this . registerd_data = data2 ;
this . registerd_data = data2 ;
isDubai = data2 . patientOutSA = = 1 ? true : false ;
if ( isDubai ) location = ' 2 ' ;
} ) ;
} ) ;
}
}
}
}
@ -424,8 +569,54 @@ class _RegisterInfo extends State<RegisterInfo> {
} ;
} ;
}
}
getTempUserRequestDubai ( ) {
DateFormat dateFormat = DateFormat ( " mm/dd/yyyy " ) ;
registerInfo = projectViewModel . registerInfo ;
print ( dateFormat . parse ( registerd_data . dob ) ) ;
var hDate = new HijriCalendar . fromDate ( dateFormat . parse ( registerd_data . dob ) ) ;
var date = hDate . toString ( ) ;
final DateFormat dateFormat1 = DateFormat ( ' MM/dd/yyyy ' ) ;
final DateFormat dateFormat2 = DateFormat ( ' dd/MM/yyyy ' ) ;
return {
" Patientobject " : {
" TempValue " : true ,
" PatientIdentificationType " : registerd_data . patientIdentificationID . substring ( 0 , 1 ) = = " 1 " ? 1 : 2 ,
" PatientIdentificationNo " : registerd_data . patientIdentificationID ,
" MobileNumber " : registerd_data . patientMobileNumber ,
" PatientOutSA " : ( registerd_data . zipCode = = ' 966 ' | | registerd_data . zipCode = = ' +966 ' ) ? 0 : 1 ,
" FirstNameN " : registerInfo . firstNameAr ? ? " " ,
" FirstName " : registerInfo . firstNameEn ? ? " " ,
" MiddleNameN " : registerInfo . secondNameAr ? ? " . " ,
" MiddleName " : registerInfo . secondNameEn ? ? " . " ,
" LastNameN " : registerInfo . lastNameAr ? ? " " ,
" LastName " : registerInfo . lastNameEn ? ? " " ,
" StrDateofBirth " : dateFormat1 . format ( dateFormat2 . parse ( registerd_data . dob ) ) ,
" DateofBirth " : DateUtil . convertISODateToJsonDate ( registerd_data . dob . replaceAll ( ' / ' , ' - ' ) ) ,
" Gender " : registerInfo . gender = = ' M ' ? 1 : 2 ,
" NationalityID " : registerInfo . nationalityCode ,
" eHealthIDField " : null ,
" DateofBirthN " : date ,
" EmailAddress " : email ,
" SourceType " : location ,
" PreferredLanguage " : registerd_data . languageID . toString ( ) ,
" Marital " : registerInfo . maritalStatusCode = = ' U '
? ' 0 '
: registerInfo . maritalStatusCode = = ' M '
? ' 1 '
: ' 2 ' ,
} ,
" PatientIdentificationID " : registerd_data . patientIdentificationID ,
" PatientMobileNumber " : registerd_data . patientMobileNumber . toString ( ) [ 0 ] = = ' 0 ' ? registerd_data . patientMobileNumber : ' 0 ' + registerd_data . patientMobileNumber . toString ( ) ,
" DOB " : registerd_data . dob ,
" IsHijri " : registerd_data . isHijri
} ;
}
bool isValid ( ) {
bool isValid ( ) {
if ( location ! = null & & language ! = null & & Utils . validEmail ( email ) = = true ) {
if ( ( location ! = null & & language ! = null & & Utils . validEmail ( email ) = = true ) | |
( registerInfo . firstNameEn ! = null & & registerInfo . lastNameEn ! = null ) | |
( projectViewModel . isArabic & & registerInfo . firstNameEn ! = null & & registerInfo . firstNameAr ! = null & & registerInfo . lastNameEn ! = null & & registerInfo . lastNameAr ! = null ) ) {
return true ;
return true ;
} else {
} else {
return false ;
return false ;
@ -436,49 +627,57 @@ class _RegisterInfo extends State<RegisterInfo> {
return Row (
return Row (
children: [
children: [
Expanded (
Expanded (
child: Column (
child: Padding (
crossAxisAlignment: CrossAxisAlignment . start ,
padding: EdgeInsets . only ( left: 5 , right: 5 ) ,
children: [
child: Column (
Text (
crossAxisAlignment: CrossAxisAlignment . start ,
name1 ,
children: [
style: TextStyle (
Text (
fontSize: 14 ,
name1 ,
fontWeight: FontWeight . bold ,
style: TextStyle (
letterSpacing: - 0.44 ,
fontSize: 14 ,
) ,
fontWeight: FontWeight . bold ,
) ,
letterSpacing: - 0.44 ,
Text (
) ,
value1 ,
) ,
style: TextStyle (
value1 is String
fontSize: 12 ,
? Text (
fontWeight: FontWeight . w600 ,
value1 ,
letterSpacing: - 0.44 ,
style: TextStyle (
) ,
fontSize: 12 ,
) ,
fontWeight: FontWeight . w600 ,
] ,
letterSpacing: - 0.44 ,
) ) ,
) ,
)
: value1 ,
] ,
) ) ) ,
Expanded (
Expanded (
child: Column (
child: Padding (
crossAxisAlignment: CrossAxisAlignment . start ,
padding: EdgeInsets . only ( left: 5 , right: 5 ) ,
children: [
child: Column (
Text (
crossAxisAlignment: CrossAxisAlignment . start ,
name2 ,
children: [
style: TextStyle (
Text (
fontSize: 14 ,
name2 ,
fontWeight: FontWeight . bold ,
style: TextStyle (
letterSpacing: - 0.44 ,
fontSize: 14 ,
) ,
fontWeight: FontWeight . bold ,
) ,
letterSpacing: - 0.44 ,
Text (
) ,
value2 ,
) ,
style: TextStyle (
value2 is String
fontSize: 12 ,
? Text (
fontWeight: FontWeight . w600 ,
value2 ,
letterSpacing: - 0.44 ,
style: TextStyle (
) ,
fontSize: 12 ,
) ,
fontWeight: FontWeight . w600 ,
] ,
letterSpacing: - 0.44 ,
) )
) ,
)
: value2 ,
] ,
) ) )
] ,
] ,
) ;
) ;
}
}
@ -547,18 +746,146 @@ class _RegisterInfo extends State<RegisterInfo> {
print ( err ) ;
print ( err ) ;
} ) ;
} ) ;
}
}
getCountries ( ) {
ClinicListService service = new ClinicListService ( ) ;
service . getCountries ( ) . then ( ( res ) {
if ( res [ ' MessageStatus ' ] = = 1 ) {
res [ ' ListNationality ' ] . forEach ( ( items ) = > { countriesList . add ( CountriesLists . fromJson ( items ) ) } ) ;
setState ( ( ) { } ) ;
}
} ) . catchError ( ( err ) {
print ( err ) ;
} ) ;
}
Widget inputWidget ( String _labelText , String _hintText , String name , { String prefix , bool isEnable = true , bool hasSelection = false } ) {
return Container (
padding: EdgeInsets . only ( left: 10 , right: 10 , bottom: 5 , top: 5 ) ,
alignment: Alignment . center ,
decoration: BoxDecoration (
borderRadius: BorderRadius . circular ( 15 ) ,
color: Colors . white ,
border: Border . all (
color: Color ( 0xffefefef ) ,
width: 1 ,
) ,
) ,
child: InkWell (
onTap: hasSelection ? ( ) { } : null ,
child: Row (
children: [
Expanded (
child: Column (
mainAxisSize: MainAxisSize . min ,
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
_labelText ,
style: TextStyle (
fontSize: 11 ,
fontWeight: FontWeight . w600 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
) ,
TextField (
enabled: isEnable ,
scrollPadding: EdgeInsets . zero ,
keyboardType: TextInputType . text ,
/ / controller: _controller ,
onChanged: ( value ) = > {
setState ( ( ) {
switch ( name ) {
case ' fName ' :
{
if ( projectViewModel . isArabic ) {
registerInfo . firstNameAr = value ;
} else {
registerInfo . firstNameEn = value ;
registerInfo . firstNameAr = ' ... ' ;
}
}
break ;
case ' sName ' :
{
if ( projectViewModel . isArabic ) {
registerInfo . secondNameAr = value . isEmpty ? " . " : value ;
registerInfo . secondNameEn = ' ... ' ;
} else {
registerInfo . secondNameEn = value . isEmpty ? " . " : value ;
registerInfo . secondNameAr = ' ... ' ;
}
}
break ;
case ' lName ' :
{
if ( projectViewModel . isArabic ) {
registerInfo . lastNameAr = value ;
} else {
registerInfo . lastNameEn = value ;
registerInfo . lastNameAr = ' ... ' ;
}
}
break ;
case ' fNameEn ' :
registerInfo . firstNameEn = value ;
break ;
case ' lNameEn ' :
registerInfo . lastNameEn = value ;
break ;
}
} )
/ / _controller . text = value
} ,
style: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
decoration: InputDecoration (
isDense: true ,
hintText: _hintText ,
hintStyle: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff575757 ) ,
letterSpacing: - 0.56 ,
) ,
prefixIconConstraints: BoxConstraints ( minWidth: 50 ) ,
contentPadding: EdgeInsets . zero ,
border: InputBorder . none ,
focusedBorder: InputBorder . none ,
enabledBorder: InputBorder . none ,
) ,
) ,
] ,
) ,
) ,
if ( hasSelection ) Icon ( Icons . keyboard_arrow_down_outlined ) ,
] ,
) ,
) ,
) ;
}
}
}
class Language {
class Language {
final String name ;
final String name ;
final String value ;
final String value ;
final String nameAr ;
Language ( { this . name , this . value } ) ;
Language ( { this . name , this . value , this . nameAr }) ;
}
}
class Location {
class Location {
final String name ;
final String name ;
final String value ;
final String value ;
final String nameAr ;
Location ( { this . name , this . value } ) ;
Location ( { this . name , this . value , this . nameAr }) ;
}
}