import '../entities/approval_template.dart';
import '../repositories/approval_template_repository.dart';

/// 결재 템플릿을 생성/수정하는 유즈케이스.
///
/// - [templateId]가 null이면 신규 생성, 값이 있으면 수정으로 처리한다.
class SaveApprovalTemplateUseCase {
  SaveApprovalTemplateUseCase({required ApprovalTemplateRepository repository})
    : _repository = repository;

  final ApprovalTemplateRepository _repository;

  /// 템플릿을 저장하고 최신 [ApprovalTemplate]을 반환한다.
  Future<ApprovalTemplate> call({
    int? templateId,
    required ApprovalTemplateInput input,
    List<ApprovalTemplateStepInput>? steps,
  }) {
    if (templateId == null) {
      return _repository.create(input, steps: steps ?? const []);
    }
    return _repository.update(templateId, input, steps: steps);
  }
}
