Refactor: Rename DocumentOperator to DocumentService

Updated project and solution files to rename and restructure
`DocumentOperator` to `DocumentService`. Modified project
references in `DocumentService.API.csproj`, `DocumentService.Application.csproj`,
and `DocumentService.Infrastructure.csproj` to reflect the new
naming convention. Updated `DocumentService.sln` to remove
old project references, add new ones, and adjust configuration
and nested project mappings accordingly. This change aligns
the project structure with the new naming convention.
This commit is contained in:
2026-08-30 21:33:25 +02:00
parent 050cb55bf9
commit 207c778f3a
108 changed files with 37 additions and 37 deletions

View File

@@ -0,0 +1,62 @@
using DocumentService.Application.Common.Configuration;
using DocumentService.Application.Common.DTOs;
using DocumentService.Application.Common.Interfaces;
using MediatR;
using Microsoft.Extensions.Options;
namespace DocumentService.Application.HasZugferd.Queries;
/// <summary>
/// Query for checking if PDF contains ZUGFeRD XML attachment
/// </summary>
public record HasZugferdQuery : IRequest<ZugferdCheckResult>
{
/// <summary>
/// PDF as stream (caller is responsible for disposal)
/// </summary>
public required Stream PdfStream { get; init; }
}
/// <summary>
/// Handler for HasZugferdQuery
/// Checks if PDF contains ZUGFeRD/Factur-X XML attachment
/// </summary>
public class HasZugferdQueryHandler(
IPdfProcessor pdfProcessor,
IOptions<ZugferdSettings> settings)
: IRequestHandler<HasZugferdQuery, ZugferdCheckResult>
{
private readonly ZugferdSettings _settings = settings.Value;
/// <summary>
/// Checks if PDF contains ZUGFeRD XML and returns metadata
/// </summary>
public async Task<ZugferdCheckResult> Handle(HasZugferdQuery request, CancellationToken cancellationToken)
{
// Get all attachments
var attachmentInfo = await pdfProcessor.CheckAttachmentsAsync(request.PdfStream);
// Check for ZUGFeRD/Factur-X XML files using configured names and patterns
var zugferdAttachment = attachmentInfo.Attachments.FirstOrDefault(a =>
_settings.ZugferdFileNames.Any(name =>
a.FileName.Equals(name, StringComparison.OrdinalIgnoreCase)) ||
_settings.ZugferdFileNamePatterns.Any(pattern =>
a.FileName.Contains(pattern, StringComparison.OrdinalIgnoreCase)));
if (zugferdAttachment != null)
{
return new ZugferdCheckResult
{
HasZugferd = true,
ZugferdFileName = zugferdAttachment.FileName,
ZugferdFileSize = zugferdAttachment.SizeBytes,
ZugferdMimeType = zugferdAttachment.MimeType
};
}
return new ZugferdCheckResult
{
HasZugferd = false
};
}
}

View File

@@ -0,0 +1,16 @@
using FluentValidation;
namespace DocumentService.Application.HasZugferd.Queries;
/// <summary>
/// Validator for HasZugferdQuery
/// </summary>
public class HasZugferdQueryValidator : AbstractValidator<HasZugferdQuery>
{
public HasZugferdQueryValidator()
{
RuleFor(x => x.PdfStream)
.NotNull()
.WithMessage("PDF stream is required");
}
}