You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
6.4 KiB
Dart
229 lines
6.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:hmg_qline/constants/app_constants.dart';
|
|
import 'package:hmg_qline/models/global_config_model.dart';
|
|
import 'package:hmg_qline/utilities/enums.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
extension ScreenOrientationEnumExt on int {
|
|
ScreenOrientationEnum toScreenOrientationEnum() {
|
|
if (this == 1) {
|
|
return ScreenOrientationEnum.portraitUp;
|
|
} else if (this == 2) {
|
|
return ScreenOrientationEnum.portraitDown;
|
|
} else if (this == 3) {
|
|
return ScreenOrientationEnum.landscapeRight;
|
|
} else if (this == 4) {
|
|
return ScreenOrientationEnum.landscapeLeft;
|
|
} else {
|
|
return ScreenOrientationEnum.portraitUp;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension DateFormatExt on int {
|
|
String toFormattedDateTimeFromInt() {
|
|
return DateFormat('hh:mm a').format(DateTime.fromMillisecondsSinceEpoch(this));
|
|
}
|
|
|
|
DateTime toDateTimeFromInt() {
|
|
return DateTime.fromMillisecondsSinceEpoch(this);
|
|
}
|
|
}
|
|
|
|
extension NavigationExt on BuildContext {
|
|
navigateReplaceTo(String route) {
|
|
Navigator.pushReplacementNamed(this, route);
|
|
}
|
|
|
|
navigateTo(String route) {
|
|
Navigator.pushNamed(this, route);
|
|
}
|
|
|
|
popScreen() => Navigator.of(this).pop();
|
|
}
|
|
|
|
extension ScreenOrientationExt on ScreenOrientationEnum {
|
|
int getTurnsByOrientation() {
|
|
switch (this) {
|
|
case ScreenOrientationEnum.portraitUp:
|
|
return 0;
|
|
case ScreenOrientationEnum.portraitDown:
|
|
return 2;
|
|
case ScreenOrientationEnum.landscapeRight:
|
|
return 1;
|
|
case ScreenOrientationEnum.landscapeLeft:
|
|
return 3;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension QTypeEnumExtension on int {
|
|
QTypeEnum toQTypeEnum() {
|
|
switch (this) {
|
|
case 1:
|
|
return QTypeEnum.appointment;
|
|
case 2:
|
|
return QTypeEnum.lab;
|
|
case 3:
|
|
return QTypeEnum.rad;
|
|
case 4:
|
|
return QTypeEnum.general;
|
|
default:
|
|
return QTypeEnum.appointment;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension QTypeExtension on QTypeEnum {
|
|
// Convert the QType enum to its corresponding integer ID
|
|
int getQTypeIDFromEnum() {
|
|
return index + 1; // enum index starts from 0, so we add 1 to match your values.
|
|
}
|
|
}
|
|
|
|
extension ScreenTypeExtension on int {
|
|
// Convert int to ScreenType enum
|
|
ScreenTypeEnum toScreenTypeEnum() {
|
|
switch (this) {
|
|
case 1:
|
|
return ScreenTypeEnum.waitingAreaScreen;
|
|
case 2:
|
|
return ScreenTypeEnum.roomLevelScreen;
|
|
case 3:
|
|
return ScreenTypeEnum.receptionScreen;
|
|
case 4:
|
|
return ScreenTypeEnum.dashboardScreen;
|
|
case 5:
|
|
return ScreenTypeEnum.kioskScreen;
|
|
default:
|
|
return ScreenTypeEnum.waitingAreaScreen;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ScreenTypeIDExtension on ScreenTypeEnum {
|
|
// Convert the ScreenType enum to its corresponding integer ID
|
|
int getScreenTypeIDFromEnum() {
|
|
return index + 1; // enum index starts from 0, so we add 1 to match your values.
|
|
}
|
|
}
|
|
|
|
extension IntToLanguageEnum on int {
|
|
LanguageEnum toLanguageEnum() {
|
|
switch (this) {
|
|
case 1:
|
|
return LanguageEnum.english;
|
|
case 2:
|
|
return LanguageEnum.arabic;
|
|
default:
|
|
return LanguageEnum.english;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension LanguageEnumToInt on LanguageEnum {
|
|
int enumToInt() {
|
|
switch (this) {
|
|
case LanguageEnum.english:
|
|
return 1;
|
|
case LanguageEnum.arabic:
|
|
return 2;
|
|
default:
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension LanguageEnumToString on LanguageEnum {
|
|
String enumToString() {
|
|
switch (this) {
|
|
case LanguageEnum.english:
|
|
return "en";
|
|
case LanguageEnum.arabic:
|
|
return "ar";
|
|
default:
|
|
return "en";
|
|
}
|
|
}
|
|
}
|
|
|
|
enum CallTypeEnum { vitalSign, doctor, procedure, vaccination, nebulization, none }
|
|
|
|
extension XCallType on CallTypeEnum {
|
|
Color color() {
|
|
if (this == CallTypeEnum.vitalSign) {
|
|
return AppColors.vitalSignColor;
|
|
} else if (this == CallTypeEnum.doctor) {
|
|
return AppColors.doctorColor;
|
|
} else if (this == CallTypeEnum.procedure) {
|
|
return AppColors.procedureColor;
|
|
} else if (this == CallTypeEnum.vaccination) {
|
|
return AppColors.vaccinationColor;
|
|
} else if (this == CallTypeEnum.nebulization) {
|
|
return AppColors.nebulizationColor;
|
|
} else {
|
|
return Colors.black54;
|
|
}
|
|
}
|
|
|
|
String message(GlobalConfigurationsModel globalConfig, {bool isListView = false}) {
|
|
switch (this) {
|
|
case CallTypeEnum.vitalSign:
|
|
return isListView ? globalConfig.callForVitalSignText : globalConfig.vitalSignText;
|
|
case CallTypeEnum.doctor:
|
|
return isListView ? globalConfig.callForDoctorText : globalConfig.doctorText;
|
|
case CallTypeEnum.procedure:
|
|
return isListView ? globalConfig.callForProcedureText : globalConfig.procedureText;
|
|
case CallTypeEnum.vaccination:
|
|
return isListView ? globalConfig.callForVaccinationText : globalConfig.vaccinationText;
|
|
case CallTypeEnum.nebulization:
|
|
return isListView ? globalConfig.callForNebulizationText : globalConfig.nebulizationText;
|
|
case CallTypeEnum.none:
|
|
return isListView ? globalConfig.callForVitalSignText : globalConfig.vitalSignText;
|
|
|
|
default:
|
|
return globalConfig.callForVitalSignText;
|
|
}
|
|
}
|
|
|
|
SvgPicture icon(double height, {double? width, BoxFit fit = BoxFit.contain}) {
|
|
String iconPath = "";
|
|
if (this == CallTypeEnum.vitalSign) {
|
|
iconPath = AppAssets.vitalSignIcon;
|
|
} else if (this == CallTypeEnum.doctor) {
|
|
iconPath = AppAssets.doctorIcon;
|
|
} else if (this == CallTypeEnum.procedure) {
|
|
iconPath = AppAssets.procedureIcon;
|
|
} else if (this == CallTypeEnum.vaccination) {
|
|
iconPath = AppAssets.vaccinationIcon;
|
|
} else if (this == CallTypeEnum.nebulization) {
|
|
iconPath = AppAssets.nebulizationIcon;
|
|
}
|
|
|
|
return SvgPicture.asset(
|
|
iconPath.isEmpty ? "assets/images/wait.svg" : iconPath,
|
|
height: height,
|
|
width: width,
|
|
fit: fit,
|
|
);
|
|
}
|
|
|
|
String audio(String lang) {
|
|
if (this == CallTypeEnum.vitalSign) {
|
|
return "visit_nurse.mp3";
|
|
} else if (this == CallTypeEnum.doctor) {
|
|
return "visit_doctor.mp3";
|
|
} else if (this == CallTypeEnum.procedure) {
|
|
return "visit_doctor.mp3";
|
|
} else if (this == CallTypeEnum.vaccination) {
|
|
return "visit_doctor.mp3";
|
|
} else if (this == CallTypeEnum.nebulization) {
|
|
return "visit_doctor.mp3";
|
|
}
|
|
return "";
|
|
}
|
|
}
|