diff --git a/assets/new_design_icons/lab_icon.svg b/assets/new_design_icons/lab_icon.svg
new file mode 100644
index 0000000..245048d
--- /dev/null
+++ b/assets/new_design_icons/lab_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart
index 44489d6..4e07f60 100644
--- a/lib/api/api_client.dart
+++ b/lib/api/api_client.dart
@@ -95,7 +95,8 @@ class ApiClientImp implements ApiClient {
loggerService.logInfo("------Payload------");
loggerService.logInfo(jsonDecode(requestBody).toString());
loggerService.logInfo("------Response------");
- loggerService.logInfo(jsonDecode(response.body).toString());
+ log(jsonDecode(response.body).toString());
+ // loggerService.logInfo(jsonDecode(response.body).toString());
}
if (response.statusCode >= 200 && response.statusCode < 500) {
var jsonData = jsonDecode(response.body);
diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart
index 9223e46..59fa923 100644
--- a/lib/constants/app_constants.dart
+++ b/lib/constants/app_constants.dart
@@ -157,6 +157,7 @@ class AppAssets {
static String newVitalSignIcon = "assets/images/vitalsign_icon.svg";
static String newDoctorIcon = "assets/images/doctor_icon.svg";
static String textBgLeaf = "assets/new_design_icons/text_bg_leaf.svg";
+ static String labIcon = "assets/new_design_icons/lab_icon.svg";
}
class AppConstants {
@@ -169,6 +170,7 @@ class AppConstants {
static int thresholdForListUI = 5;
static double currentBuildVersion = 9.2;
static double clearLogsHoursThreshold = 48;
+
// Maximum log file size in bytes before rotation/clearing. Default 2 MB.
static int maxLogFileSizeBytes = 2 * 1024 * 1024;
}
@@ -178,7 +180,8 @@ class ApiConstants {
static String baseUrlUat = 'https://ms.hmg.com/nscapi'; // UAT
static String baseUrlDev = 'https://ms.hmg.com/nscapi2'; // DEV
- static String baseUrl = baseUrlLive;
+ // static String baseUrl = baseUrlLive;
+ static String baseUrl = baseUrlDev;
static String baseUrlHub = '$baseUrl/PatientCallingHub';
static String baseUrlApi = '$baseUrl/api';
static String baseUrlApiGen = '$baseUrl/api/Gen';
@@ -235,13 +238,7 @@ class MockJsonRepo {
static TicketData ticket = TicketData(
id: 189805,
patientID: 4292695,
- laBQGroupID: null,
queueNo: 'W-T-4',
- counterBatchNo: null,
- calledBy: null,
- calledOn: null,
- servedOn: null,
- patientName: null,
mobileNo: '0598544522',
patientEmail: 'munira.ali@hotmail.com',
preferredLang: 2,
@@ -250,12 +247,8 @@ class MockJsonRepo {
postVoiceText: 'Call for Vital Signs',
patientGender: 2,
roomNo: 'D 12',
- isActive: null,
- createdBy: null,
- editedBy: null,
editedOn: DateTime.parse('2025-08-18 15:09:03.633'),
createdOn: DateTime.parse('2025-08-18 15:06:07.363'),
- doctorNameN: null,
callTypeEnum: CallTypeEnum.doctor,
queueNoM: 'W-T-4',
callNoStr: 'W_T-4',
@@ -265,7 +258,6 @@ class MockJsonRepo {
orientationType: 0,
isTurnOn: false,
concurrentCallDelaySec: 0,
- crTypeAckIP: null,
voiceLanguageText: 'English',
vitalSignText: 'علامة حيوية',
doctorText: 'الطبيب',
diff --git a/lib/models/global_config_model.dart b/lib/models/global_config_model.dart
index 60820db..20b5c79 100644
--- a/lib/models/global_config_model.dart
+++ b/lib/models/global_config_model.dart
@@ -25,7 +25,8 @@ class GlobalConfigurationsModel {
int? priorityWhatsApp;
int? priorityEmail;
String ticketNoText = "Ticket Number";
- String postVoiceText = "Please Visit Counter";
+ String pleaseVisitCounterTextEn = "Please Visit Counter";
+ String pleaseVisitCounterTextAr = "Please Visit Counter";
int? roomNo;
bool? isRoomNoRequired;
@@ -37,12 +38,12 @@ class GlobalConfigurationsModel {
String? counterTextArb;
String? queueNoTextArb;
String? callForTextArb;
- String? currentServeTextEng;
+ String? currentServeTextEng = "Current Serving";
String? currentServeTextArb;
String maxText = "";
String minText = "";
String nextPrayerTextEng = "Next Prayer";
- String nextPrayerTextArb = "الصلا�� القادمة";
+ String nextPrayerTextArb = "الصلاة القادمة";
String weatherText = "Weather";
String? fajarTextEng;
String? dhuhrTextEng;
@@ -77,7 +78,6 @@ class GlobalConfigurationsModel {
List? kioskQueueList;
List? kioskLanguageConfigList;
- // Indicates whether the screen belongs to Takhasusi main (based on its IP)
bool isFromTakhasusiMain = false;
String vitalSignTextEng = "Vital Sign";
@@ -102,6 +102,12 @@ class GlobalConfigurationsModel {
String callForVaccinationTextArb = "الرجاء التوجّه إلى غرفة التطعيم";
String callForNebulizationTextArb = "الرجاء التوجّه إلى غرفة البخاخة";
+ static String defaultIfNullOrEmpty(dynamic value, String def) {
+ if (value == null) return def;
+ if (value is String && value.trim().isEmpty) return def;
+ return value.toString();
+ }
+
GlobalConfigurationsModel({
this.id,
this.configType,
@@ -122,7 +128,8 @@ class GlobalConfigurationsModel {
this.priorityWhatsApp,
this.priorityEmail,
this.ticketNoText = "Ticket Number",
- this.postVoiceText = "Please Visit Counter",
+ this.pleaseVisitCounterTextEn = "Please Visit Counter",
+ this.pleaseVisitCounterTextAr = "يرجى زيارة الكاونتر",
this.roomTextEng,
this.roomNo,
this.isRoomNoRequired = true,
@@ -132,7 +139,7 @@ class GlobalConfigurationsModel {
this.counterTextArb,
this.queueNoTextArb,
this.callForTextArb,
- this.currentServeTextEng,
+ this.currentServeTextEng = "Current Serving",
this.currentServeTextArb,
this.maxText = "",
this.minText = "",
@@ -195,74 +202,73 @@ class GlobalConfigurationsModel {
});
GlobalConfigurationsModel.fromJson({required Map json, int qType = 1, int screenType = 1}) {
- id = json['id'];
- configType = json['configType'];
- description = json['description'];
- counterStart = json['counterStart'];
- counterEnd = json['counterEnd'];
+ id = json['id'] ?? 0;
+ configType = json['configType'] ?? 0;
+ description = defaultIfNullOrEmpty(json['description'], "");
+ counterStart = json['counterStart'] ?? 0;
+ counterEnd = json['counterEnd'] ?? 0;
concurrentCallDelaySec = json['concurrentCallDelaySec'] ?? 1;
- voiceType = json['voiceType'];
- voiceTypeText = json['voiceTypeText'];
- screenLanguageEnum = (json['screenLanguage'] as int).toLanguageEnum();
- screenLanguageText = json['screenLanguageText'];
- // textDirection = json['textDirection'] == 2 ? TextDirection.rtl : TextDirection.ltr;
- textDirection = TextDirection.rtl;
+ voiceType = json['voiceType'] ?? 0;
+ voiceTypeText = defaultIfNullOrEmpty(json['voiceTypeText'], "");
+ screenLanguageEnum = ((json['screenLanguage'] ?? 1) as int).toLanguageEnum();
+ screenLanguageText = defaultIfNullOrEmpty(json['screenLanguageText'], "English");
+ textDirection = json['textDirection'] == 2 ? TextDirection.rtl : TextDirection.ltr;
+ voiceLanguageEnum = ((json['voiceLanguage'] ?? 1) as int).toLanguageEnum();
+ voiceLanguageText = defaultIfNullOrEmpty(json['voiceLanguageText'], "English");
screenMaxDisplayPatients = json['screenMaxDisplayPatients'] ?? 16;
- // screenMaxDisplayPatients = 15;
- voiceLanguageEnum = (json['voiceLanguage'] as int).toLanguageEnum();
- voiceLanguageText = json['voiceLanguageText'];
- isNotiReq = json['isNotiReq'];
- prioritySMS = json['prioritySMS'];
- priorityWhatsApp = json['priorityWhatsApp'];
- priorityEmail = json['priorityEmail'];
- ticketNoText = json['ticketNoText'] ?? "Ticket Number";
- postVoiceText = json['pleaseVisitCounterText'] ?? "Please Visit Counter";
- roomNo = json['roomNo'];
+ isNotiReq = json['isNotiReq'] ?? false;
+ prioritySMS = json['prioritySMS'] ?? 0;
+ priorityWhatsApp = json['priorityWhatsApp'] ?? 0;
+ priorityEmail = json['priorityEmail'] ?? 0;
+ ticketNoText = defaultIfNullOrEmpty(json['ticketNoText'], "Ticket Number");
+ pleaseVisitCounterTextEn = defaultIfNullOrEmpty(json['pleaseVisitCounterText'], "Please Visit Counter");
+ pleaseVisitCounterTextAr = defaultIfNullOrEmpty(json['pleaseVisitCounterTextAr'], "يرجى زيارة الكاونتر");
+ roomNo = json['roomNo'] ?? 0;
isRoomNoRequired = json['isRoomNoReq'] ?? true;
- queueNoTextEng = json['queueNoText'];
- callForTextEng = json['callForText'];
- counterTextEng = json['counterText'];
- roomTextEng = json['roomText'];
- queueNoTextArb = json['queueNoTextAr'] ?? "الرقم";
- callForTextArb = json['callForTextAr'] ?? "التوجه إلى";
- counterTextArb = json['counterTextAr'] ?? "";
- roomTextArb = json['roomTextAr'] ?? "الغرفة";
- currentServeTextEng = json['currentServeText'];
- currentServeTextArb = json['currentServeTextAr'] ?? "يتم خدمة";
- maxText = json['maxText'] ?? "";
- minText = json['minText'] ?? "";
- nextPrayerTextEng = json['nextPrayerText'] ?? "Next Prayer";
- nextPrayerTextArb = json['nextPrayerTextArb'] ?? "الصلاة القادمة";
- weatherText = json['weatherText'] ?? "Weather";
- fajarTextEng = json['fajarText'];
- dhuhrTextEng = json['dhuhrText'];
- asarTextEng = json['asarText'];
- maghribTextEng = json['maghribText'];
- ishaTextEng = json['ishaText'];
- fajarTextArb = json['fajarTextAr'] ?? AppStrings.prayersArray[0];
- dhuhrTextArb = json['dhuhrTextAr'] ?? AppStrings.prayersArray[1];
- asarTextArb = json['asarTextAr'] ?? AppStrings.prayersArray[2];
- maghribTextArb = json['maghribTextAr'] ?? AppStrings.prayersArray[3];
- ishaTextArb = json['ishaTextAr'] ?? AppStrings.prayersArray[4];
- isActive = json['isActive'];
- createdBy = json['createdBy'];
- createdOn = json['createdOn'];
+ queueNoTextEng = defaultIfNullOrEmpty(json['queueNoText'], "Queue Number");
+ callForTextEng = defaultIfNullOrEmpty(json['callForText'], "Please Proceed");
+ counterTextEng = defaultIfNullOrEmpty(json['counterText'], "Counter");
+ roomTextEng = defaultIfNullOrEmpty(json['roomText'], "Room");
+ queueNoTextArb = defaultIfNullOrEmpty(json['queueNoTextAr'], "الرقم");
+ callForTextArb = defaultIfNullOrEmpty(json['callForTextAr'], "التوجه إلى");
+ counterTextArb = defaultIfNullOrEmpty(json['counterTextAr'], "الكاونتر");
+ roomTextArb = defaultIfNullOrEmpty(json['roomTextAr'], "الغرفة");
+ currentServeTextEng = defaultIfNullOrEmpty(json['currentServeText'], "Current Serving");
+ currentServeTextArb = defaultIfNullOrEmpty(json['currentServeTextAr'], "يتم خدمة");
+ maxText = defaultIfNullOrEmpty(json['maxText'], "");
+ minText = defaultIfNullOrEmpty(json['minText'], "");
+ nextPrayerTextEng = defaultIfNullOrEmpty(json['nextPrayerText'], "Next Prayer");
+ nextPrayerTextArb = defaultIfNullOrEmpty(json['nextPrayerTextArb'], "الصلاة القادمة");
+ weatherText = defaultIfNullOrEmpty(json['weatherText'], "Weather");
+ fajarTextEng = defaultIfNullOrEmpty(json['fajarText'], "Fajr");
+ dhuhrTextEng = defaultIfNullOrEmpty(json['dhuhrText'], "Dhuhr");
+ asarTextEng = defaultIfNullOrEmpty(json['asarText'], "Asar");
+ maghribTextEng = defaultIfNullOrEmpty(json['maghribText'], "Maghrib");
+ ishaTextEng = defaultIfNullOrEmpty(json['ishaText'], "Isha");
+ fajarTextArb = defaultIfNullOrEmpty(json['fajarTextAr'], AppStrings.prayersArray[0]);
+ dhuhrTextArb = defaultIfNullOrEmpty(json['dhuhrTextAr'], AppStrings.prayersArray[1]);
+ asarTextArb = defaultIfNullOrEmpty(json['asarTextAr'], AppStrings.prayersArray[2]);
+ maghribTextArb = defaultIfNullOrEmpty(json['maghribTextAr'], AppStrings.prayersArray[3]);
+ ishaTextArb = defaultIfNullOrEmpty(json['ishaTextAr'], AppStrings.prayersArray[4]);
+ isActive = json['isActive'] ?? true;
+ createdBy = json['createdBy'] ?? 0;
+ createdOn = defaultIfNullOrEmpty(json['createdOn'], "");
editedBy = json['editedBy'];
editedOn = json['editedOn'];
isToneReq = json['isToneReq'] ?? false;
isVoiceReq = json['isVoiceReq'] ?? false;
orientationTypeEnum = ((json['orientationType'] ?? 1) as int).toScreenOrientationEnum();
- isTurnOn = json['isTurnOn'];
- waitingAreaType = json['waitingAreaType'];
- gender = json['gender'];
+ isTurnOn = json['isTurnOn'] ?? true;
+ waitingAreaType = json['waitingAreaType'] ?? 0;
+ gender = json['gender'] ?? 0;
isWeatherReq = json['isWeatherReq'] ?? false;
isPrayerTimeReq = json['isPrayerTimeReq'] ?? false;
isRssFeedReq = json['isRssFeedReq'] ?? false;
qTypeEnum = ((json['qType'] ?? qType) as int).toQTypeEnum();
screenTypeEnum = ((json['screenType'] ?? screenType) as int).toScreenTypeEnum();
- projectID = json['projectID'];
- projectLatitude = json['projectLatitude'] == 0 ? 0.0 : json['projectLatitude'];
- projectLongitude = json['projectLongitude'] == 0 ? 0.0 : json['projectLongitude'];
+ projectID = json['projectID'] ?? 0;
+ projectLatitude = json['projectLatitude']?.toDouble() ?? 0.0;
+ projectLongitude = json['projectLongitude']?.toDouble() ?? 0.0;
cityKey = json['cityKey'] ?? 0;
if (json['kioskQueue'] != null) {
kioskQueueList = List.from(json['kioskQueue'].map((kioskQueueJson) => KioskQueueModel.fromJson(kioskQueueJson)));
@@ -274,33 +280,31 @@ class GlobalConfigurationsModel {
} else {
kioskLanguageConfigList = [];
}
- // Default to false; actual value (based on device IP) is set in ViewModel after loading config
isFromTakhasusiMain = false;
- vitalSignTextEng = json['vitalSignText'];
- doctorTextEng = json['doctorText'];
- procedureTextEng = json['procedureText'];
- vaccinationTextEng = json['vaccinationText'];
- nebulizationTextEng = json['nebulizationText'];
- callForVitalSignTextEng = json['callForVitalSignText'];
- callForDoctorTextEng = json['callForDoctorText'];
- callForProcedureTextEng = json['callForProcedureText'];
- callForVaccinationTextEng = json['callForVaccinationText'];
- callForNebulizationTextEng = json['callForNebulizationText'];
-
- vitalSignTextArb = json['vitalSignTextAr'] ?? "غرفة العلامات الحيوية";
- doctorTextArb = json['doctorTextAr'] ?? " غرفة الطبيب";
- procedureTextArb = json['procedureTextAr'] ?? "غرفة الإجراء";
- vaccinationTextArb = json['vaccinationTextAr'] ?? "غرفة التطعيم";
- nebulizationTextArb = json['nebulizationTextAr'] ?? "غرفة البخاخة";
- callForVitalSignTextArb = json['callForVitalSignTextAr'] ?? " غرفة استدعاء للعلامات الحيوية";
- callForDoctorTextArb = json['callForDoctorTextAr'] ?? "الرجاء التوجّه إلى غرفة الطبيب";
- callForProcedureTextArb = json['callForProcedureTextAr'] ?? "الرجاء التوجّه إلى غرفة الإجراء";
- callForVaccinationTextArb = json['callForVaccinationTextAr'] ?? "الرجاء لتوجّه إلى غرفة التطعيم";
- callForNebulizationTextArb = json['callForNebulizationTextAr'] ?? "الرجاء التوجّه إلى غرفة البخاخة";
+ vitalSignTextEng = defaultIfNullOrEmpty(json['vitalSignText'], "Vital Sign");
+ doctorTextEng = defaultIfNullOrEmpty(json['doctorText'], "Doctor");
+ procedureTextEng = defaultIfNullOrEmpty(json['procedureText'], "Procedure");
+ vaccinationTextEng = defaultIfNullOrEmpty(json['vaccinationText'], "Vaccination");
+ nebulizationTextEng = defaultIfNullOrEmpty(json['nebulizationText'], "Nebulization");
+ callForVitalSignTextEng = defaultIfNullOrEmpty(json['callForVitalSignText'], "Call for Vital Sign");
+ callForDoctorTextEng = defaultIfNullOrEmpty(json['callForDoctorText'], "Call for Doctor");
+ callForProcedureTextEng = defaultIfNullOrEmpty(json['callForProcedureText'], "Call for Procedure");
+ callForVaccinationTextEng = defaultIfNullOrEmpty(json['callForVaccinationText'], "Call for Vaccination");
+ callForNebulizationTextEng = defaultIfNullOrEmpty(json['callForNebulizationText'], "Call for Nebulization");
+ vitalSignTextArb = defaultIfNullOrEmpty(json['vitalSignTextAr'], "العلامات الحيوية");
+ doctorTextArb = defaultIfNullOrEmpty(json['doctorTextAr'], "الطبيب");
+ procedureTextArb = defaultIfNullOrEmpty(json['procedureTextAr'], "الإجراء");
+ vaccinationTextArb = defaultIfNullOrEmpty(json['vaccinationTextAr'], "التطعيم");
+ nebulizationTextArb = defaultIfNullOrEmpty(json['nebulizationTextAr'], "البخاخة");
+ callForVitalSignTextArb = defaultIfNullOrEmpty(json['callForVitalSignTextAr'], "الرجاء التوجّه إلى غرفة العلامات الحيوية");
+ callForDoctorTextArb = defaultIfNullOrEmpty(json['callForDoctorTextAr'], "الرجاء التوجّه إلى غرفة الطبيب");
+ callForProcedureTextArb = defaultIfNullOrEmpty(json['callForProcedureTextAr'], "الرجاء التوجّه إلى غرفة الإجراء");
+ callForVaccinationTextArb = defaultIfNullOrEmpty(json['callForVaccinationTextAr'], "الرجاء التوجّه إلى غرفة التطعيم");
+ callForNebulizationTextArb = defaultIfNullOrEmpty(json['callForNebulizationTextAr'], "الرجاء التوجّه إلى غرفة البخاخة");
}
@override
String toString() {
- return 'GlobalConfigurationsModel{id: $id, isFromTakhasusiMain: $isFromTakhasusiMain, configType: $configType, description: $description, counterStart: $counterStart, counterEnd: $counterEnd, concurrentCallDelaySec: $concurrentCallDelaySec, voiceType: $voiceType, voiceTypeText: $voiceTypeText, screenLanguageEnum: $screenLanguageEnum, screenLanguageText: $screenLanguageText, textDirection: $textDirection, voiceLanguageEnum: $voiceLanguageEnum, voiceLanguageText: $voiceLanguageText, screenMaxDisplayPatients: $screenMaxDisplayPatients, isNotiReq: $isNotiReq, prioritySMS: $prioritySMS, priorityWhatsApp: $priorityWhatsApp, priorityEmail: $priorityEmail, ticketNoText: $ticketNoText, postVoiceText: $postVoiceText, roomText: $roomTextEng, roomNo: $roomNo, isRoomNoRequired: $isRoomNoRequired, counterText: $counterTextEng, queueNoText: $queueNoTextEng, callForText: $callForTextEng, currentServeTextArb: $currentServeTextArb,, currentServeTextEng: $currentServeTextEng, maxText: $maxText, minText: $minText, nextPrayerTextEng: $nextPrayerTextEng, nextPrayerTextArb: $nextPrayerTextArb, weatherText: $weatherText, fajarText: $fajarTextEng, dhuhrText: $dhuhrTextEng, asarText: $asarTextEng, maghribText: $maghribTextEng, ishaText: $ishaTextEng, isActive: $isActive, createdBy: $createdBy, createdOn: $createdOn, editedBy: $editedBy, editedOn: $editedOn, isToneReq: $isToneReq, isVoiceReq: $isVoiceReq, orientationTypeEnum: $orientationTypeEnum, isTurnOn: $isTurnOn, waitingAreaType: $waitingAreaType, gender: $gender, isWeatherReq: $isWeatherReq, isPrayerTimeReq: $isPrayerTimeReq, isRssFeedReq: $isRssFeedReq, qTypeEnum: $qTypeEnum, screenTypeEnum: $screenTypeEnum, projectID: $projectID, projectLatitude: $projectLatitude, projectLongitude: $projectLongitude, cityKey: $cityKey, kioskQueueList: $kioskQueueList, kioskLanguageConfigList: $kioskLanguageConfigList, vitalSignText: $vitalSignTextEng, doctorText: $doctorTextEng, procedureText: $procedureTextEng, vaccinationText: $vaccinationTextEng, nebulizationText: $nebulizationTextEng, callForVitalSignText: $callForVitalSignTextEng, callForDoctorText: $callForDoctorTextEng, callForProcedureText: $callForProcedureTextEng, callForVaccinationText: $callForVaccinationTextEng, callForNebulizationText: $callForNebulizationTextEng, vitalSignTextArb: $vitalSignTextArb, doctorTextArb: $doctorTextArb, procedureTextArb: $procedureTextArb, vaccinationTextArb: $vaccinationTextArb, nebulizationTextArb: $nebulizationTextArb, callForVitalSignTextArb: $callForVitalSignTextArb, callForDoctorTextArb: $callForDoctorTextArb, callForProcedureTextArb: $callForProcedureTextArb, callForVaccinationTextArb: $callForVaccinationTextArb, callForNebulizationTextArb: $callForNebulizationTextArb}';
+ return 'GlobalConfigurationsModel{id: $id, isFromTakhasusiMain: $isFromTakhasusiMain, configType: $configType, description: $description, counterStart: $counterStart, counterEnd: $counterEnd, concurrentCallDelaySec: $concurrentCallDelaySec, voiceType: $voiceType, voiceTypeText: $voiceTypeText, screenLanguageEnum: $screenLanguageEnum, screenLanguageText: $screenLanguageText, textDirection: $textDirection, voiceLanguageEnum: $voiceLanguageEnum, voiceLanguageText: $voiceLanguageText, screenMaxDisplayPatients: $screenMaxDisplayPatients, isNotiReq: $isNotiReq, prioritySMS: $prioritySMS, priorityWhatsApp: $priorityWhatsApp, priorityEmail: $priorityEmail, ticketNoText: $ticketNoText, pleaseVisitCounterTextEn: $pleaseVisitCounterTextEn,pleaseVisitCounterTextAr: $pleaseVisitCounterTextAr, roomText: $roomTextEng, roomNo: $roomNo, isRoomNoRequired: $isRoomNoRequired, counterText: $counterTextEng, queueNoText: $queueNoTextEng, callForText: $callForTextEng, currentServeTextArb: $currentServeTextArb,, currentServeTextEng: $currentServeTextEng, maxText: $maxText, minText: $minText, nextPrayerTextEng: $nextPrayerTextEng, nextPrayerTextArb: $nextPrayerTextArb, weatherText: $weatherText, fajarText: $fajarTextEng, dhuhrText: $dhuhrTextEng, asarText: $asarTextEng, maghribText: $maghribTextEng, ishaText: $ishaTextEng, isActive: $isActive, createdBy: $createdBy, createdOn: $createdOn, editedBy: $editedBy, editedOn: $editedOn, isToneReq: $isToneReq, isVoiceReq: $isVoiceReq, orientationTypeEnum: $orientationTypeEnum, isTurnOn: $isTurnOn, waitingAreaType: $waitingAreaType, gender: $gender, isWeatherReq: $isWeatherReq, isPrayerTimeReq: $isPrayerTimeReq, isRssFeedReq: $isRssFeedReq, qTypeEnum: $qTypeEnum, screenTypeEnum: $screenTypeEnum, projectID: $projectID, projectLatitude: $projectLatitude, projectLongitude: $projectLongitude, cityKey: $cityKey, kioskQueueList: $kioskQueueList, kioskLanguageConfigList: $kioskLanguageConfigList, vitalSignText: $vitalSignTextEng, doctorText: $doctorTextEng, procedureText: $procedureTextEng, vaccinationText: $vaccinationTextEng, nebulizationText: $nebulizationTextEng, callForVitalSignText: $callForVitalSignTextEng, callForDoctorText: $callForDoctorTextEng, callForProcedureText: $callForProcedureTextEng, callForVaccinationText: $callForVaccinationTextEng, callForNebulizationText: $callForNebulizationTextEng, vitalSignTextArb: $vitalSignTextArb, doctorTextArb: $doctorTextArb, procedureTextArb: $procedureTextArb, vaccinationTextArb: $vaccinationTextArb, nebulizationTextArb: $nebulizationTextArb, callForVitalSignTextArb: $callForVitalSignTextArb, callForDoctorTextArb: $callForDoctorTextArb, callForProcedureTextArb: $callForProcedureTextArb, callForVaccinationTextArb: $callForVaccinationTextArb, callForNebulizationTextArb: $callForNebulizationTextArb}';
}
}
diff --git a/lib/models/ticket_model.dart b/lib/models/ticket_model.dart
index 7a75d75..9408e01 100644
--- a/lib/models/ticket_model.dart
+++ b/lib/models/ticket_model.dart
@@ -11,104 +11,105 @@ class TicketDetailsModel {
TicketDetailsModel({this.qTypeEnum, this.screenTypeEnum, this.connectionID, this.ticketModel});
TicketDetailsModel.fromJson(Map json) {
- qTypeEnum = json['qType'] != null ? (json['qType'] as int).toQTypeEnum() : null;
- screenTypeEnum = json['screenType'] != null ? (json['screenType'] as int).toScreenTypeEnum() : null;
- connectionID = json['connectionID'];
+ qTypeEnum = json['qType'] != null ? (json['qType'] as int).toQTypeEnum() : QTypeEnum.appointment;
+ screenTypeEnum = json['screenType'] != null ? (json['screenType'] as int).toScreenTypeEnum() : ScreenTypeEnum.waitingAreaScreen;
+ connectionID = json['connectionID'] ?? '';
ticketModel = json['data'] != null
? TicketData.fromJson(
json['data'],
- qTypeEnum: json['qType'] != null ? (json['qType'] as int).toQTypeEnum() : null,
+ qTypeEnum: qTypeEnum,
)
- : null;
+ : TicketData(); // Use default empty TicketData if null
}
}
class TicketData {
- int? id;
- int? patientID;
- int? laBQGroupID;
- String? queueNo;
- int? counterBatchNo;
- int? calledBy;
- String? calledOn;
- String? servedOn;
- String? patientName;
- String? mobileNo;
- String? patientEmail;
- int? preferredLang;
- LanguageEnum voiceLanguageEnum = LanguageEnum.english;
- String ticketNoText = "Ticket Number";
- String postVoiceText = "Please Visit Counter";
- int? patientGender;
- String? roomNo;
- bool? isActive;
- int? createdBy;
- int? editedBy;
+ int id;
+ int patientID;
+ int laBQGroupID;
+ String queueNo;
+ int counterBatchNo;
+ int calledBy;
+ String calledOn;
+ String servedOn;
+ String patientName;
+ String mobileNo;
+ String patientEmail;
+ int preferredLang;
+ LanguageEnum voiceLanguageEnum;
+ String ticketNoText;
+ String postVoiceText;
+ int patientGender;
+ String roomNo;
+ bool isActive;
+ int createdBy;
+ int editedBy;
DateTime? editedOn;
DateTime? createdOn;
// New fields
- String? doctorNameN;
- CallTypeEnum callTypeEnum = CallTypeEnum.vitalSign;
- String? queueNoM;
- String? callNoStr;
- bool? isQueue;
- bool? isToneReq;
- bool? isVoiceReq;
- int? orientationType;
- bool? isTurnOn;
- int? concurrentCallDelaySec;
- String? crTypeAckIP;
- int voiceLanguage = 1;
- String voiceLanguageText = "English";
- String vitalSignText = "Vital Sign";
- String doctorText = "Doctor";
- String procedureText = "Procedure";
- String vaccinationText = "Vaccination";
- String nebulizationText = "Nebulization";
- String callForVitalSignText = "Call for Vital Sign";
- String callForDoctorText = "Call for Doctor";
- String callForProcedureText = "Call for Procedure";
- String callForVaccinationText = "Call for Vaccination";
- String callForNebulizationText = "Call for Nebulization";
- String roomText = "Room";
- String queueNoText = "Counter";
- String callForText = "Call For";
+ String doctorNameN;
+ CallTypeEnum callTypeEnum;
+ String queueNoM;
+ String callNoStr;
+ bool isQueue;
+ bool isToneReq;
+ bool isVoiceReq;
+ int orientationType;
+ bool isTurnOn;
+ int concurrentCallDelaySec;
+ String crTypeAckIP;
+ int voiceLanguage;
+ String voiceLanguageText;
+ String vitalSignText;
+ String doctorText;
+ String procedureText;
+ String vaccinationText;
+ String nebulizationText;
+ String callForVitalSignText;
+ String callForDoctorText;
+ String callForProcedureText;
+ String callForVaccinationText;
+ String callForNebulizationText;
+ String roomText;
+ String queueNoText;
+ String callForText;
TicketData({
- this.id,
- this.patientID,
- this.laBQGroupID,
- this.queueNo,
- this.counterBatchNo,
- this.calledBy,
- this.calledOn,
- this.servedOn,
- this.patientName,
- this.mobileNo,
- this.patientEmail,
- this.preferredLang,
+ this.id = 0,
+ this.patientID = 0,
+ this.laBQGroupID = 0,
+ this.queueNo = "",
+ this.counterBatchNo = 0,
+ this.calledBy = 0,
+ this.calledOn = "",
+ this.servedOn = "",
+ this.patientName = "",
+ this.mobileNo = "",
+ this.patientEmail = "",
+ this.preferredLang = 1,
this.voiceLanguageEnum = LanguageEnum.english,
this.ticketNoText = "Ticket Number",
this.postVoiceText = "Please Visit Counter",
- this.patientGender,
- this.roomNo,
- this.isActive,
- this.createdBy,
- this.createdOn,
- this.editedBy,
- this.editedOn,
- this.doctorNameN,
- this.callTypeEnum = CallTypeEnum.vitalSign,
- this.queueNoM,
- this.callNoStr,
- this.isQueue,
- this.isToneReq,
- this.isVoiceReq,
- this.orientationType,
- this.isTurnOn,
- this.concurrentCallDelaySec,
- this.crTypeAckIP,
+ this.patientGender = 1,
+ this.roomNo = "",
+ this.isActive = true,
+ this.createdBy = 0,
+ this.createdOn, // will fallback in fromJson (see below)
+ this.editedBy = 0,
+ this.editedOn, // will fallback in fromJson (see below)
+ this.doctorNameN = "",
+ this.callTypeEnum = CallTypeEnum.none,
+ this.queueNoM = "",
+ this.callNoStr = "",
+ this.isQueue = false,
+ this.isToneReq = false,
+ this.isVoiceReq = false,
+ this.orientationType = 1,
+ this.isTurnOn = true,
+ this.concurrentCallDelaySec = 1,
+ this.crTypeAckIP = "",
+ this.voiceLanguage = 1,
this.voiceLanguageText = "English",
this.vitalSignText = "Vital Sign",
this.doctorText = "Doctor",
@@ -125,63 +126,61 @@ class TicketData {
this.callForText = "Call For",
});
- TicketData.fromJson(Map json, {QTypeEnum? qTypeEnum}) {
- id = json['id'];
- patientID = json['patientID'];
- laBQGroupID = json['laB_QGroupID'];
- queueNo = json['queueNoM'];
- counterBatchNo = json['counterBatchNo'];
- calledBy = json['calledBy'];
- calledOn = json['calledOn'];
- servedOn = json['servedOn'];
- patientName = json['patientName'];
- mobileNo = json['mobileNo'];
- patientEmail = json['patientEmail'];
- preferredLang = (json['preferredLang'] != null && json['preferredLang'].toString().trim() != "") ? int.parse(json['preferredLang'].toString()) : 1;
- voiceLanguageEnum = (json['preferredLang'] != null && json['preferredLang'].toString().trim() != "") ? (int.parse(json['preferredLang'].toString())).toLanguageEnum() : LanguageEnum.english;
- ticketNoText = json['ticketNoText'] ?? "Ticket Number";
- postVoiceText = json['pleaseVisitCounterText'] ?? "Please Visit Counter";
- patientGender = json['patientGender'] ?? 1;
- roomNo = json['roomNo']?.toString();
- if (qTypeEnum != null && qTypeEnum == QTypeEnum.general) {
- roomNo = json['counterNo']?.toString();
- }
- isActive = json['isActive'];
- createdBy = json['createdBy'];
- editedBy = json['editedBy'];
- editedOn = json['editedOn'] != null ? (json['editedOn'] as String).toDateTime() : DateTime.now();
- createdOn = json['createdOn'] != null ? (json['createdOn'] as String).toDateTime() : DateTime.now();
-
- doctorNameN = json['doctorNameN'];
- callTypeEnum = ((json['callType'] ?? 1) as int).toCallTypeEnum();
- queueNoM = json['queueNoM'];
- callNoStr = json['callNoStr'];
- isQueue = json['isQueue'];
- isToneReq = json['isToneReq'];
- isVoiceReq = json['isVoiceReq'];
- orientationType = json['orientationType'];
- isTurnOn = json['isTurnOn'];
- concurrentCallDelaySec = json['concurrentCallDelaySec'];
- crTypeAckIP = json['crTypeAckIP'];
- voiceLanguage = json['voiceLanguage'] ?? 1;
- voiceLanguageText = json['voiceLanguageText'] ?? "English";
- vitalSignText = json['vitalSignText'];
- doctorText = json['doctorText'];
- procedureText = json['procedureText'];
- vaccinationText = json['vaccinationText'];
- nebulizationText = json['nebulizationText'];
- callForVitalSignText = json['callForVitalSignText'];
- callForDoctorText = json['callForDoctorText'];
- callForProcedureText = json['callForProcedureText'];
- callForVaccinationText = json['callForVaccinationText'];
- callForNebulizationText = json['callForNebulizationText'];
- roomText = json['roomText'];
- queueNoText = json['queueNoText'];
- callForText = json['callForText'];
- }
+ TicketData.fromJson(Map json, {QTypeEnum? qTypeEnum})
+ : id = json['id'] ?? 0,
+ patientID = json['patientID'] ?? 0,
+ laBQGroupID = json['laB_QGroupID'] ?? 0,
+ queueNo = json['queueNo'] ?? "",
+ counterBatchNo = json['counterBatchNo'] ?? 0,
+ calledBy = json['calledBy'] ?? 0,
+ calledOn = json['calledOn'] ?? "",
+ servedOn = json['servedOn'] ?? "",
+ patientName = json['patientName'] ?? "",
+ mobileNo = json['mobileNo'] ?? "",
+ patientEmail = json['patientEmail'] ?? "",
+ preferredLang = (json['preferredLang'] != null && json['preferredLang'].toString().trim() != "") ? int.parse(json['preferredLang'].toString()) : 1,
+ voiceLanguageEnum = (json['preferredLang'] != null && json['preferredLang'].toString().trim() != "") ? (int.parse(json['preferredLang'].toString())).toLanguageEnum() : LanguageEnum.english,
+ ticketNoText = json['ticketNoText'] ?? "Ticket Number",
+ postVoiceText = json['pleaseVisitCounterText'] ?? "Please Visit Counter",
+ patientGender = json['patientGender'] ?? 1,
+ roomNo = (() {
+ if (qTypeEnum != null && qTypeEnum == QTypeEnum.general) {
+ return json['counterNo']?.toString() ?? "";
+ }
+ return json['roomNo']?.toString() ?? "";
+ })(),
+ isActive = json['isActive'] ?? true,
+ createdBy = json['createdBy'] ?? 0,
+ editedBy = json['editedBy'] ?? 0,
+ createdOn = json['createdOn'] != null ? (json['createdOn'] as String).toDateTime() : DateTime.now(),
+ editedOn = json['editedOn'] != null ? (json['editedOn'] as String).toDateTime() : DateTime.now(),
+ doctorNameN = json['doctorNameN'] ?? "",
+ callTypeEnum = ((json['callType'] ?? 0) as int).toCallTypeEnum(),
+ queueNoM = json['queueNoM'] ?? "",
+ callNoStr = json['callNoStr'] ?? "",
+ isQueue = json['isQueue'] ?? false,
+ isToneReq = json['isToneReq'] ?? false,
+ isVoiceReq = json['isVoiceReq'] ?? false,
+ orientationType = json['orientationType'] ?? 1,
+ isTurnOn = json['isTurnOn'] ?? true,
+ concurrentCallDelaySec = json['concurrentCallDelaySec'] ?? 1,
+ crTypeAckIP = json['crTypeAckIP'] ?? "",
+ voiceLanguage = json['voiceLanguage'] ?? 1,
+ voiceLanguageText = json['voiceLanguageText'] ?? "English",
+ vitalSignText = json['vitalSignText'] ?? "Vital Sign",
+ doctorText = json['doctorText'] ?? "Doctor",
+ procedureText = json['procedureText'] ?? "Procedure",
+ vaccinationText = json['vaccinationText'] ?? "Vaccination",
+ nebulizationText = json['nebulizationText'] ?? "Nebulization",
+ callForVitalSignText = json['callForVitalSignText'] ?? "Call for Vital Sign",
+ callForDoctorText = json['callForDoctorText'] ?? "Call for Doctor",
+ callForProcedureText = json['callForProcedureText'] ?? "Call for Procedure",
+ callForVaccinationText = json['callForVaccinationText'] ?? "Call for Vaccination",
+ callForNebulizationText = json['callForNebulizationText'] ?? "Call for Nebulization",
+ roomText = json['roomText'] ?? "Room",
+ queueNoText = json['queueNoText'] ?? "Counter",
+ callForText = json['callForText'] ?? "Call For";
@override
- String toString() {
- return 'TicketData{id: $id, patientID: $patientID, laBQGroupID: $laBQGroupID, queueNo: $queueNo, counterBatchNo: $counterBatchNo, calledBy: $calledBy, calledOn: $calledOn, servedOn: $servedOn, patientName: $patientName, mobileNo: $mobileNo, patientEmail: $patientEmail, preferredLang: $preferredLang, voiceLanguageEnum: $voiceLanguageEnum, ticketNoText: $ticketNoText, postVoiceText: $postVoiceText, patientGender: $patientGender, roomNo: $roomNo, isActive: $isActive, createdBy: $createdBy, editedBy: $editedBy, editedOn: $editedOn, createdOn: $createdOn, doctorNameN: $doctorNameN, callTypeEnum: $callTypeEnum, queueNoM: $queueNoM, callNoStr: $callNoStr, isQueue: $isQueue, isToneReq: $isToneReq, isVoiceReq: $isVoiceReq, orientationType: $orientationType, isTurnOn: $isTurnOn, concurrentCallDelaySec: $concurrentCallDelaySec, crTypeAckIP: $crTypeAckIP, voiceLanguage: $voiceLanguage, voiceLanguageText: $voiceLanguageText, vitalSignText: $vitalSignText, doctorText: $doctorText, procedureText: $procedureText, vaccinationText: $vaccinationText, nebulizationText: $nebulizationText, callForVitalSignText: $callForVitalSignText, callForDoctorText: $callForDoctorText, callForProcedureText: $callForProcedureText, callForVaccinationText: $callForVaccinationText, callForNebulizationText: $callForNebulizationText, roomText: $roomText, queueNoText: $queueNoText, callForText: $callForText}';
- }
+ String toString() => 'TicketData{id: $id, patientID: $patientID, laBQGroupID: $laBQGroupID, queueNo: $queueNo, ...}';
}
diff --git a/lib/services/logger_service.dart b/lib/services/logger_service.dart
index 24cb012..6c0732a 100644
--- a/lib/services/logger_service.dart
+++ b/lib/services/logger_service.dart
@@ -95,7 +95,7 @@ class LoggerServiceImp implements LoggerService {
try {
ScreenConfigViewModel screenConfigViewModel = getIt.get();
final timestamp = DateFormat('yyyy-MM-dd hh:mm:ss a').format(DateTime.now());
- final sep = '==================== CRASH ====================';
+ const sep = '==================== CRASH ====================';
final contextStr = context ?? 'No context provided';
final errorMsg = error.toString();
final stack = stackTrace?.toString() ?? 'No stack trace available';
diff --git a/lib/utilities/extensions.dart b/lib/utilities/extensions.dart
index 859567f..13f26fb 100644
--- a/lib/utilities/extensions.dart
+++ b/lib/utilities/extensions.dart
@@ -166,6 +166,7 @@ extension LanguageEnumToString on LanguageEnum {
extension XCallType on CallTypeEnum {
Color getColorByCallType() {
+ log("getColorByCallType: $this");
if (this == CallTypeEnum.vitalSign) {
return AppColors.newVitalSignColor;
} else if (this == CallTypeEnum.doctor) {
@@ -176,9 +177,10 @@ extension XCallType on CallTypeEnum {
return AppColors.vaccinationColor;
} else if (this == CallTypeEnum.nebulization) {
return AppColors.nebulizationColor;
- } else {
- return Colors.black54;
+ } else if (this == CallTypeEnum.none) {
+ return AppColors.newDoctorColor;
}
+ return AppColors.newDoctorColor;
}
String getMessageByCallTypeForEnglish(GlobalConfigurationsModel globalConfig, {bool isListView = false}) {
@@ -194,7 +196,7 @@ extension XCallType on CallTypeEnum {
case CallTypeEnum.nebulization:
return !isListView ? globalConfig.callForNebulizationTextEng : globalConfig.nebulizationTextEng;
case CallTypeEnum.none:
- return !isListView ? globalConfig.callForVitalSignTextEng : globalConfig.vitalSignTextEng;
+ return !isListView ? (globalConfig.pleaseVisitCounterTextEn ?? '') : (globalConfig.counterTextEng ?? '');
}
}
@@ -211,11 +213,15 @@ extension XCallType on CallTypeEnum {
case CallTypeEnum.nebulization:
return !isListView ? globalConfig.callForNebulizationTextArb : globalConfig.nebulizationTextArb;
case CallTypeEnum.none:
- return !isListView ? globalConfig.callForVitalSignTextArb : globalConfig.vitalSignTextArb;
+ return !isListView ? (globalConfig.pleaseVisitCounterTextAr ?? '') : (globalConfig.counterTextArb ?? '');
}
}
- SvgPicture getIconByCallType(double height, {double? width, BoxFit fit = BoxFit.contain}) {
+ Widget getIconByCallType(double height, QTypeEnum qType, {double? width, BoxFit fit = BoxFit.contain}) {
+ if (this == CallTypeEnum.vitalSign) {
+ return const SizedBox.shrink();
+ }
+
String iconPath = "";
if (this == CallTypeEnum.vitalSign) {
iconPath = AppAssets.newVitalSignIcon;
@@ -229,6 +235,10 @@ extension XCallType on CallTypeEnum {
iconPath = AppAssets.nebulizationIcon;
}
+ if (qType == QTypeEnum.lab) {
+ iconPath = AppAssets.labIcon;
+ }
+
return SvgPicture.asset(
iconPath.isEmpty ? "assets/images/wait.svg" : iconPath,
height: height,
@@ -251,7 +261,7 @@ extension XCallType on CallTypeEnum {
case CallTypeEnum.nebulization:
return 5;
case CallTypeEnum.none:
- return 1;
+ return 0;
}
}
@@ -268,7 +278,7 @@ extension XCallType on CallTypeEnum {
case CallTypeEnum.nebulization:
return AppColors.gradientBorderComboForVitalSigns;
case CallTypeEnum.none:
- return AppColors.gradientBorderComboForVitalSigns;
+ return AppColors.gradientBorderComboForDoctor;
}
}
@@ -284,8 +294,8 @@ extension XCallType on CallTypeEnum {
return ticket.callForVaccinationText;
case CallTypeEnum.nebulization:
return ticket.callForNebulizationText;
- default:
- return ticket.callForVitalSignText;
+ case CallTypeEnum.none:
+ return '';
}
}
}
@@ -297,7 +307,7 @@ extension XCallTypeInt on int {
if (this == 3) return CallTypeEnum.procedure;
if (this == 4) return CallTypeEnum.vaccination;
if (this == 5) return CallTypeEnum.nebulization;
- return CallTypeEnum.vitalSign;
+ return CallTypeEnum.none;
}
}
diff --git a/lib/view_models/queuing_view_model.dart b/lib/view_models/queuing_view_model.dart
index d37f396..99a7611 100644
--- a/lib/view_models/queuing_view_model.dart
+++ b/lib/view_models/queuing_view_model.dart
@@ -215,7 +215,9 @@ class QueuingViewModel extends ChangeNotifier {
callTypeEnum: ticketData.callTypeEnum,
);
} else {
- screenConfigViewModel.acknowledgeTicket(ticketQueueID: ticketData.id ?? 0);
+ screenConfigViewModel.acknowledgeTicket(ticketQueueID: ticketData.id ?? 0,
+ ipAddress: screenConfigViewModel.currentScreenIP,
+ );
}
log("globalConfigurationsModel: ${globalConfigurationsModel.toString()}");
diff --git a/lib/view_models/screen_config_view_model.dart b/lib/view_models/screen_config_view_model.dart
index d5c8665..9e72288 100644
--- a/lib/view_models/screen_config_view_model.dart
+++ b/lib/view_models/screen_config_view_model.dart
@@ -477,9 +477,9 @@ class ScreenConfigViewModel extends ChangeNotifier {
}
}
- Future acknowledgeTicket({required int ticketQueueID}) async {
+ Future acknowledgeTicket({required int ticketQueueID, required String ipAddress}) async {
GenericRespModel? response = await screenDetailsRepo.acknowledgeTicket(
- ipAddress: currentScreenIP,
+ ipAddress: ipAddress,
ticketQueueID: ticketQueueID,
qTypeEnum: globalConfigurationsModel.qTypeEnum,
);
diff --git a/lib/views/common_widgets/app_general_widgets.dart b/lib/views/common_widgets/app_general_widgets.dart
index b9c2a02..143147c 100644
--- a/lib/views/common_widgets/app_general_widgets.dart
+++ b/lib/views/common_widgets/app_general_widgets.dart
@@ -1,3 +1,5 @@
+import 'dart:developer';
+
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:hmg_qline/constants/app_constants.dart';
@@ -128,7 +130,7 @@ Widget counterNoText({required int counterNo, required bool isRoomNoRequired, re
fontFamily: AppStrings.fontNamePoppins,
textAlign: TextAlign.center,
fontWeight: FontWeight.bold,
- color: isRoomNoRequired ? Colors.black : Colors.transparent,
+ color: isRoomNoRequired ? AppColors.greyTextColor : Colors.transparent,
fontSize: SizeConfig.getWidthMultiplier() * 8,
);
}
diff --git a/lib/views/main_queue_screen/components/priority_tickets.dart b/lib/views/main_queue_screen/components/priority_tickets.dart
index 6547a3b..83eef4d 100644
--- a/lib/views/main_queue_screen/components/priority_tickets.dart
+++ b/lib/views/main_queue_screen/components/priority_tickets.dart
@@ -3,10 +3,12 @@ import 'package:flutter/material.dart';
import 'package:hmg_qline/models/global_config_model.dart';
import 'package:hmg_qline/models/ticket_model.dart';
import 'package:hmg_qline/utilities/enums.dart';
+import 'package:hmg_qline/view_models/screen_config_view_model.dart';
import 'package:hmg_qline/views/common_widgets/app_general_widgets.dart';
import 'package:hmg_qline/views/main_queue_screen/components/ticket_item_calling_card.dart';
import 'package:hmg_qline/views/main_queue_screen/components/ticket_item_normal_card.dart';
import 'package:hmg_qline/views/view_helpers/size_config.dart';
+import 'package:provider/provider.dart';
class PriorityTickets extends StatelessWidget {
final List tickets;
@@ -93,7 +95,10 @@ class PriorityTickets extends StatelessWidget {
}
Widget _buildPrimaryTicket(BuildContext context, TicketDetailsModel ticket, {bool isFullWidth = false, bool isHalf = false}) {
+ final screenConfigViewModel = context.read();
+
Widget primaryCallingCard = QueueItemCallingCard(
+ qTypeEnum: screenConfigViewModel.currentQTypeEnum,
isGradientRequired: true,
isBorderRequired: true,
isSingleTicket: isFullWidth,
@@ -104,7 +109,7 @@ class PriorityTickets extends StatelessWidget {
roomText: _getRoomText(),
roomTextAr: _getRoomTextAr(),
isClinicAdded: false,
- callTypeEnum: ticket.ticketModel?.callTypeEnum ?? CallTypeEnum.vitalSign,
+ callTypeEnum: ticket.ticketModel?.callTypeEnum ?? CallTypeEnum.none,
textDirection: globalConfigurationsModel.textDirection,
screenTypeEnum: globalConfigurationsModel.screenTypeEnum,
langTypeEnum: globalConfigurationsModel.screenLanguageEnum,
@@ -131,7 +136,7 @@ class PriorityTickets extends StatelessWidget {
child: ConstrainedBox(
constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.6, // 60% of screen width
- minHeight: SizeConfig.getHeightMultiplier() * 2.5, // Minimum height
+ minHeight: SizeConfig.getHeightMultiplier() * 2, // Minimum height
),
child: Transform.scale(
scale: _getTicketScale() + 0.2,
@@ -145,13 +150,15 @@ class PriorityTickets extends StatelessWidget {
}
Widget _buildSecondaryTicket(BuildContext context, TicketDetailsModel ticket, {EdgeInsets? margin, bool isHalf = false}) {
+ final screenConfigViewModel = context.read();
Widget secondaryCallingCard = QueueItemNormalCard(
+ qTypeEnum: screenConfigViewModel.currentQTypeEnum,
ticketNo: ticket.ticketModel?.queueNo ?? '',
roomNo: ticket.ticketModel?.roomNo ?? '',
roomText: _getRoomText(),
roomTextAr: _getRoomTextAr(),
isClinicAdded: false,
- callTypeEnum: ticket.ticketModel?.callTypeEnum ?? CallTypeEnum.vitalSign,
+ callTypeEnum: ticket.ticketModel?.callTypeEnum ?? CallTypeEnum.none,
textDirection: globalConfigurationsModel.textDirection,
screenTypeEnum: globalConfigurationsModel.screenTypeEnum,
langTypeEnum: globalConfigurationsModel.screenLanguageEnum,
@@ -187,7 +194,7 @@ class PriorityTickets extends StatelessWidget {
// Helper methods to reduce repetition
double _getTicketScale() {
return globalConfigurationsModel.screenTypeEnum == ScreenTypeEnum.roomLevelScreen
- ? 2.0
+ ? 1.5
: globalConfigurationsModel.isFromTakhasusiMain
? 0.8
: 1.2;
diff --git a/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart b/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart
index c7fbc91..adf76f3 100644
--- a/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart
+++ b/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart
@@ -48,62 +48,62 @@ class PriorityTicketsWithSideSection extends StatelessWidget {
),
),
),
- if (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment) ...[
- Expanded(
- flex: 8,
- child: SizedBox(
- height: SizeConfig.getHeightMultiplier() * 0.25,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Expanded(
- flex: 2,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- ticketModel.callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.2),
- ],
- ),
+ // if (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment) ...[
+ Expanded(
+ flex: 8,
+ child: SizedBox(
+ height: SizeConfig.getHeightMultiplier() * 0.25,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Expanded(
+ flex: 2,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ ticketModel.callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.2, globalConfigurationsModel.qTypeEnum),
+ ],
),
- Expanded(
- flex: 9,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
+ ),
+ Expanded(
+ flex: 9,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Expanded(
+ flex: 3,
+ child: AppText(
+ callMessageAr,
+ color: ticketModel.callTypeEnum.getColorByCallType(),
+ fontSize: SizeConfig.getWidthMultiplier() * 1.8,
+ fontWeight: FontWeight.bold,
+ fontFamily: AppStrings.fontNameGesTwo,
+ fontHeight: 1,
+ textOverflow: TextOverflow.clip,
+ maxLines: 1,
+ ),
+ ),
+ SizedBox(width: SizeConfig.getWidthMultiplier()),
+ if (callMessageEng.isNotEmpty) ...[
Expanded(
- flex: 3,
+ flex: 2,
child: AppText(
- callMessageAr,
+ "($callMessageEng)",
color: ticketModel.callTypeEnum.getColorByCallType(),
fontSize: SizeConfig.getWidthMultiplier() * 1.8,
- fontWeight: FontWeight.bold,
- fontFamily: AppStrings.fontNameGesTwo,
+ fontFamily: AppStrings.fontNamePoppins,
fontHeight: 1,
- textOverflow: TextOverflow.clip,
- maxLines: 1,
),
),
- SizedBox(width: SizeConfig.getWidthMultiplier()),
- if (callMessageEng.isNotEmpty) ...[
- Expanded(
- flex: 2,
- child: AppText(
- "($callMessageEng)",
- color: ticketModel.callTypeEnum.getColorByCallType(),
- fontSize: SizeConfig.getWidthMultiplier() * 1.8,
- fontFamily: AppStrings.fontNamePoppins,
- fontHeight: 1,
- ),
- ),
- ]
- ],
- ),
+ ]
+ ],
),
- ],
- ),
+ ),
+ ],
),
),
- ],
+ ),
+ // ],
Expanded(
flex: 2,
child: Center(
@@ -124,8 +124,6 @@ class PriorityTicketsWithSideSection extends StatelessWidget {
);
}
-
-
@override
Widget build(BuildContext context) {
List priorityTickets = [];
diff --git a/lib/views/main_queue_screen/components/ticket_item_normal_card.dart b/lib/views/main_queue_screen/components/ticket_item_normal_card.dart
index 87b49fa..b6dd2c1 100644
--- a/lib/views/main_queue_screen/components/ticket_item_normal_card.dart
+++ b/lib/views/main_queue_screen/components/ticket_item_normal_card.dart
@@ -18,6 +18,7 @@ class QueueItemNormalCard extends StatelessWidget {
final GlobalConfigurationsModel globalConfigurationsModel;
final CallTypeEnum callTypeEnum;
final ScreenTypeEnum screenTypeEnum;
+ final QTypeEnum qTypeEnum;
final LanguageEnum langTypeEnum;
final double? height;
final double? width;
@@ -34,6 +35,7 @@ class QueueItemNormalCard extends StatelessWidget {
required this.callTypeEnum,
required this.screenTypeEnum,
required this.langTypeEnum,
+ required this.qTypeEnum,
this.height,
this.width,
});
@@ -52,7 +54,8 @@ class QueueItemNormalCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
- final text = "${callTypeEnum.getMessageByCallTypeForEnglish(globalConfigurationsModel, isListView: false)} | $roomText $roomNo";
+ final text = callTypeEnum.getMessageByCallTypeForEnglish(globalConfigurationsModel, isListView: false) + (qTypeEnum == QTypeEnum.appointment ? ("| $roomText $roomNo") : "");
+
return Stack(
children: [
customShadowSmoothContainer(
@@ -87,12 +90,12 @@ class QueueItemNormalCard extends StatelessWidget {
flex: 3,
child: Row(
children: [
- callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.35),
+ callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.35, qTypeEnum),
],
),
),
Flexible(
- flex: 4,
+ flex: 2,
child: Center(
child: AppText(
textAlign: TextAlign.center,
@@ -115,7 +118,7 @@ class QueueItemNormalCard extends StatelessWidget {
padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.05),
color: callTypeEnum.getColorByCallType(),
child: engArabicTextWithSeparatorWidget(
- fontSize: SizeConfig.getWidthMultiplier()! * 1.8,
+ fontSize: qTypeEnum != QTypeEnum.appointment ? SizeConfig.getWidthMultiplier()! * 1.9 : SizeConfig.getWidthMultiplier()! * 1.8,
englishText: roomNo.extractNumbersIfLong(),
arabicText: roomTextAr,
color: AppColors.whiteColor,
diff --git a/lib/views/main_queue_screen/main_queue_screen.dart b/lib/views/main_queue_screen/main_queue_screen.dart
index 1915e2d..e9b05d3 100644
--- a/lib/views/main_queue_screen/main_queue_screen.dart
+++ b/lib/views/main_queue_screen/main_queue_screen.dart
@@ -69,7 +69,7 @@ class _MainQueueScreenState extends State {
// counterNo: 0,
// roomText: '',
// );
-
+log("screenConfigViewModel: ${screenConfigViewModel.currentScreenIP}");
if (screenConfigViewModel.currentQTypeEnum == QTypeEnum.general) {
text = AppStrings.awaitingQueueNumberEng;
}
@@ -204,3 +204,4 @@ class _MainQueueScreenState extends State {
);
}
}
+