MediatR Commands (CQRS Pattern): - CreateEmailProfileCommand + Handler - UpdateEmailProfileCommand + Handler - DeleteEmailProfileCommand + Handler - CreateEmailAccountCommand + Handler - ProcessEmailCommand + Handler (core email processing logic) Command Handlers: - Create/Update/Delete operations for EmailProfile - Create operation for EmailAccount - ProcessEmail: Complete email processing workflow including: * Duplicate detection using MessageId hash * Email history creation * PDF attachment validation * windream DMS archiving support (placeholder) * Domain event publishing (EmailProcessedEvent) * Error handling and status tracking Exception Improvements: - Added ErrorCode property to DomainException - Added ErrorCode overload to ValidationException - Simplified AttachmentProcessingException to use base ErrorCode Field Mappings Fixed: - EmailProfile: ProcessId (not EmailProcessId), ValidationSql (not SenderFilter/SubjectFilter) - EmailAccount: Username, EncryptedPassword, UseOAuth2, EncryptedClientSecret - EmailHistory: SenderAddress, EmailDate, OriginalMessageId, EmailBodyText/Html - EmailAttachment: OriginalFileName, SavedFileName, FilePath, FileSize - Audit fields: AddedWhen/AddedWho, ChangedWhen/ChangedWho (not CreatedDate/By, ModifiedDate/By) All commands follow Clean Architecture and use UnitOfWork pattern. Build successful with 1 minor warning (dmsService marked for future implementation).
22 lines
499 B
C#
22 lines
499 B
C#
using DigitalData.EmailProfiler.Domain.Enums;
|
|
|
|
namespace DigitalData.EmailProfiler.Domain.Exceptions;
|
|
|
|
public class DomainException : Exception
|
|
{
|
|
public ErrorCode? ErrorCode { get; }
|
|
|
|
public DomainException(string message) : base(message)
|
|
{
|
|
}
|
|
|
|
public DomainException(string message, ErrorCode errorCode) : base(message)
|
|
{
|
|
ErrorCode = errorCode;
|
|
}
|
|
|
|
public DomainException(string message, Exception innerException) : base(message, innerException)
|
|
{
|
|
}
|
|
}
|