import '../entities/approval.dart';
import '../entities/approval_flow.dart';
import '../repositories/approval_repository.dart';

/// 결재를 회수(recall)하는 유즈케이스.
///
/// - 회수 가능 여부는 별도의 선행 검증으로 확인해야 한다.
class RecallApprovalUseCase {
  RecallApprovalUseCase({required ApprovalRepository repository})
    : _repository = repository;

  final ApprovalRepository _repository;

  /// 결재를 회수하고 최신 [ApprovalFlow]를 반환한다.
  Future<ApprovalFlow> call(ApprovalRecallInput input) async {
    final approval = await _repository.recall(input);
    return ApprovalFlow.fromApproval(approval);
  }
}
