- 전체 371개 파일 중 82개 미사용 파일 식별 - Phase 1: 33개 파일 삭제 예정 (100% 안전) - Phase 2: 30개 파일 삭제 검토 예정 - Phase 3: 19개 파일 수동 검토 예정 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
42 lines
1.5 KiB
Dart
42 lines
1.5 KiB
Dart
import 'package:dartz/dartz.dart';
|
|
import '../../repositories/equipment_repository.dart';
|
|
import '../../../data/models/equipment/equipment_dto.dart';
|
|
import '../../../core/errors/failures.dart';
|
|
import '../base_usecase.dart';
|
|
|
|
/// 장비 생성 UseCase
|
|
class CreateEquipmentUseCase extends UseCase<EquipmentDto, EquipmentRequestDto> {
|
|
final EquipmentRepository _equipmentRepository;
|
|
|
|
CreateEquipmentUseCase(this._equipmentRepository);
|
|
|
|
@override
|
|
Future<Either<Failure, EquipmentDto>> call(EquipmentRequestDto params) async {
|
|
// 입력 검증 (백엔드에서 companies_id, models_id는 Optional이므로 null 허용)
|
|
// 존재 여부 검증은 백엔드에서 수행
|
|
|
|
if (params.serialNumber.trim().isEmpty) {
|
|
return Left(ValidationFailure(
|
|
message: '시리얼 번호를 입력해주세요.',
|
|
errors: {'serialNumber': '시리얼 번호는 필수 입력 항목입니다.'},
|
|
));
|
|
}
|
|
|
|
if (params.warrantyNumber.trim().isEmpty) {
|
|
return Left(ValidationFailure(
|
|
message: '워런티 번호를 입력해주세요.',
|
|
errors: {'warrantyNumber': '워런티 번호는 필수 입력 항목입니다.'},
|
|
));
|
|
}
|
|
|
|
// 워런티 기간 검증
|
|
if (params.warrantyStartedAt.isAfter(params.warrantyEndedAt)) {
|
|
return Left(ValidationFailure(
|
|
message: '워런티 시작일이 종료일보다 늦을 수 없습니다.',
|
|
errors: {'warrantyPeriod': '워런티 기간을 올바르게 설정해주세요.'},
|
|
));
|
|
}
|
|
|
|
return await _equipmentRepository.createEquipment(params);
|
|
}
|
|
} |