import 'package:hmg_qline/api/api_client.dart'; import 'package:hmg_qline/constants/app_constants.dart'; import 'package:hmg_qline/models/generic_response_model.dart'; import 'package:hmg_qline/models/global_config_model.dart'; import 'package:hmg_qline/models/prayers_widget_model.dart'; import 'package:hmg_qline/models/rss_feed_model.dart'; import 'package:hmg_qline/models/weathers_widget_model.dart'; import 'package:hmg_qline/models/widgets_config_model.dart'; import 'package:hmg_qline/views/view_helpers/info_components.dart'; abstract class ScreenDetailsRepo { Future getGlobalScreenConfigurations({required String ipAddress}); Future createNextTickets({required int ticketNumber}); Future getScreenConfigurationsByIP({required String ipAddress}); Future getWeatherDetailsByCity({required String cityId}); Future getPrayerDetailsByLatLong({required double latitude, required double longitude}); Future getRssFeedDetailsByLanguageID({required int languageId}); } class ScreenDetailsRepoImp implements ScreenDetailsRepo { ApiClient apiClientInstance; ScreenDetailsRepoImp({required this.apiClientInstance}); @override Future getGlobalScreenConfigurations({required String ipAddress}) async { try { var params = { "ipAddress": ipAddress.toString(), "apiKey": AppConstants.apiKey.toString(), }; GenericRespModel adsGenericModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.commonConfigGet, params, ); List globalConfigurationsModel = List.generate(adsGenericModel.data.length, (index) => GlobalConfigurationsModel.fromJson(adsGenericModel.data[index])); if (globalConfigurationsModel.isNotEmpty) { return globalConfigurationsModel.first; } return null; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } @override Future createNextTickets({required int ticketNumber}) async { try { var params = { "projectID": "15", "patientID": ticketNumber.toString(), "isVip": false, "orderNo": "123", "isVidaPlus": false, "createdBy": "101", "apiKey": AppConstants.apiKey, }; GenericRespModel adsGenericModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.createTicket, params, ); return adsGenericModel; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } @override Future getScreenConfigurationsByIP({required String ipAddress}) async { try { final body = { "ipAddress": ipAddress.toString(), }; GenericRespModel genericRespModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.waitingAreaScreenConfigGet, body, ); WidgetsConfigModel widgetsConfigModel = WidgetsConfigModel.fromJson(genericRespModel.data); return widgetsConfigModel; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } @override Future getWeatherDetailsByCity({required String cityId}) async { try { final body = {"cityID": cityId}; GenericRespModel genericRespModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.getWeatherForecastBy5Days, body, ); List weathersWidgetModel = List.generate(genericRespModel.data.length, (index) => WeathersWidgetModel.fromJson(genericRespModel.data[index])); if (weathersWidgetModel.isNotEmpty) { return weathersWidgetModel.first; } return null; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } @override Future getPrayerDetailsByLatLong({required double latitude, required double longitude}) async { try { final body = {"latitude": latitude, "longitude": longitude}; GenericRespModel genericRespModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.prayerTimeToday, body, ); List prayersWidgetModel = List.generate(genericRespModel.data.length, (index) => PrayersWidgetModel.fromJson(genericRespModel.data[index])); if (prayersWidgetModel.isNotEmpty) { return prayersWidgetModel.first; } return null; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } @override Future getRssFeedDetailsByLanguageID({required int languageId}) async { try { final body = {"languageID": languageId}; GenericRespModel genericRespModel = await apiClientInstance.postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConstants.rssFeedGet, body, ); List rssFeedModel = List.generate(genericRespModel.data.length, (index) => RssFeedModel.fromJson(genericRespModel.data[index])); if (rssFeedModel.isNotEmpty) { return rssFeedModel.first; } return null; } catch (e) { logger.e(e.toString()); InfoComponents.showToast(e.toString()); return null; } } }