import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.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'; import 'package:diplomaticquarterapp/pages/login/login-type.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class RegisterInfo extends StatefulWidget { @override _RegisterInfo createState() => _RegisterInfo(); } class _RegisterInfo extends State { final authService = new AuthProvider(); final sharedPref = new AppSharedPreferences(); RegisterInfoResponse registerInfo; bool isLoading; int page = 1; final List locationList = [ new Location(name: 'KSA', value: '1'), new Location(name: 'Dubai', value: '2'), ]; var language; var registerd_data; final List languageList = [ new Language(name: 'English', value: '2'), new Language(name: 'Arabic', value: '1'), ]; var email = ''; var location; @override void initState() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) { getRegisterInfo(); }); super.initState(); } @override Widget build(BuildContext context) { return AppScaffold( appBarTitle: TranslationBase.of(context).register, isShowAppBar: true, isShowDecPage: false, body: SingleChildScrollView( child: Container( padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), height: SizeConfig.realScreenHeight * .9, width: SizeConfig.realScreenWidth, child: Column(children: [ Expanded( flex: 1, child: AppText( TranslationBase.of(context).patientInfo, fontSize: SizeConfig.textMultiplier * 3, textAlign: TextAlign.left, )), registerInfo != null && page == 1 ? Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ AppText(TranslationBase.of(context).nationalID), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.idNumber, prefixIcon: Icon(Icons.chrome_reader_mode, color: Colors.red), padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).firstName), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.firstNameEn, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).middleName), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.secondNameEn, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).lastName), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.lastNameEn, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).gender), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.maritalStatusCode == 'U' ? 'Unknown' : registerInfo.maritalStatusCode == 'M' ? 'Male' : 'Female', padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).maritalStatus), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.maritalStatus, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).nationality), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.nationalityCode, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).mobileNumber), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText:registerd_data.patientMobileNumber, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), AppText(TranslationBase.of(context).dob), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( hintText: registerInfo.dateOfBirth, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), ], ) : registerInfo != null && page == 2 ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText(TranslationBase.of(context).language, textAlign: TextAlign.start), Container( padding: EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.white, border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(10)), child: DropdownButtonHideUnderline( child: DropdownButton( isExpanded: true, value: language, iconSize: 40, elevation: 16, onChanged: (value) => { setState(() { language = value; }) }, items: languageList .map>( (Language value) { return DropdownMenuItem( value: value.value, child: Text(value.name), ); }).toList()))), AppText(TranslationBase.of(context).location), Container( padding: EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.white, border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(10)), child: DropdownButtonHideUnderline( child: DropdownButton( isExpanded: true, value: language, iconSize: 40, elevation: 16, onChanged: (value) => { setState(() { location = value; }) }, items: locationList .map>( (Location value) { return DropdownMenuItem( value: value.value, child: Text(value.name), ); }).toList()))), AppText(TranslationBase.of(context).email), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( onChanged: (value) { this.email = value; this.isValid(); }, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), )), ], ) : SizedBox(), Expanded( flex: 2, child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ Row( children: [ Expanded( child: DefaultButton( page == 1 ? TranslationBase.of(context).next : TranslationBase.of(context).register, () => {nextPage()}, textColor: Colors.white, color: this.isValid() == false && page == 2 ? Colors.grey : Colors.black, )) ], ), ], )) ]), ))); } nextPage() { if (page == 1) { setState(() { page++; }); } else { registerNow(); } } registerNow() { dynamic request = getTempUserRequest(); request = RegisterUserRequest.fromJson(request); this.authService.registerUser(request); } getRegisterInfo() async { var data = RegisterInfoResponse.fromJson(await sharedPref.getObject(NHIC_DATA)); if (await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN) != null) { var data2 = CheckPatientAuthenticationReq.fromJson( await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN)); setState(() { this.registerInfo = data; this.registerd_data = data2; }); } } getTempUserRequest() { return { "Patientobject": { "TempValue": true, "PatientIdentificationType": 1, "PatientIdentificationNo": registerInfo.idNumber, "MobileNumber": registerd_data['patientMobileNumber'], "PatientOutSA": registerd_data['zipCode'] == '966' ? '0' : '1', "FirstName": registerInfo.firstNameEn, "MiddleName": registerInfo.secondNameEn, "LastName": registerInfo.lastNameEn, "StrDateofBirth": registerInfo.dateOfBirth, "DateofBirth": DateUtil.convertISODateToJsonDate(registerInfo.dateOfBirth), "Gender": registerInfo.gender, "NationalityID": registerInfo.nationality, "DateofBirthN": registerInfo.dateOfBirth, "EmailAddress": email, "SourceType": location, "PreferredLanguage": registerd_data['languageID'], "Marital": registerInfo.maritalStatusCode == 'U' ? '0' : registerInfo.maritalStatusCode == 'M' ? '1' : '2', }, "PatientIdentificationID": registerInfo.idNumber, "PatientMobileNumber": registerd_data['PatientMobileNumber'], }; // var patientObject ={}; // var request ={}; // patientObject['PatientIdentificationType'] = this.identificationType; // patientObject['PatientIdentificationNo'] = this.id; // request['PatientIdentificationID'] = this.id; // request['PatientMobileNumber'] = this.registerInfo.MobileNumber; // patientObject['MobileNumber'] = this.registerInfo.MobileNumber; // patientObject['PatientOutSA'] = this.registerInfo.PatientOutSA; // request['LogInTokenID'] = this.registerInfo.LogInTokenID; // request['activationCode'] = this.registerInfo.activationCode; // request['ProjectID'] = this.selectedProjectID; // patientObject['ProjectID'] = this.selectedProjectID; // request // request.setBirthDate(this.dateOfBirth, this.cs.convertISODateToJsonDate(this.dateOfBirth)); // request.setGender(this.gender); // request.Patientobject.NationalityID = this.selectedNationalityID; // request.Patientobject.StrDateofBirth = this.dateOfBirth; // request.Patientobject.DateofBirthN = this.dateHijri; // request.Patientobject.EmailAddress = this.eMail; // request.Patientobject.SourceType = this.iSOCountryID // request.Patientobject.PreferredLanguage = this.preferredLanguage // request.Patientobject.Marital = this.maritalStatus; //return request; } bool isValid() { if (location != null || language != null || Utils.validEmail(email) == true) { return true; } else { return false; } } } class Language { final String name; final String value; Language({this.name, this.value}); } class Location { final String name; final String value; Location({this.name, this.value}); }