Updates
parent
dfc666673d
commit
7611c1d58c
@ -0,0 +1,136 @@
|
||||
class GetPatientInfoForUpdate {
|
||||
int? projectID;
|
||||
int? patientType;
|
||||
int? patientID;
|
||||
String? emailAddress;
|
||||
bool? isEmailAlertRequired;
|
||||
bool? isSMSAlertRequired;
|
||||
String? preferredLanguage;
|
||||
String? emergencyContactName;
|
||||
String? emergencyContactNo;
|
||||
int? editedBy;
|
||||
String? editedOn;
|
||||
String? patientIdentificationNo;
|
||||
int? patientIdentificationType;
|
||||
String? firstName;
|
||||
String? middleName;
|
||||
String? lastName;
|
||||
int? gender;
|
||||
String? dateofBirth;
|
||||
String? dateofBirthN;
|
||||
String? firstNameN;
|
||||
String? middleNameN;
|
||||
String? lastNameN;
|
||||
int? projectID1;
|
||||
int? patientType1;
|
||||
int? patientID1;
|
||||
bool? isIVRStopped;
|
||||
String? aGE;
|
||||
String? genderString;
|
||||
bool? isNeedUpdateIdintificationNo;
|
||||
String? nationality;
|
||||
String? type;
|
||||
|
||||
GetPatientInfoForUpdate(
|
||||
{this.projectID,
|
||||
this.patientType,
|
||||
this.patientID,
|
||||
this.emailAddress,
|
||||
this.isEmailAlertRequired,
|
||||
this.isSMSAlertRequired,
|
||||
this.preferredLanguage,
|
||||
this.emergencyContactName,
|
||||
this.emergencyContactNo,
|
||||
this.editedBy,
|
||||
this.editedOn,
|
||||
this.patientIdentificationNo,
|
||||
this.patientIdentificationType,
|
||||
this.firstName,
|
||||
this.middleName,
|
||||
this.lastName,
|
||||
this.gender,
|
||||
this.dateofBirth,
|
||||
this.dateofBirthN,
|
||||
this.firstNameN,
|
||||
this.middleNameN,
|
||||
this.lastNameN,
|
||||
this.projectID1,
|
||||
this.patientType1,
|
||||
this.patientID1,
|
||||
this.isIVRStopped,
|
||||
this.aGE,
|
||||
this.genderString,
|
||||
this.isNeedUpdateIdintificationNo,
|
||||
this.nationality,
|
||||
this.type});
|
||||
|
||||
GetPatientInfoForUpdate.fromJson(Map<String, dynamic> json) {
|
||||
projectID = json['ProjectID'];
|
||||
patientType = json['PatientType'];
|
||||
patientID = json['PatientID'];
|
||||
emailAddress = json['EmailAddress'];
|
||||
isEmailAlertRequired = json['IsEmailAlertRequired'];
|
||||
isSMSAlertRequired = json['IsSMSAlertRequired'];
|
||||
preferredLanguage = json['PreferredLanguage'];
|
||||
emergencyContactName = json['EmergencyContactName'];
|
||||
emergencyContactNo = json['EmergencyContactNo'];
|
||||
editedBy = json['EditedBy'];
|
||||
editedOn = json['EditedOn'];
|
||||
patientIdentificationNo = json['PatientIdentificationNo'];
|
||||
patientIdentificationType = json['PatientIdentificationType'];
|
||||
firstName = json['FirstName'];
|
||||
middleName = json['MiddleName'];
|
||||
lastName = json['LastName'];
|
||||
gender = json['Gender'];
|
||||
dateofBirth = json['DateofBirth'];
|
||||
dateofBirthN = json['DateofBirthN'];
|
||||
firstNameN = json['FirstNameN'];
|
||||
middleNameN = json['MiddleNameN'];
|
||||
lastNameN = json['LastNameN'];
|
||||
projectID1 = json['ProjectID1'];
|
||||
patientType1 = json['PatientType1'];
|
||||
patientID1 = json['PatientID1'];
|
||||
isIVRStopped = json['IsIVRStopped'];
|
||||
aGE = json['AGE'];
|
||||
genderString = json['GenderString'];
|
||||
isNeedUpdateIdintificationNo = json['IsNeedUpdateIdintificationNo'];
|
||||
nationality = json['Nationality'];
|
||||
type = json['Type'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ProjectID'] = this.projectID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['EmailAddress'] = this.emailAddress;
|
||||
data['IsEmailAlertRequired'] = this.isEmailAlertRequired;
|
||||
data['IsSMSAlertRequired'] = this.isSMSAlertRequired;
|
||||
data['PreferredLanguage'] = this.preferredLanguage;
|
||||
data['EmergencyContactName'] = this.emergencyContactName;
|
||||
data['EmergencyContactNo'] = this.emergencyContactNo;
|
||||
data['EditedBy'] = this.editedBy;
|
||||
data['EditedOn'] = this.editedOn;
|
||||
data['PatientIdentificationNo'] = this.patientIdentificationNo;
|
||||
data['PatientIdentificationType'] = this.patientIdentificationType;
|
||||
data['FirstName'] = this.firstName;
|
||||
data['MiddleName'] = this.middleName;
|
||||
data['LastName'] = this.lastName;
|
||||
data['Gender'] = this.gender;
|
||||
data['DateofBirth'] = this.dateofBirth;
|
||||
data['DateofBirthN'] = this.dateofBirthN;
|
||||
data['FirstNameN'] = this.firstNameN;
|
||||
data['MiddleNameN'] = this.middleNameN;
|
||||
data['LastNameN'] = this.lastNameN;
|
||||
data['ProjectID1'] = this.projectID1;
|
||||
data['PatientType1'] = this.patientType1;
|
||||
data['PatientID1'] = this.patientID1;
|
||||
data['IsIVRStopped'] = this.isIVRStopped;
|
||||
data['AGE'] = this.aGE;
|
||||
data['GenderString'] = this.genderString;
|
||||
data['IsNeedUpdateIdintificationNo'] = this.isNeedUpdateIdintificationNo;
|
||||
data['Nationality'] = this.nationality;
|
||||
data['Type'] = this.type;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/int_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart';
|
||||
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class PreferredLanguageWidget extends StatefulWidget {
|
||||
PreferredLanguageWidget({super.key});
|
||||
|
||||
@override
|
||||
State<PreferredLanguageWidget> createState() => _PreferredLanguageWidgetState();
|
||||
}
|
||||
|
||||
class _PreferredLanguageWidgetState extends State<PreferredLanguageWidget> {
|
||||
String? selectedValue;
|
||||
late ProfileSettingsViewModel profileSettingsViewModel;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
setState(() {
|
||||
selectedValue = profileSettingsViewModel.getPatientInfoForUpdate.preferredLanguage!;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
profileSettingsViewModel = Provider.of<ProfileSettingsViewModel>(context, listen: false);
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
spacing: 24.h,
|
||||
children: [
|
||||
LocaleKeys.languageSetting.tr(context: context).toText14(),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 4, bottom: 4),
|
||||
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true),
|
||||
child: Column(
|
||||
children: [
|
||||
languageItem("English", "2"),
|
||||
1.divider,
|
||||
languageItem("العربية", "1"),
|
||||
],
|
||||
),
|
||||
),
|
||||
CustomButton(
|
||||
text: LocaleKeys.save.tr(context: context),
|
||||
onPressed: () {
|
||||
LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context));
|
||||
profileSettingsViewModel!.updatePatientInfo(
|
||||
patientInfo: {
|
||||
"PreferredLanguage": selectedValue,
|
||||
"EmailAddress": profileSettingsViewModel.getPatientInfoForUpdate.emailAddress,
|
||||
"EmergencyContactName": profileSettingsViewModel.getPatientInfoForUpdate.emergencyContactName,
|
||||
"EmergencyContactNo": profileSettingsViewModel.getPatientInfoForUpdate.emergencyContactNo,
|
||||
"IsEmailAlertRequired": true,
|
||||
"IsSMSAlertRequired": true,
|
||||
},
|
||||
onSuccess: (response) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()),
|
||||
callBackFunc: () async {
|
||||
Navigator.of(context).pop();
|
||||
profileSettingsViewModel.getProfileSettings();
|
||||
}, isFullScreen: false);
|
||||
},
|
||||
onError: (error) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
// Show error message
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(error)),
|
||||
);
|
||||
},
|
||||
);
|
||||
}),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget languageItem(String title, String _value) {
|
||||
return SizedBox(
|
||||
height: 72,
|
||||
child: Row(
|
||||
spacing: 8.h,
|
||||
children: [
|
||||
Radio(
|
||||
value: _value,
|
||||
groupValue: selectedValue,
|
||||
activeColor: AppColors.errorColor,
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
selectedValue = _value;
|
||||
});
|
||||
},
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
),
|
||||
title.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1, fontFamily: _value == "1" ? 'GESSTwo' : 'Poppins').expanded,
|
||||
],
|
||||
).paddingOnly(left: 16, right: 16).onPress(() {
|
||||
setState(() {
|
||||
selectedValue = _value;
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,118 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_state.dart';
|
||||
import 'package:hmg_patient_app_new/core/dependencies.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart';
|
||||
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/input_widget.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class UpdateEmergencyContactDialog extends StatefulWidget {
|
||||
UpdateEmergencyContactDialog({super.key});
|
||||
|
||||
@override
|
||||
State<UpdateEmergencyContactDialog> createState() => _UpdateEmergencyContactDialogState();
|
||||
}
|
||||
|
||||
class _UpdateEmergencyContactDialogState extends State<UpdateEmergencyContactDialog> {
|
||||
late FocusNode _textFieldFocusNode;
|
||||
late TextEditingController? textController;
|
||||
ProfileSettingsViewModel? profileSettingsViewModel;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_textFieldFocusNode = FocusNode();
|
||||
textController = TextEditingController();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
setState(() {
|
||||
textController!.text = profileSettingsViewModel!.getPatientInfoForUpdate.emergencyContactNo!;
|
||||
});
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_textFieldFocusNode.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
profileSettingsViewModel = Provider.of<ProfileSettingsViewModel>(context);
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
_textFieldFocusNode.unfocus();
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
"Enter the new emergency contact number to be updated: ".toText16(textAlign: TextAlign.start, weight: FontWeight.w500),
|
||||
SizedBox(height: 12.h),
|
||||
TextInputWidget(
|
||||
labelText: LocaleKeys.emrgNo.tr(),
|
||||
hintText: "05xxxxxxxx",
|
||||
controller: textController,
|
||||
focusNode: _textFieldFocusNode,
|
||||
autoFocus: true,
|
||||
padding: EdgeInsets.all(8.h),
|
||||
keyboardType: TextInputType.number,
|
||||
isEnable: true,
|
||||
isReadOnly: false,
|
||||
prefix: null,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
fontSize: 14.f,
|
||||
isCountryDropDown: false,
|
||||
leadingIcon: AppAssets.call_fill,
|
||||
fontFamily: "Poppins",
|
||||
),
|
||||
SizedBox(height: 12.h),
|
||||
CustomButton(
|
||||
text: LocaleKeys.submit.tr(context: context),
|
||||
onPressed: () {
|
||||
LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context));
|
||||
profileSettingsViewModel!.updatePatientInfo(
|
||||
patientInfo: {
|
||||
"PreferredLanguage": profileSettingsViewModel!.getPatientInfoForUpdate.preferredLanguage,
|
||||
"EmailAddress": profileSettingsViewModel!.getPatientInfoForUpdate.emailAddress,
|
||||
"EmergencyContactName": profileSettingsViewModel!.getPatientInfoForUpdate.emergencyContactName,
|
||||
"EmergencyContactNo": textController!.text,
|
||||
"IsEmailAlertRequired": true,
|
||||
"IsSMSAlertRequired": true,
|
||||
},
|
||||
onSuccess: (response) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()),
|
||||
callBackFunc: () async {
|
||||
Navigator.of(context).pop();
|
||||
profileSettingsViewModel!.getProfileSettings();
|
||||
}, isFullScreen: false);
|
||||
},
|
||||
onError: (error) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
// Show error message
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(error)),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
backgroundColor: AppColors.primaryRedColor,
|
||||
borderColor: AppColors.primaryRedColor,
|
||||
textColor: const Color(0xFFffffff),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue