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