feat: integrate city poultry feature by adding routes, DI setup, and updating UI components to reflect new data handling and localization changes

This commit is contained in:
2025-12-29 14:26:12 +03:30
parent edde363b6d
commit 9910de4ed8
40 changed files with 2158 additions and 41 deletions

View File

@@ -0,0 +1,16 @@
import 'package:rasadyar_chicken/features/poultry_science/data/model/response/poultry_science_report/poultry_science_report.dart';
import 'package:rasadyar_chicken/features/poultry_science/data/model/request/submit_inspection/submit_inspection_response.dart';
import 'package:rasadyar_core/core.dart';
abstract class CityPoultryRemoteDataSource {
Future<PaginationModel<PoultryScienceReport>?> getSubmitInspectionList({
required String token,
Map<String, dynamic>? queryParameters,
});
Future<void> submitInspection({
required String token,
required SubmitInspectionResponse request,
});
}

View File

@@ -0,0 +1,40 @@
import 'package:rasadyar_chicken/features/poultry_science/data/model/response/poultry_science_report/poultry_science_report.dart';
import 'package:rasadyar_chicken/features/poultry_science/data/model/request/submit_inspection/submit_inspection_response.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/datasources/remote/city_poultry_remote_data_source.dart';
import 'package:rasadyar_core/core.dart';
class CityPoultryRemoteDataSourceImpl implements CityPoultryRemoteDataSource {
final DioRemote _httpClient;
CityPoultryRemoteDataSourceImpl(this._httpClient);
@override
Future<PaginationModel<PoultryScienceReport>?> getSubmitInspectionList({
required String token,
Map<String, dynamic>? queryParameters,
}) async {
var res = await _httpClient.get(
'/poultry_science_report/',
headers: {'Authorization': 'Bearer $token'},
queryParameters: queryParameters,
fromJson: (json) => PaginationModel<PoultryScienceReport>.fromJson(
json,
(json) => PoultryScienceReport.fromJson(json as Map<String, dynamic>),
),
);
return res.data;
}
@override
Future<void> submitInspection({
required String token,
required SubmitInspectionResponse request,
}) async {
await _httpClient.post(
'/poultry_science_report/',
headers: {'Authorization': 'Bearer $token'},
data: request.toJson(),
);
}
}

View File

@@ -0,0 +1,36 @@
import 'package:rasadyar_chicken/features/city_poultry/data/datasources/remote/city_poultry_remote_data_source.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/datasources/remote/city_poultry_remote_data_source_impl.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/repositories/city_poultry_repository.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/repositories/city_poultry_repository_impl.dart';
import 'package:rasadyar_core/core.dart';
/// Setup dependency injection for city_poultry feature
Future<void> setupCityPoultryDI(GetIt di, DioRemote dioRemote) async {
di.registerLazySingleton<CityPoultryRemoteDataSource>(
() => CityPoultryRemoteDataSourceImpl(dioRemote),
);
di.registerLazySingleton<CityPoultryRepository>(
() => CityPoultryRepositoryImpl(di.get<CityPoultryRemoteDataSource>()),
);
}
/// Re-register city_poultry dependencies (used when base URL changes)
Future<void> reRegisterCityPoultryDI(GetIt di, DioRemote dioRemote) async {
await reRegister(di, () => CityPoultryRemoteDataSourceImpl(dioRemote));
await reRegister(
di,
() => CityPoultryRepositoryImpl(di.get<CityPoultryRemoteDataSource>()),
);
}
/// Helper function to re-register a dependency
Future<void> reRegister<T extends Object>(
GetIt di,
T Function() factory,
) async {
if (di.isRegistered<T>()) {
await di.unregister<T>();
}
di.registerLazySingleton<T>(factory);
}

View File

@@ -0,0 +1,16 @@
import 'package:rasadyar_chicken/features/poultry_science/data/model/response/poultry_science_report/poultry_science_report.dart';
import 'package:rasadyar_chicken/features/poultry_science/data/model/request/submit_inspection/submit_inspection_response.dart';
import 'package:rasadyar_core/core.dart';
abstract class CityPoultryRepository {
Future<PaginationModel<PoultryScienceReport>?> getSubmitInspectionList({
required String token,
Map<String, dynamic>? queryParameters,
});
Future<void> submitInspection({
required String token,
required SubmitInspectionResponse request,
});
}

View File

@@ -0,0 +1,31 @@
import 'package:rasadyar_chicken/features/poultry_science/data/model/response/poultry_science_report/poultry_science_report.dart';
import 'package:rasadyar_chicken/features/poultry_science/data/model/request/submit_inspection/submit_inspection_response.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/datasources/remote/city_poultry_remote_data_source.dart';
import 'package:rasadyar_chicken/features/city_poultry/data/repositories/city_poultry_repository.dart';
import 'package:rasadyar_core/core.dart';
class CityPoultryRepositoryImpl implements CityPoultryRepository {
final CityPoultryRemoteDataSource _remote;
CityPoultryRepositoryImpl(this._remote);
@override
Future<PaginationModel<PoultryScienceReport>?> getSubmitInspectionList({
required String token,
Map<String, dynamic>? queryParameters,
}) async {
return await _remote.getSubmitInspectionList(
token: token,
queryParameters: queryParameters,
);
}
@override
Future<void> submitInspection({
required String token,
required SubmitInspectionResponse request,
}) async {
return await _remote.submitInspection(token: token, request: request);
}
}