diff --git a/assets/images/svg/livecare_audio.svg b/assets/images/svg/livecare_audio.svg
new file mode 100644
index 00000000..339d5347
--- /dev/null
+++ b/assets/images/svg/livecare_audio.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/svg/livecare_phone.svg b/assets/images/svg/livecare_phone.svg
new file mode 100644
index 00000000..1722f0fc
--- /dev/null
+++ b/assets/images/svg/livecare_phone.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/svg/livecare_video.svg b/assets/images/svg/livecare_video.svg
new file mode 100644
index 00000000..bab506f8
--- /dev/null
+++ b/assets/images/svg/livecare_video.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json
index eeabdcac..9d5b1e96 100644
--- a/assets/langs/ar-SA.json
+++ b/assets/langs/ar-SA.json
@@ -945,6 +945,7 @@
"offline": "غير متصل",
"videoCall": "مكالمة فيديو",
"liveVideoCallWithHMGDoctors": "مكالمة فيديو مباشرة مع أطباء مجموعة الحبيب الطبية",
+ "liveAudioCallWithHMGDoctors": "مكالمة صوتية مباشرة مع أطباء مجموعة الحبيب الطبية",
"audioCall": "مكالمة صوتية",
"phoneCall": "مكالمة هاتفية",
"livePhoneCallWithHMGDoctors": "مكالمة هاتفية مباشرة مع أطباء مجموعة الحبيب الطبية",
diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json
index 49095042..4bd9ae9e 100644
--- a/assets/langs/en-US.json
+++ b/assets/langs/en-US.json
@@ -937,6 +937,7 @@
"offline": "Offline",
"videoCall": "Video Call",
"liveVideoCallWithHMGDoctors": "Live Video Call with HMG Doctors",
+ "liveAudioCallWithHMGDoctors": "Live Audio Call with HMG Doctors",
"audioCall": "Audio Call",
"phoneCall": "Phone Call",
"livePhoneCallWithHMGDoctors": "Live Phone Call with HMG Doctors",
diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart
index ef50254a..3dd26384 100644
--- a/lib/core/api/api_client.dart
+++ b/lib/core/api/api_client.dart
@@ -197,6 +197,10 @@ class ApiClientImp implements ApiClient {
// body['PatientTypeID'] = 1;
// body['PatientOutSA'] = 0;
// body['SessionID'] = "45786230487560q";
+
+ body['IdentificationNo'] = "2235558844";
+ body['MobileNo'] = "966533147722";
+ body['PatientID'] = 809289;
}
if(!url.contains("/paymentApi")) {
diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart
index 03e1f7ea..c1981be6 100644
--- a/lib/core/api_consts.dart
+++ b/lib/core/api_consts.dart
@@ -4,7 +4,7 @@ import 'package:hmg_patient_app_new/core/enums.dart';
class ApiConsts {
static const maxSmallScreen = 660;
- static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat;
+ static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.preProd;
// static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT
@@ -229,8 +229,8 @@ class ApiConsts {
static String getAiOverViewLabOrder = "Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API";
// ************ static values for Api ****************
- // static final double appVersionID = 19.7;
- static final double appVersionID = 50.7;
+ static final double appVersionID = 19.7;
+ // static final double appVersionID = 50.7;
static final int appChannelId = 3;
static final String appIpAddress = "10.20.10.20";
static final String appGeneralId = "Cs2020@2016\$2958";
diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart
index 96c7cc09..942eb46b 100644
--- a/lib/core/app_assets.dart
+++ b/lib/core/app_assets.dart
@@ -295,6 +295,10 @@ class AppAssets {
static const String bulb = '$svgBasePath/bulb.svg';
static const String switchBtn = '$svgBasePath/switch.svg';
+ static const String livecare_video = '$svgBasePath/livecare_video.svg';
+ static const String livecare_audio = '$svgBasePath/livecare_audio.svg';
+ static const String livecare_phone = '$svgBasePath/livecare_phone.svg';
+
//Health Trackers
static const String bloodPressureIcon = '$svgBasePath/blood_pressure_icon.svg';
static const String bloodSugarOnlyIcon = '$svgBasePath/blood_sugar_only_icon.svg';
diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart
index ee032590..d436370f 100644
--- a/lib/core/utils/utils.dart
+++ b/lib/core/utils/utils.dart
@@ -990,6 +990,12 @@ class Utils {
return isAllowed;
}
+ static bool containsArabic(String text) {
+ // Using Unicode range for Arabic characters
+ final RegExp arabicRegex = RegExp(r'[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]');
+ return arabicRegex.hasMatch(text);
+ }
+
static String toEnglishNumbers(String input) {
const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
const arabic = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart
index f087f748..792bff50 100644
--- a/lib/extensions/string_extensions.dart
+++ b/lib/extensions/string_extensions.dart
@@ -192,6 +192,7 @@ extension EmailValidator on String {
int? maxlines,
double? letterSpacing = 0,
double? height,
+ String? fontFamily,
TextOverflow? textOverflow,
}) =>
Text(
@@ -206,7 +207,7 @@ extension EmailValidator on String {
height: height,
fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
decoration: isUnderLine ? TextDecoration.underline : null,
- fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins',
+ fontFamily: fontFamily ?? (isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'),
decorationColor: color ?? AppColors.blackColor),
);
@@ -231,12 +232,13 @@ extension EmailValidator on String {
TextAlign? textAlign,
FontWeight? weight,
TextOverflow? textOverflow,
+ String? fontFamily,
double? letterSpacing = -0.4,
Color decorationColor = AppColors.errorColor}) =>
Text(
this,
maxLines: maxlines,
- textAlign: isCenter ? TextAlign.center : null,
+ textAlign: isCenter ? textAlign ?? TextAlign.center : null,
// locale: Locale('en', 'US'),
style: TextStyle(
color: color ?? AppColors.blackColor,
@@ -246,7 +248,7 @@ extension EmailValidator on String {
overflow: textOverflow,
fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
decoration: isUnderLine ? TextDecoration.underline : null,
- fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins',
+ fontFamily: fontFamily ?? (isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'),
decorationColor: decorationColor),
);
diff --git a/lib/features/contact_us/contact_us_view_model.dart b/lib/features/contact_us/contact_us_view_model.dart
index 5162aa04..72bcff76 100644
--- a/lib/features/contact_us/contact_us_view_model.dart
+++ b/lib/features/contact_us/contact_us_view_model.dart
@@ -256,6 +256,7 @@ class ContactUsViewModel extends ChangeNotifier {
}
} else if (apiResponse.messageStatus == 1) {
cocItemsList = apiResponse.data!;
+ cocItemsList.sort((a, b) => a.date!.compareTo(b.date!));
isCOCItemsListLoading = false;
notifyListeners();
if (onSuccess != null) {
diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart
index ac4ad585..46ae0ba2 100644
--- a/lib/generated/locale_keys.g.dart
+++ b/lib/generated/locale_keys.g.dart
@@ -941,6 +941,7 @@ abstract class LocaleKeys {
static const offline = 'offline';
static const videoCall = 'videoCall';
static const liveVideoCallWithHMGDoctors = 'liveVideoCallWithHMGDoctors';
+ static const liveAudioCallWithHMGDoctors = 'liveAudioCallWithHMGDoctors';
static const audioCall = 'audioCall';
static const phoneCall = 'phoneCall';
static const livePhoneCallWithHMGDoctors = 'livePhoneCallWithHMGDoctors';
diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart
index 4992d850..fb6ebe72 100644
--- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart
+++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart
@@ -110,7 +110,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget {
children: [
Row(
children: [
- Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.h, height: 32.h, fit: BoxFit.contain),
+ Utils.buildSvgWithAssets(icon: getLiveCareTypeIcon(immediateLiveCareVM.liveCareSelectedCallType), width: 32.h, height: 32.h, fit: BoxFit.contain),
SizedBox(width: 8.h),
getLiveCareType(context, immediateLiveCareVM.liveCareSelectedCallType).toText16(isBold: true),
],
@@ -429,6 +429,19 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget {
// // }
// }
+ String getLiveCareTypeIcon(int callType) {
+ switch (callType) {
+ case 1:
+ return AppAssets.livecare_video;
+ case 2:
+ return AppAssets.livecare_audio;
+ case 3:
+ return AppAssets.livecare_phone;
+ default:
+ return AppAssets.livecare_video;
+ }
+ }
+
String getLiveCareType(BuildContext context, int callType) {
switch (callType) {
case 1:
diff --git a/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart b/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart
index a1c3f43b..e0f6c5c0 100644
--- a/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart
+++ b/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart
@@ -22,7 +22,7 @@ class SelectLiveCareCallType extends StatelessWidget {
return Column(
children: [
checkInOptionCard(
- AppAssets.checkin_location_icon,
+ AppAssets.livecare_video,
LocaleKeys.videoCall.tr(context: context),
LocaleKeys.liveVideoCallWithHMGDoctors.tr(context: context),
).onPress(() {
@@ -31,16 +31,16 @@ class SelectLiveCareCallType extends StatelessWidget {
}),
SizedBox(height: 16.h),
checkInOptionCard(
- AppAssets.checkin_location_icon,
+ AppAssets.livecare_audio,
LocaleKeys.audioCall.tr(context: context),
- LocaleKeys.liveVideoCallWithHMGDoctors.tr(context: context),
+ LocaleKeys.liveAudioCallWithHMGDoctors.tr(context: context),
).onPress(() {
Navigator.of(context).pop();
immediateLiveCareViewModel.setLiveCareSelectedCallType(2);
}),
SizedBox(height: 16.h),
checkInOptionCard(
- AppAssets.checkin_location_icon,
+ AppAssets.livecare_phone,
LocaleKeys.phoneCall.tr(context: context),
LocaleKeys.livePhoneCallWithHMGDoctors.tr(context: context),
).onPress(() {
diff --git a/lib/presentation/contact_us/feedback_page.dart b/lib/presentation/contact_us/feedback_page.dart
index 4944355c..93954af9 100644
--- a/lib/presentation/contact_us/feedback_page.dart
+++ b/lib/presentation/contact_us/feedback_page.dart
@@ -26,6 +26,7 @@ import 'package:hmg_patient_app_new/widgets/input_widget.dart';
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart';
import 'package:provider/provider.dart';
+import 'dart:ui' as ui;
class FeedbackPage extends StatelessWidget {
FeedbackPage({super.key});
@@ -36,10 +37,13 @@ class FeedbackPage extends StatelessWidget {
final TextEditingController subjectTextController = TextEditingController();
final TextEditingController messageTextController = TextEditingController();
+ late AppState appState;
+
@override
Widget build(BuildContext context) {
contactUsViewModel = Provider.of(context, listen: false);
medicalFileViewModel = Provider.of(context, listen: false);
+ appState = getIt.get();
return Scaffold(
backgroundColor: AppColors.bgScaffoldColor,
body: Consumer(builder: (context, contactUsVM, child) {
@@ -425,13 +429,57 @@ class FeedbackPage extends StatelessWidget {
duration: Duration(milliseconds: 300),
curve: Curves.easeInOut,
child: Container(
- height: 200.h,
- width: 300.w,
+ padding: EdgeInsets.all(16.h),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: AppColors.whiteColor,
borderRadius: 20.h,
hasShadow: true,
),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppCustomChipWidget(
+ labelText: appState.isArabic() ? contactUsViewModel.cocItemsList[index].statusAr : contactUsViewModel.cocItemsList[index].status,
+ // backgroundColor: AppColors.warningColorYellow,
+ backgroundColor: (contactUsViewModel.cocItemsList[index].statusId == 7 || contactUsViewModel.cocItemsList[index].statusId == 8)
+ ? AppColors.primaryRedColor
+ : (contactUsViewModel.cocItemsList[index].statusId == 10 ||
+ contactUsViewModel.cocItemsList[index].statusId == 6 ||
+ contactUsViewModel.cocItemsList[index].statusId == 9)
+ ? AppColors.successColor
+ : AppColors.warningColorYellow,
+ textColor: AppColors.whiteColor,
+ ),
+ SizedBox(height: 8.h),
+ "${LocaleKeys.requestID.tr(context: context)} ${contactUsViewModel.cocItemsList[index].itemID}".toText16(weight: FontWeight.bold),
+ SizedBox(height: 8.h),
+ Wrap(
+ direction: Axis.horizontal,
+ spacing: 4.h,
+ runSpacing: 4.h,
+ children: [
+ AppCustomChipWidget(
+ labelText: contactUsViewModel.cocItemsList[index].date!.split(" ")[0],
+ icon: AppAssets.calendarGrey,
+ labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
+ ),
+ AppCustomChipWidget(
+ labelText: contactUsViewModel.cocItemsList[index].formType,
+ icon: AppAssets.ask_doctor_icon,
+ labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
+ ),
+ ],
+ ),
+ SizedBox(height: 8.h),
+ "${contactUsViewModel.cocItemsList[index].cOCTitle}"
+ .toText16(weight: FontWeight.bold, fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].cOCTitle ?? "") ? "GESSTwo" : "Poppins"),
+ SizedBox(height: 8.h),
+ "${contactUsViewModel.cocItemsList[index].detail}".toText14(
+ weight: FontWeight.w500,
+ color: AppColors.textColorLight,
+ fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].detail ?? "") ? "GESSTwo" : "Poppins"),
+ ],
+ ),
).paddingOnly(bottom: 16.h),
),
),