send feedback implementation done
parent
a4e55cb6df
commit
b13adde9d2
@ -0,0 +1,11 @@
|
|||||||
|
class FeedbackType {
|
||||||
|
final int id;
|
||||||
|
final String nameEN;
|
||||||
|
final String nameAR;
|
||||||
|
|
||||||
|
FeedbackType({
|
||||||
|
required this.id,
|
||||||
|
required this.nameEN,
|
||||||
|
required this.nameAR,
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -0,0 +1,137 @@
|
|||||||
|
class RequestInsertCOCItem {
|
||||||
|
bool? isUserLoggedIn;
|
||||||
|
String? mobileNo;
|
||||||
|
int? identificationNo;
|
||||||
|
int? patientID;
|
||||||
|
int? patientOutSA;
|
||||||
|
int? patientTypeID;
|
||||||
|
String? tokenID;
|
||||||
|
String? patientName;
|
||||||
|
int? projectID;
|
||||||
|
String? fileName;
|
||||||
|
String? attachment;
|
||||||
|
String? uILanguage;
|
||||||
|
String? browserInfo;
|
||||||
|
String? cOCTypeName;
|
||||||
|
String? formTypeID;
|
||||||
|
String? details;
|
||||||
|
String? deviceInfo;
|
||||||
|
String? deviceType;
|
||||||
|
String? title;
|
||||||
|
String? resolution;
|
||||||
|
double? versionID;
|
||||||
|
int? channel;
|
||||||
|
int? languageID;
|
||||||
|
String? iPAdress;
|
||||||
|
String? generalid;
|
||||||
|
String? sessionID;
|
||||||
|
bool? isDentalAllowedBackend;
|
||||||
|
int? deviceTypeID;
|
||||||
|
int? patientType;
|
||||||
|
double? appVersion;
|
||||||
|
bool? forDemo;
|
||||||
|
|
||||||
|
RequestInsertCOCItem(
|
||||||
|
{this.isUserLoggedIn,
|
||||||
|
this.mobileNo,
|
||||||
|
this.identificationNo,
|
||||||
|
this.patientID,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.patientTypeID,
|
||||||
|
this.tokenID,
|
||||||
|
this.patientName,
|
||||||
|
this.projectID,
|
||||||
|
this.fileName,
|
||||||
|
this.attachment,
|
||||||
|
this.uILanguage,
|
||||||
|
this.browserInfo,
|
||||||
|
this.cOCTypeName,
|
||||||
|
this.formTypeID,
|
||||||
|
this.details,
|
||||||
|
this.deviceInfo,
|
||||||
|
this.deviceType,
|
||||||
|
this.title,
|
||||||
|
this.resolution,
|
||||||
|
this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.generalid,
|
||||||
|
this.sessionID,
|
||||||
|
this.isDentalAllowedBackend,
|
||||||
|
this.deviceTypeID,
|
||||||
|
this.patientType,
|
||||||
|
this.appVersion,
|
||||||
|
this.forDemo});
|
||||||
|
|
||||||
|
RequestInsertCOCItem.fromJson(Map<String, dynamic> json) {
|
||||||
|
isUserLoggedIn = json['IsUserLoggedIn'];
|
||||||
|
mobileNo = json['MobileNo'];
|
||||||
|
identificationNo = json['IdentificationNo'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
patientTypeID = json['PatientTypeID'];
|
||||||
|
tokenID = json['TokenID'];
|
||||||
|
patientName = json['PatientName'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
fileName = json['FileName'];
|
||||||
|
attachment = json['Attachment'];
|
||||||
|
uILanguage = json['UILanguage'];
|
||||||
|
browserInfo = json['BrowserInfo'];
|
||||||
|
cOCTypeName = json['COCTypeName'];
|
||||||
|
formTypeID = json['FormTypeID'];
|
||||||
|
details = json['Details'];
|
||||||
|
deviceInfo = json['DeviceInfo'];
|
||||||
|
deviceType = json['DeviceType'];
|
||||||
|
title = json['Title'];
|
||||||
|
resolution = json['Resolution'];
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||||
|
deviceTypeID = json['DeviceTypeID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
appVersion = json['AppVersion'];
|
||||||
|
forDemo = json['ForDemo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['IsUserLoggedIn'] = this.isUserLoggedIn;
|
||||||
|
data['MobileNo'] = this.mobileNo;
|
||||||
|
data['IdentificationNo'] = this.identificationNo;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['PatientTypeID'] = this.patientTypeID;
|
||||||
|
data['TokenID'] = this.tokenID;
|
||||||
|
data['PatientName'] = this.patientName;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
data['FileName'] = this.fileName;
|
||||||
|
data['Attachment'] = this.attachment;
|
||||||
|
data['UILanguage'] = this.uILanguage;
|
||||||
|
data['BrowserInfo'] = this.browserInfo;
|
||||||
|
data['COCTypeName'] = this.cOCTypeName;
|
||||||
|
data['FormTypeID'] = this.formTypeID;
|
||||||
|
data['Details'] = this.details;
|
||||||
|
data['DeviceInfo'] = this.deviceInfo;
|
||||||
|
data['DeviceType'] = this.deviceType;
|
||||||
|
data['Title'] = this.title;
|
||||||
|
data['Resolution'] = this.resolution;
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||||
|
data['DeviceTypeID'] = this.deviceTypeID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
data['AppVersion'] = this.appVersion;
|
||||||
|
data['ForDemo'] = this.forDemo;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
||||||
|
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||||
|
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||||
|
import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
|
||||||
|
import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart';
|
||||||
|
import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart';
|
||||||
|
import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart';
|
||||||
|
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||||
|
import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart';
|
||||||
|
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||||
|
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class FeedbackAppointmentSelection extends StatelessWidget {
|
||||||
|
FeedbackAppointmentSelection({super.key});
|
||||||
|
|
||||||
|
late MedicalFileViewModel medicalFileViewModel;
|
||||||
|
late ContactUsViewModel contactUsViewModel;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
medicalFileViewModel = Provider.of<MedicalFileViewModel>(context, listen: false);
|
||||||
|
contactUsViewModel = Provider.of<ContactUsViewModel>(context, listen: false);
|
||||||
|
return CollapsingListView(
|
||||||
|
title: LocaleKeys.feedback.tr(),
|
||||||
|
isClose: true,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
ListView.separated(
|
||||||
|
padding: EdgeInsets.only(top: 24.h),
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: NeverScrollableScrollPhysics(),
|
||||||
|
itemCount: medicalFileViewModel.patientMedicalReportAppointmentHistoryList.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return AnimationConfiguration.staggeredList(
|
||||||
|
position: index,
|
||||||
|
duration: const Duration(milliseconds: 500),
|
||||||
|
child: SlideAnimation(
|
||||||
|
verticalOffset: 100.0,
|
||||||
|
child: FadeInAnimation(
|
||||||
|
child: AnimatedContainer(
|
||||||
|
duration: Duration(milliseconds: 300),
|
||||||
|
curve: Curves.easeInOut,
|
||||||
|
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true),
|
||||||
|
child: AppointmentCard(
|
||||||
|
patientAppointmentHistoryResponseModel: medicalFileViewModel.patientMedicalReportAppointmentHistoryList[index],
|
||||||
|
myAppointmentsViewModel: Provider.of<MyAppointmentsViewModel>(context, listen: false),
|
||||||
|
bookAppointmentsViewModel: Provider.of<BookAppointmentsViewModel>(context, listen: false),
|
||||||
|
medicalFileViewModel: medicalFileViewModel,
|
||||||
|
contactUsViewModel: contactUsViewModel,
|
||||||
|
isLoading: false,
|
||||||
|
isFromHomePage: false,
|
||||||
|
isFromMedicalReport: true,
|
||||||
|
isForFeedback: true,
|
||||||
|
),
|
||||||
|
).paddingSymmetrical(24.h, 0.h),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h),
|
||||||
|
),
|
||||||
|
SizedBox(height: 24.h),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue