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,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace DocumentService.Domain.Common.Exceptions;
public class BadRequestException : Exception
{
public BadRequestException()
{
}
public BadRequestException(string? message) : base(message)
{
}
public BadRequestException(string? message, Exception? innerException) : base(message, innerException)
{
}
}

View File

@@ -0,0 +1,26 @@
namespace DocumentService.Domain.Common.Exceptions;
/// <summary>
/// Base exception for all domain-related exceptions.
/// Caught by the Exception Handling Middleware in the API layer.
/// </summary>
[Obsolete("This exception is deprecated. Use more specific exceptions for domain errors.")]
public abstract class DomainException : Exception
{
/// <summary>
/// Error code for categorization and logging.
/// </summary>
public string ErrorCode { get; }
protected DomainException(string message, string errorCode)
: base(message)
{
ErrorCode = errorCode;
}
protected DomainException(string message, string errorCode, Exception innerException)
: base(message, innerException)
{
ErrorCode = errorCode;
}
}

View File

@@ -0,0 +1,29 @@
namespace DocumentService.Domain.Common.Exceptions;
/// <summary>
/// Exception thrown when domain validation fails (e.g., invalid Value Objects).
/// Maps to HTTP 400 Bad Request in the API layer.
/// </summary>
[Obsolete("This exception is deprecated. Use more specific exceptions for domain validation errors.")]
public class DomainValidationException : DomainException
{
public string PropertyName { get; }
public DomainValidationException(string message)
: base(message, "DOMAIN_VALIDATION_ERROR")
{
PropertyName = string.Empty;
}
public DomainValidationException(string propertyName, string message)
: base(message, "DOMAIN_VALIDATION_ERROR")
{
PropertyName = propertyName;
}
public DomainValidationException(string message, Exception innerException)
: base(message, "DOMAIN_VALIDATION_ERROR", innerException)
{
PropertyName = string.Empty;
}
}

View File

@@ -0,0 +1,22 @@
using System.Runtime.Serialization;
namespace DocumentService.Domain.Common.Exceptions;
/// <summary>
/// Exception thrown when a requested resource is not found.
/// Maps to HTTP 404 Not Found in the API layer.
/// </summary>
public class NotFoundException : Exception
{
public NotFoundException()
{
}
public NotFoundException(string? message) : base(message)
{
}
public NotFoundException(string? message, Exception? innerException) : base(message, innerException)
{
}
}

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Common\Results\**" />
<Compile Remove="Constants\**" />
<EmbeddedResource Remove="Common\Results\**" />
<EmbeddedResource Remove="Constants\**" />
<None Remove="Common\Results\**" />
<None Remove="Constants\**" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Coordinate origin point for PDF annotations.
/// PDF default is BottomLeft, but users may prefer TopLeft for easier UI integration.
/// </summary>
public enum AnnotationOrigin
{
/// <summary>
/// Bottom-left corner (PDF native coordinate system, default)
/// </summary>
BottomLeft,
/// <summary>
/// Top-left corner (common in UI frameworks)
/// </summary>
TopLeft
}

View File

@@ -0,0 +1,32 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Supported PDF annotation types
/// </summary>
public enum AnnotationType
{
/// <summary>
/// Text markup annotation (highlight, underline, strikeout)
/// </summary>
TextMarkup,
/// <summary>
/// Free text annotation (text box with visible text)
/// </summary>
FreeText,
/// <summary>
/// Sticky note annotation (popup comment icon)
/// </summary>
StickyNote,
/// <summary>
/// Circle shape annotation
/// </summary>
Circle,
/// <summary>
/// Square shape annotation
/// </summary>
Square
}

View File

@@ -0,0 +1,32 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Predefined stamp types with standard text and styling.
/// </summary>
public enum PredefinedStampType
{
/// <summary>
/// CONFIDENTIAL stamp (red, bold).
/// </summary>
Confidential,
/// <summary>
/// APPROVED stamp (green, bold).
/// </summary>
Approved,
/// <summary>
/// DRAFT stamp (gray, italic).
/// </summary>
Draft,
/// <summary>
/// VOID stamp (red, strikethrough effect).
/// </summary>
Void,
/// <summary>
/// FOR REVIEW stamp (orange, bold).
/// </summary>
ForReview
}

View File

@@ -0,0 +1,17 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Specifies whether the stamp should appear in the foreground (on top of content) or background (behind content).
/// </summary>
public enum StampPlacement
{
/// <summary>
/// Stamp appears on top of existing page content.
/// </summary>
Foreground,
/// <summary>
/// Stamp appears behind existing page content (watermark effect).
/// </summary>
Background
}

View File

@@ -0,0 +1,22 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Specifies the type of stamp to add to a PDF document.
/// </summary>
public enum StampType
{
/// <summary>
/// Text-based stamp with custom text, font, and color.
/// </summary>
Text,
/// <summary>
/// Image-based stamp (PNG/JPEG overlay).
/// </summary>
Image,
/// <summary>
/// Predefined stamp with standard text (e.g., CONFIDENTIAL, APPROVED).
/// </summary>
Predefined
}

View File

@@ -0,0 +1,41 @@
namespace DocumentService.Domain.Models.ValueObjects;
public sealed class TenantId
{
public string Value { get; }
private TenantId(string value)
{
Value = value;
}
public static TenantId Create(string value)
{
if (string.IsNullOrWhiteSpace(value))
throw new Common.Exceptions.DomainValidationException("TenantId cannot be empty.");
if (value.Length > 100)
throw new Common.Exceptions.DomainValidationException("TenantId cannot exceed 100 characters.");
// Normalisierung: Lowercase
var normalized = value.Trim().ToLowerInvariant();
return new TenantId(normalized);
}
public override string ToString() => Value;
// Equality
public override bool Equals(object? obj)
{
if (obj is not TenantId other)
return false;
return Value == other.Value;
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
}

View File

@@ -0,0 +1,23 @@
namespace DocumentService.Domain.Models.ValueObjects;
/// <summary>
/// Text markup annotation style (highlight, underline, strikeout)
/// Maps to DevExpress PdfTextMarkupAnnotationType
/// </summary>
public enum TextMarkupStyle
{
/// <summary>
/// Highlight text with background color
/// </summary>
Highlight,
/// <summary>
/// Underline text
/// </summary>
Underline,
/// <summary>
/// Strikeout text (strikethrough)
/// </summary>
Strikeout
}