refactor: UI 화면 통합 및 불필요한 파일 정리
- 모든 *_redesign.dart 파일을 기본 화면 파일로 통합 - 백업용 컨트롤러 파일들 제거 (*_controller.backup.dart) - 사용하지 않는 예제 및 테스트 파일 제거 - Clean Architecture 적용 후 남은 정리 작업 완료 - 테스트 코드 정리 및 구조 개선 준비 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:injectable/injectable.dart';
|
||||
import 'package:superport/core/errors/exceptions.dart';
|
||||
import 'package:superport/core/errors/failures.dart';
|
||||
import 'package:superport/data/datasources/remote/company_remote_datasource.dart';
|
||||
import 'package:superport/data/models/common/paginated_response.dart';
|
||||
import 'package:superport/data/models/company/company_dto.dart';
|
||||
import 'package:superport/data/models/company/company_list_dto.dart';
|
||||
import 'package:superport/data/models/company/branch_dto.dart';
|
||||
@@ -16,7 +17,7 @@ class CompanyService {
|
||||
CompanyService(this._remoteDataSource);
|
||||
|
||||
// 회사 목록 조회
|
||||
Future<List<Company>> getCompanies({
|
||||
Future<PaginatedResponse<Company>> getCompanies({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
String? search,
|
||||
@@ -30,7 +31,15 @@ class CompanyService {
|
||||
isActive: isActive,
|
||||
);
|
||||
|
||||
return response.items.map((dto) => _convertListDtoToCompany(dto)).toList();
|
||||
return PaginatedResponse<Company>(
|
||||
items: response.items.map((dto) => _convertListDtoToCompany(dto)).toList(),
|
||||
page: response.page,
|
||||
size: response.size,
|
||||
totalElements: response.totalElements,
|
||||
totalPages: response.totalPages,
|
||||
first: response.first,
|
||||
last: response.last,
|
||||
);
|
||||
} on ApiException catch (e) {
|
||||
debugPrint('[CompanyService] ApiException: ${e.message}');
|
||||
throw ServerFailure(message: e.message);
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:get_it/get_it.dart';
|
||||
import 'package:superport/core/errors/exceptions.dart';
|
||||
import 'package:superport/core/errors/failures.dart';
|
||||
import 'package:superport/data/datasources/remote/equipment_remote_datasource.dart';
|
||||
import 'package:superport/data/models/common/paginated_response.dart';
|
||||
import 'package:superport/data/models/equipment/equipment_history_dto.dart';
|
||||
import 'package:superport/data/models/equipment/equipment_in_request.dart';
|
||||
import 'package:superport/data/models/equipment/equipment_io_response.dart';
|
||||
@@ -15,7 +16,7 @@ class EquipmentService {
|
||||
final EquipmentRemoteDataSource _remoteDataSource = GetIt.instance<EquipmentRemoteDataSource>();
|
||||
|
||||
// 장비 목록 조회 (DTO 형태로 반환하여 status 정보 유지)
|
||||
Future<List<EquipmentListDto>> getEquipmentsWithStatus({
|
||||
Future<PaginatedResponse<EquipmentListDto>> getEquipmentsWithStatus({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
String? status,
|
||||
@@ -24,7 +25,7 @@ class EquipmentService {
|
||||
String? search,
|
||||
}) async {
|
||||
try {
|
||||
final dtoList = await _remoteDataSource.getEquipments(
|
||||
final response = await _remoteDataSource.getEquipments(
|
||||
page: page,
|
||||
perPage: perPage,
|
||||
status: status,
|
||||
@@ -33,7 +34,15 @@ class EquipmentService {
|
||||
search: search,
|
||||
);
|
||||
|
||||
return dtoList;
|
||||
return PaginatedResponse<EquipmentListDto>(
|
||||
items: response.items,
|
||||
page: response.page,
|
||||
size: response.perPage,
|
||||
totalElements: response.total,
|
||||
totalPages: response.totalPages,
|
||||
first: response.page == 1,
|
||||
last: response.page >= response.totalPages,
|
||||
);
|
||||
} on ServerException catch (e) {
|
||||
throw ServerFailure(message: e.message);
|
||||
} catch (e) {
|
||||
@@ -42,7 +51,7 @@ class EquipmentService {
|
||||
}
|
||||
|
||||
// 장비 목록 조회
|
||||
Future<List<Equipment>> getEquipments({
|
||||
Future<PaginatedResponse<Equipment>> getEquipments({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
String? status,
|
||||
@@ -51,7 +60,7 @@ class EquipmentService {
|
||||
String? search,
|
||||
}) async {
|
||||
try {
|
||||
final dtoList = await _remoteDataSource.getEquipments(
|
||||
final response = await _remoteDataSource.getEquipments(
|
||||
page: page,
|
||||
perPage: perPage,
|
||||
status: status,
|
||||
@@ -60,7 +69,15 @@ class EquipmentService {
|
||||
search: search,
|
||||
);
|
||||
|
||||
return dtoList.map((dto) => _convertListDtoToEquipment(dto)).toList();
|
||||
return PaginatedResponse<Equipment>(
|
||||
items: response.items.map((dto) => _convertListDtoToEquipment(dto)).toList(),
|
||||
page: response.page,
|
||||
size: response.perPage,
|
||||
totalElements: response.total,
|
||||
totalPages: response.totalPages,
|
||||
first: response.page == 1,
|
||||
last: response.page >= response.totalPages,
|
||||
);
|
||||
} on ServerException catch (e) {
|
||||
throw ServerFailure(message: e.message);
|
||||
} catch (e) {
|
||||
@@ -68,6 +85,42 @@ class EquipmentService {
|
||||
}
|
||||
}
|
||||
|
||||
// 입고된 장비 목록 조회
|
||||
Future<PaginatedResponse<EquipmentListDto>> getEquipmentInList({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
int? companyId,
|
||||
int? warehouseLocationId,
|
||||
String? search,
|
||||
}) async {
|
||||
return getEquipmentsWithStatus(
|
||||
page: page,
|
||||
perPage: perPage,
|
||||
status: 'available', // 입고된 장비는 사용 가능 상태
|
||||
companyId: companyId,
|
||||
warehouseLocationId: warehouseLocationId,
|
||||
search: search,
|
||||
);
|
||||
}
|
||||
|
||||
// 출고된 장비 목록 조회
|
||||
Future<PaginatedResponse<EquipmentListDto>> getEquipmentOutList({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
int? companyId,
|
||||
int? warehouseLocationId,
|
||||
String? search,
|
||||
}) async {
|
||||
return getEquipmentsWithStatus(
|
||||
page: page,
|
||||
perPage: perPage,
|
||||
status: 'in_use', // 출고된 장비는 사용 중 상태
|
||||
companyId: companyId,
|
||||
warehouseLocationId: warehouseLocationId,
|
||||
search: search,
|
||||
);
|
||||
}
|
||||
|
||||
// 장비 생성
|
||||
Future<Equipment> createEquipment(Equipment equipment) async {
|
||||
try {
|
||||
|
||||
@@ -77,8 +77,8 @@ class HealthTestService {
|
||||
final equipments = await _equipmentService.getEquipments(page: 1, perPage: 5);
|
||||
results['equipments'] = {
|
||||
'success': true,
|
||||
'count': equipments.length,
|
||||
'sample': equipments.take(2).map((e) => {
|
||||
'count': equipments.items.length,
|
||||
'sample': equipments.items.take(2).map((e) => {
|
||||
'id': e.id,
|
||||
'name': e.name,
|
||||
'manufacturer': e.manufacturer,
|
||||
@@ -95,11 +95,11 @@ class HealthTestService {
|
||||
try {
|
||||
DebugLogger.log('입고지 API 체크 시작', tag: 'HEALTH_TEST');
|
||||
|
||||
final warehouses = await _warehouseService.getWarehouseLocations();
|
||||
final warehousesResponse = await _warehouseService.getWarehouseLocations();
|
||||
results['warehouses'] = {
|
||||
'success': true,
|
||||
'count': warehouses.length,
|
||||
'sample': warehouses.take(2).map((w) => {
|
||||
'count': warehousesResponse.items.length,
|
||||
'sample': warehousesResponse.items.take(2).map((w) => {
|
||||
'id': w.id,
|
||||
'name': w.name,
|
||||
'address': w.address.toString(),
|
||||
@@ -115,11 +115,11 @@ class HealthTestService {
|
||||
try {
|
||||
DebugLogger.log('회사 API 체크 시작', tag: 'HEALTH_TEST');
|
||||
|
||||
final companies = await _companyService.getCompanies();
|
||||
final companiesResponse = await _companyService.getCompanies();
|
||||
results['companies'] = {
|
||||
'success': true,
|
||||
'count': companies.length,
|
||||
'sample': companies.take(2).map((c) => {
|
||||
'count': companiesResponse.items.length,
|
||||
'sample': companiesResponse.items.take(2).map((c) => {
|
||||
'id': c.id,
|
||||
'name': c.name,
|
||||
'companyTypes': c.companyTypes.map((t) => companyTypeToString(t)).toList(),
|
||||
@@ -150,8 +150,8 @@ class HealthTestService {
|
||||
final equipments = await _equipmentService.getEquipments(page: 1, perPage: 10);
|
||||
return {
|
||||
'success': true,
|
||||
'count': equipments.length,
|
||||
'data': equipments.map((e) => e.toJson()).toList(),
|
||||
'count': equipments.items.length,
|
||||
'data': equipments.items.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
} catch (e) {
|
||||
return {'success': false, 'error': e.toString()};
|
||||
@@ -159,11 +159,11 @@ class HealthTestService {
|
||||
|
||||
case 'warehouses':
|
||||
try {
|
||||
final warehouses = await _warehouseService.getWarehouseLocations();
|
||||
final warehousesResponse = await _warehouseService.getWarehouseLocations();
|
||||
return {
|
||||
'success': true,
|
||||
'count': warehouses.length,
|
||||
'data': warehouses.map((w) => {
|
||||
'count': warehousesResponse.items.length,
|
||||
'data': warehousesResponse.items.map((w) => {
|
||||
'id': w.id,
|
||||
'name': w.name,
|
||||
'address': w.address.toString(),
|
||||
@@ -179,8 +179,8 @@ class HealthTestService {
|
||||
final companies = await _companyService.getCompanies();
|
||||
return {
|
||||
'success': true,
|
||||
'count': companies.length,
|
||||
'data': companies.map((c) => c.toJson()).toList(),
|
||||
'count': companies.items.length,
|
||||
'data': companies.items.map((c) => c.toJson()).toList(),
|
||||
};
|
||||
} catch (e) {
|
||||
return {'success': false, 'error': e.toString()};
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:injectable/injectable.dart';
|
||||
import 'package:superport/core/errors/exceptions.dart';
|
||||
import 'package:superport/core/errors/failures.dart';
|
||||
import 'package:superport/data/datasources/remote/license_remote_datasource.dart';
|
||||
import 'package:superport/data/models/common/paginated_response.dart';
|
||||
import 'package:superport/data/models/license/license_dto.dart';
|
||||
import 'package:superport/data/models/license/license_request_dto.dart';
|
||||
import 'package:superport/models/license_model.dart';
|
||||
@@ -15,7 +16,7 @@ class LicenseService {
|
||||
LicenseService(this._remoteDataSource);
|
||||
|
||||
// 라이선스 목록 조회
|
||||
Future<List<License>> getLicenses({
|
||||
Future<PaginatedResponse<License>> getLicenses({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
bool? isActive,
|
||||
@@ -65,7 +66,15 @@ class LicenseService {
|
||||
}
|
||||
debugPrint('╚════════════════════════════════════════════════════════════\n');
|
||||
|
||||
return licenses;
|
||||
return PaginatedResponse<License>(
|
||||
items: licenses,
|
||||
page: response.page,
|
||||
size: response.perPage,
|
||||
totalElements: response.total,
|
||||
totalPages: response.totalPages,
|
||||
first: response.page == 1,
|
||||
last: response.page >= response.totalPages,
|
||||
);
|
||||
} on ApiException catch (e) {
|
||||
debugPrint('\n╔════════════════════════════════════════════════════════════');
|
||||
debugPrint('║ ❌ LICENSE API ERROR');
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:injectable/injectable.dart';
|
||||
import 'package:superport/data/datasources/remote/user_remote_datasource.dart';
|
||||
import 'package:superport/data/models/common/paginated_response.dart';
|
||||
import 'package:superport/data/models/user/user_dto.dart';
|
||||
import 'package:superport/models/user_model.dart';
|
||||
|
||||
@@ -10,7 +11,7 @@ class UserService {
|
||||
UserService() : _userRemoteDataSource = UserRemoteDataSource();
|
||||
|
||||
/// 사용자 목록 조회
|
||||
Future<List<User>> getUsers({
|
||||
Future<PaginatedResponse<User>> getUsers({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
bool? isActive,
|
||||
@@ -26,7 +27,15 @@ class UserService {
|
||||
role: role != null ? _mapRoleToApi(role) : null,
|
||||
);
|
||||
|
||||
return response.users.map((dto) => _userDtoToModel(dto)).toList();
|
||||
return PaginatedResponse<User>(
|
||||
items: response.users.map((dto) => _userDtoToModel(dto)).toList(),
|
||||
page: response.page,
|
||||
size: response.perPage,
|
||||
totalElements: response.total,
|
||||
totalPages: response.totalPages,
|
||||
first: response.page == 1,
|
||||
last: response.page >= response.totalPages,
|
||||
);
|
||||
} catch (e) {
|
||||
throw Exception('사용자 목록 조회 실패: ${e.toString()}');
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:injectable/injectable.dart';
|
||||
import 'package:superport/core/errors/exceptions.dart';
|
||||
import 'package:superport/core/errors/failures.dart';
|
||||
import 'package:superport/data/datasources/remote/warehouse_remote_datasource.dart';
|
||||
import 'package:superport/data/models/common/paginated_response.dart';
|
||||
import 'package:superport/data/models/warehouse/warehouse_dto.dart';
|
||||
import 'package:superport/models/address_model.dart';
|
||||
import 'package:superport/models/warehouse_location_model.dart';
|
||||
@@ -13,7 +14,7 @@ class WarehouseService {
|
||||
final WarehouseRemoteDataSource _remoteDataSource = GetIt.instance<WarehouseRemoteDataSource>();
|
||||
|
||||
// 창고 위치 목록 조회
|
||||
Future<List<WarehouseLocation>> getWarehouseLocations({
|
||||
Future<PaginatedResponse<WarehouseLocation>> getWarehouseLocations({
|
||||
int page = 1,
|
||||
int perPage = 20,
|
||||
bool? isActive,
|
||||
@@ -25,7 +26,15 @@ class WarehouseService {
|
||||
isActive: isActive,
|
||||
);
|
||||
|
||||
return response.items.map((dto) => _convertDtoToWarehouseLocation(dto)).toList();
|
||||
return PaginatedResponse<WarehouseLocation>(
|
||||
items: response.items.map((dto) => _convertDtoToWarehouseLocation(dto)).toList(),
|
||||
page: response.page,
|
||||
size: response.perPage,
|
||||
totalElements: response.total,
|
||||
totalPages: response.totalPages,
|
||||
first: response.page == 1,
|
||||
last: response.page >= response.totalPages,
|
||||
);
|
||||
} on ApiException catch (e) {
|
||||
debugPrint('[WarehouseService] ApiException: ${e.message}');
|
||||
throw ServerFailure(message: e.message);
|
||||
|
||||
Reference in New Issue
Block a user