From 789fe24f2b0e27f24d591461c1af3c365ca6a708 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Mon, 16 Feb 2026 17:38:09 -0500 Subject: [PATCH] feat: Refactor CoverageModule and CoverageRepositoryImpl to utilize DataConnectService --- .../lib/src/coverage_module.dart | 14 ++--- .../coverage_repository_impl.dart | 59 +++++-------------- 2 files changed, 21 insertions(+), 52 deletions(-) diff --git a/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart b/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart index c0cc1258..aa36826c 100644 --- a/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart +++ b/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart @@ -10,24 +10,20 @@ import 'presentation/pages/coverage_page.dart'; /// Modular module for the coverage feature. class CoverageModule extends Module { + @override + List get imports => [DataConnectModule()]; + @override void binds(Injector i) { // Repositories - i.addSingleton( - () => CoverageRepositoryImpl(dataConnect: ExampleConnector.instance), - ); + i.addSingleton(CoverageRepositoryImpl.new); // Use Cases i.addSingleton(GetShiftsForDateUseCase.new); i.addSingleton(GetCoverageStatsUseCase.new); // BLoCs - i.addSingleton( - () => CoverageBloc( - getShiftsForDate: i.get(), - getCoverageStats: i.get(), - ), - ); + i.addSingleton(CoverageBloc.new); } @override diff --git a/apps/mobile/packages/features/client/client_coverage/lib/src/data/repositories_impl/coverage_repository_impl.dart b/apps/mobile/packages/features/client/client_coverage/lib/src/data/repositories_impl/coverage_repository_impl.dart index 47a6dbc6..8dec3263 100644 --- a/apps/mobile/packages/features/client/client_coverage/lib/src/data/repositories_impl/coverage_repository_impl.dart +++ b/apps/mobile/packages/features/client/client_coverage/lib/src/data/repositories_impl/coverage_repository_impl.dart @@ -15,44 +15,36 @@ import '../../domain/repositories/coverage_repository.dart'; /// - Returns domain entities from `domain/ui_entities`. class CoverageRepositoryImpl implements CoverageRepository { /// Creates a [CoverageRepositoryImpl]. - CoverageRepositoryImpl({required dc.ExampleConnector dataConnect}) - : _dataConnect = dataConnect; + CoverageRepositoryImpl({required dc.DataConnectService service}) : _service = service; - final dc.ExampleConnector _dataConnect; + final dc.DataConnectService _service; /// Fetches shifts for a specific date. @override Future> getShiftsForDate({required DateTime date}) async { - try { - final String? businessId = - dc.ClientSessionStore.instance.session?.business?.id; - if (businessId == null || businessId.isEmpty) { - return []; - } + return _service.run(() async { + final String businessId = await _service.getBusinessId(); final DateTime start = DateTime(date.year, date.month, date.day); - final DateTime end = - DateTime(date.year, date.month, date.day, 23, 59, 59, 999); + final DateTime end = DateTime(date.year, date.month, date.day, 23, 59, 59, 999); - final fdc.QueryResult< - dc.ListShiftRolesByBusinessAndDateRangeData, - dc.ListShiftRolesByBusinessAndDateRangeVariables> shiftRolesResult = - await _dataConnect + final fdc.QueryResult shiftRolesResult = + await _service.connector .listShiftRolesByBusinessAndDateRange( businessId: businessId, - start: _toTimestamp(start), - end: _toTimestamp(end), + start: _service.toTimestamp(start), + end: _service.toTimestamp(end), ) .execute(); - final fdc.QueryResult< - dc.ListStaffsApplicationsByBusinessForDayData, - dc.ListStaffsApplicationsByBusinessForDayVariables> applicationsResult = - await _dataConnect + final fdc.QueryResult applicationsResult = + await _service.connector .listStaffsApplicationsByBusinessForDay( businessId: businessId, - dayStart: _toTimestamp(start), - dayEnd: _toTimestamp(end), + dayStart: _service.toTimestamp(start), + dayEnd: _service.toTimestamp(end), ) .execute(); @@ -61,18 +53,7 @@ class CoverageRepositoryImpl implements CoverageRepository { applicationsResult.data.applications, date, ); - } catch (e) { - final String error = e.toString().toLowerCase(); - if (error.contains('network') || - error.contains('connection') || - error.contains('unavailable') || - error.contains('offline') || - error.contains('socket') || - error.contains('failed host lookup')) { - throw NetworkException(technicalMessage: 'Coverage fetch failed: $e'); - } - throw ServerException(technicalMessage: 'Coverage fetch failed: $e'); - } + }); } /// Fetches coverage statistics for a specific date. @@ -110,14 +91,6 @@ class CoverageRepositoryImpl implements CoverageRepository { ); } - fdc.Timestamp _toTimestamp(DateTime dateTime) { - final DateTime utc = dateTime.toUtc(); - final int seconds = utc.millisecondsSinceEpoch ~/ 1000; - final int nanoseconds = - (utc.millisecondsSinceEpoch % 1000) * 1000000; - return fdc.Timestamp(nanoseconds, seconds); - } - List _mapCoverageShifts( List shiftRoles, List applications,