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 { final EquipmentRepository _equipmentRepository; CreateEquipmentUseCase(this._equipmentRepository); @override Future> call(EquipmentRequestDto params) async { // 입력 검증 if (params.companiesId <= 0) { return Left(ValidationFailure( message: '회사를 선택해주세요.', errors: {'companiesId': '회사는 필수 선택 항목입니다.'}, )); } if (params.modelsId <= 0) { return Left(ValidationFailure( message: '모델을 선택해주세요.', errors: {'modelsId': '모델은 필수 선택 항목입니다.'}, )); } 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); } }