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:
@@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
26
DocumentService.Domain/Common/Exceptions/DomainException.cs
Normal file
26
DocumentService.Domain/Common/Exceptions/DomainException.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
18
DocumentService.Domain/DocumentService.Domain.csproj
Normal file
18
DocumentService.Domain/DocumentService.Domain.csproj
Normal 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>
|
||||
@@ -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
|
||||
}
|
||||
32
DocumentService.Domain/Models/ValueObjects/AnnotationType.cs
Normal file
32
DocumentService.Domain/Models/ValueObjects/AnnotationType.cs
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
17
DocumentService.Domain/Models/ValueObjects/StampPlacement.cs
Normal file
17
DocumentService.Domain/Models/ValueObjects/StampPlacement.cs
Normal 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
|
||||
}
|
||||
22
DocumentService.Domain/Models/ValueObjects/StampType.cs
Normal file
22
DocumentService.Domain/Models/ValueObjects/StampType.cs
Normal 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
|
||||
}
|
||||
41
DocumentService.Domain/Models/ValueObjects/TenantId.cs
Normal file
41
DocumentService.Domain/Models/ValueObjects/TenantId.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user