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

/// 결재를 재상신(resubmit)하는 유즈케이스.
///
/// - 재상신 시 수정된 단계 정보와 메모를 함께 전달한다.
class ResubmitApprovalUseCase {
  ResubmitApprovalUseCase({required ApprovalRepository repository})
    : _repository = repository;

  final ApprovalRepository _repository;

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