feat(tax-forms-repository): Refactor TaxFormsRepositoryImpl to simplify initialization and utilize DataConnectService for data operations
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:firebase_auth/firebase_auth.dart' as auth;
|
|
||||||
import 'package:firebase_core/firebase_core.dart';
|
|
||||||
import 'package:firebase_data_connect/firebase_data_connect.dart';
|
import 'package:firebase_data_connect/firebase_data_connect.dart';
|
||||||
import 'package:krow_data_connect/krow_data_connect.dart' as dc;
|
import 'package:krow_data_connect/krow_data_connect.dart' as dc;
|
||||||
import 'package:krow_domain/krow_domain.dart';
|
import 'package:krow_domain/krow_domain.dart';
|
||||||
@@ -10,45 +8,21 @@ import '../../domain/repositories/tax_forms_repository.dart';
|
|||||||
import '../mappers/tax_form_mapper.dart';
|
import '../mappers/tax_form_mapper.dart';
|
||||||
|
|
||||||
class TaxFormsRepositoryImpl
|
class TaxFormsRepositoryImpl
|
||||||
with dc.DataErrorHandler
|
|
||||||
implements TaxFormsRepository {
|
implements TaxFormsRepository {
|
||||||
TaxFormsRepositoryImpl({
|
TaxFormsRepositoryImpl() : _service = dc.DataConnectService.instance;
|
||||||
required this.firebaseAuth,
|
|
||||||
required this.dataConnect,
|
|
||||||
});
|
|
||||||
|
|
||||||
final auth.FirebaseAuth firebaseAuth;
|
final dc.DataConnectService _service;
|
||||||
final dc.ExampleConnector dataConnect;
|
|
||||||
|
|
||||||
/// Helper to get the logged-in staff ID.
|
|
||||||
String _getStaffId() {
|
|
||||||
final auth.User? user = firebaseAuth.currentUser;
|
|
||||||
if (user == null) {
|
|
||||||
throw const NotAuthenticatedException(
|
|
||||||
technicalMessage: 'Firebase User is null',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
final String? staffId = dc.StaffSessionStore.instance.session?.staff?.id;
|
|
||||||
if (staffId == null || staffId.isEmpty) {
|
|
||||||
throw const StaffProfileNotFoundException(
|
|
||||||
technicalMessage: 'Staff ID missing in SessionStore',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return staffId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<TaxForm>> getTaxForms() async {
|
Future<List<TaxForm>> getTaxForms() async {
|
||||||
return executeProtected(() async {
|
return _service.run(() async {
|
||||||
final String staffId = _getStaffId();
|
final String staffId = await _service.getStaffId();
|
||||||
final QueryResult<dc.GetTaxFormsByStaffIdData, dc.GetTaxFormsByStaffIdVariables>
|
final response = await _service.connector
|
||||||
result = await dataConnect
|
|
||||||
.getTaxFormsByStaffId(staffId: staffId)
|
.getTaxFormsByStaffId(staffId: staffId)
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
final List<TaxForm> forms =
|
final List<TaxForm> forms =
|
||||||
result.data.taxForms.map(TaxFormMapper.fromDataConnect).toList();
|
response.data.taxForms.map(TaxFormMapper.fromDataConnect).toList();
|
||||||
|
|
||||||
// Check if required forms exist, create if not.
|
// Check if required forms exist, create if not.
|
||||||
final Set<TaxFormType> typesPresent =
|
final Set<TaxFormType> typesPresent =
|
||||||
@@ -65,11 +39,9 @@ class TaxFormsRepositoryImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (createdNew) {
|
if (createdNew) {
|
||||||
final QueryResult<
|
final response2 =
|
||||||
dc.GetTaxFormsByStaffIdData,
|
await _service.connector.getTaxFormsByStaffId(staffId: staffId).execute();
|
||||||
dc.GetTaxFormsByStaffIdVariables> result2 =
|
return response2.data.taxForms
|
||||||
await dataConnect.getTaxFormsByStaffId(staffId: staffId).execute();
|
|
||||||
return result2.data.taxForms
|
|
||||||
.map(TaxFormMapper.fromDataConnect)
|
.map(TaxFormMapper.fromDataConnect)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
@@ -79,7 +51,7 @@ class TaxFormsRepositoryImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _createInitialForm(String staffId, TaxFormType type) async {
|
Future<void> _createInitialForm(String staffId, TaxFormType type) async {
|
||||||
await dataConnect
|
await _service.connector
|
||||||
.createTaxForm(
|
.createTaxForm(
|
||||||
staffId: staffId,
|
staffId: staffId,
|
||||||
formType:
|
formType:
|
||||||
@@ -95,10 +67,10 @@ class TaxFormsRepositoryImpl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> updateI9Form(I9TaxForm form) async {
|
Future<void> updateI9Form(I9TaxForm form) async {
|
||||||
return executeProtected(() async {
|
return _service.run(() async {
|
||||||
final Map<String, dynamic> data = form.formData;
|
final Map<String, dynamic> data = form.formData;
|
||||||
final dc.UpdateTaxFormVariablesBuilder builder =
|
final dc.UpdateTaxFormVariablesBuilder builder =
|
||||||
dataConnect.updateTaxForm(id: form.id);
|
_service.connector.updateTaxForm(id: form.id);
|
||||||
_mapCommonFields(builder, data);
|
_mapCommonFields(builder, data);
|
||||||
_mapI9Fields(builder, data);
|
_mapI9Fields(builder, data);
|
||||||
await builder.execute();
|
await builder.execute();
|
||||||
@@ -107,10 +79,10 @@ class TaxFormsRepositoryImpl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> submitI9Form(I9TaxForm form) async {
|
Future<void> submitI9Form(I9TaxForm form) async {
|
||||||
return executeProtected(() async {
|
return _service.run(() async {
|
||||||
final Map<String, dynamic> data = form.formData;
|
final Map<String, dynamic> data = form.formData;
|
||||||
final dc.UpdateTaxFormVariablesBuilder builder =
|
final dc.UpdateTaxFormVariablesBuilder builder =
|
||||||
dataConnect.updateTaxForm(id: form.id);
|
_service.connector.updateTaxForm(id: form.id);
|
||||||
_mapCommonFields(builder, data);
|
_mapCommonFields(builder, data);
|
||||||
_mapI9Fields(builder, data);
|
_mapI9Fields(builder, data);
|
||||||
await builder.status(dc.TaxFormStatus.SUBMITTED).execute();
|
await builder.status(dc.TaxFormStatus.SUBMITTED).execute();
|
||||||
@@ -119,10 +91,10 @@ class TaxFormsRepositoryImpl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> updateW4Form(W4TaxForm form) async {
|
Future<void> updateW4Form(W4TaxForm form) async {
|
||||||
return executeProtected(() async {
|
return _service.run(() async {
|
||||||
final Map<String, dynamic> data = form.formData;
|
final Map<String, dynamic> data = form.formData;
|
||||||
final dc.UpdateTaxFormVariablesBuilder builder =
|
final dc.UpdateTaxFormVariablesBuilder builder =
|
||||||
dataConnect.updateTaxForm(id: form.id);
|
_service.connector.updateTaxForm(id: form.id);
|
||||||
_mapCommonFields(builder, data);
|
_mapCommonFields(builder, data);
|
||||||
_mapW4Fields(builder, data);
|
_mapW4Fields(builder, data);
|
||||||
await builder.execute();
|
await builder.execute();
|
||||||
@@ -131,10 +103,10 @@ class TaxFormsRepositoryImpl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> submitW4Form(W4TaxForm form) async {
|
Future<void> submitW4Form(W4TaxForm form) async {
|
||||||
return executeProtected(() async {
|
return _service.run(() async {
|
||||||
final Map<String, dynamic> data = form.formData;
|
final Map<String, dynamic> data = form.formData;
|
||||||
final dc.UpdateTaxFormVariablesBuilder builder =
|
final dc.UpdateTaxFormVariablesBuilder builder =
|
||||||
dataConnect.updateTaxForm(id: form.id);
|
_service.connector.updateTaxForm(id: form.id);
|
||||||
_mapCommonFields(builder, data);
|
_mapCommonFields(builder, data);
|
||||||
_mapW4Fields(builder, data);
|
_mapW4Fields(builder, data);
|
||||||
await builder.status(dc.TaxFormStatus.SUBMITTED).execute();
|
await builder.status(dc.TaxFormStatus.SUBMITTED).execute();
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'package:firebase_auth/firebase_auth.dart';
|
|
||||||
import 'package:flutter_modular/flutter_modular.dart';
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
import 'package:krow_core/core.dart';
|
import 'package:krow_core/core.dart';
|
||||||
import 'package:krow_data_connect/krow_data_connect.dart';
|
|
||||||
import 'package:krow_domain/krow_domain.dart';
|
import 'package:krow_domain/krow_domain.dart';
|
||||||
import 'data/repositories/tax_forms_repository_impl.dart';
|
import 'data/repositories/tax_forms_repository_impl.dart';
|
||||||
import 'domain/repositories/tax_forms_repository.dart';
|
import 'domain/repositories/tax_forms_repository.dart';
|
||||||
@@ -18,12 +16,7 @@ import 'presentation/pages/tax_forms_page.dart';
|
|||||||
class StaffTaxFormsModule extends Module {
|
class StaffTaxFormsModule extends Module {
|
||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
i.addLazySingleton<TaxFormsRepository>(
|
i.addLazySingleton<TaxFormsRepository>(TaxFormsRepositoryImpl.new);
|
||||||
() => TaxFormsRepositoryImpl(
|
|
||||||
firebaseAuth: FirebaseAuth.instance,
|
|
||||||
dataConnect: ExampleConnector.instance,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Use Cases
|
// Use Cases
|
||||||
i.addLazySingleton(GetTaxFormsUseCase.new);
|
i.addLazySingleton(GetTaxFormsUseCase.new);
|
||||||
|
|||||||
Reference in New Issue
Block a user