import 'package:dartz/dartz.dart';
import 'package:injectable/injectable.dart';
import '../../repositories/warehouse_location_repository.dart';
import '../../../core/errors/failures.dart';
import '../base_usecase.dart';

/// 창고 위치 삭제 UseCase
@injectable
class DeleteWarehouseLocationUseCase implements UseCase<bool, int> {
  final WarehouseLocationRepository repository;

  DeleteWarehouseLocationUseCase(this.repository);

  @override
  Future<Either<Failure, bool>> call(int id) async {
    try {
      // 비즈니스 로직: 사용 중인 창고는 삭제 불가
      // TODO: 창고에 장비가 있는지 확인하는 로직 추가 필요
      // final hasEquipment = await repository.checkWarehouseHasEquipment(id);
      // if (hasEquipment) {
      //   return Left(ValidationFailure(message: '장비가 있는 창고는 삭제할 수 없습니다'));
      // }

      await repository.deleteWarehouseLocation(id);
      return const Right(true);
    } catch (e) {
      return Left(ServerFailure(message: e.toString()));
    }
  }
}