refactor(domain): Remove entity and event files, add DigitalData.EmailProfiler.Shared reference
This commit is contained in:
@@ -10,4 +10,8 @@
|
||||
<PackageReference Include="MediatR" Version="12.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Events\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
using DigitalData.EmailProfiler.Domain.Enums;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBDD_EMAIL_ACCOUNT")]
|
||||
public class EmailAccount : BaseEntity, IAggregateRoot
|
||||
{
|
||||
[Key]
|
||||
[Column("EMAIL_ACCOUNT_ID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("ACCOUNT_NAME", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string AccountName { get; set; } = string.Empty;
|
||||
|
||||
// IMAP Configuration
|
||||
[Column("IMAP_SERVER", TypeName = "varchar(200)")]
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string ImapServer { get; set; } = string.Empty;
|
||||
|
||||
[Column("IMAP_PORT")]
|
||||
[Required]
|
||||
public int ImapPort { get; set; }
|
||||
|
||||
[Column("IMAP_USE_SSL")]
|
||||
public bool ImapUseSsl { get; set; } = true;
|
||||
|
||||
// SMTP Configuration
|
||||
[Column("SMTP_SERVER", TypeName = "varchar(200)")]
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string SmtpServer { get; set; } = string.Empty;
|
||||
|
||||
[Column("SMTP_PORT")]
|
||||
[Required]
|
||||
public int SmtpPort { get; set; }
|
||||
|
||||
[Column("SMTP_USE_SSL")]
|
||||
public bool SmtpUseSsl { get; set; } = true;
|
||||
|
||||
// Authentication
|
||||
[Column("USERNAME", TypeName = "varchar(200)")]
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string Username { get; set; } = string.Empty;
|
||||
|
||||
[Column("PASSWORD", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? EncryptedPassword { get; set; }
|
||||
|
||||
[Column("USE_OAUTH2")]
|
||||
public bool UseOAuth2 { get; set; }
|
||||
|
||||
// OAuth2 (nullable)
|
||||
[Column("CLIENT_ID", TypeName = "varchar(200)")]
|
||||
[MaxLength(200)]
|
||||
public string? ClientId { get; set; }
|
||||
|
||||
[Column("TENANT_ID", TypeName = "varchar(200)")]
|
||||
[MaxLength(200)]
|
||||
public string? TenantId { get; set; }
|
||||
|
||||
[Column("CLIENT_SECRET", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? EncryptedClientSecret { get; set; }
|
||||
|
||||
// Status
|
||||
[Column("ACTIVE")]
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
[Column("SEQUENCE")]
|
||||
public int? Sequence { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit fields
|
||||
[Column("ADDED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? AddedWho { get; set; }
|
||||
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
[Column("CHANGED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? ChangedWho { get; set; }
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
public virtual ICollection<EmailProfile> Profiles { get; set; } = new List<EmailProfile>();
|
||||
|
||||
// Domain methods
|
||||
public AuthenticationType GetAuthenticationType() => UseOAuth2 ? AuthenticationType.OAuth2 : AuthenticationType.UsernamePassword;
|
||||
|
||||
public void Activate() => IsActive = true;
|
||||
public void Deactivate() => IsActive = false;
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
using DigitalData.EmailProfiler.Domain.Enums;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_HISTORY_ATTACHMENT")]
|
||||
public class EmailAttachment : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("EMAIL_HISTORY_ID")]
|
||||
[Required]
|
||||
public int EmailHistoryId { get; set; }
|
||||
|
||||
// File information
|
||||
[Column("ORIGINAL_FILE_NAME", TypeName = "varchar(500)")]
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string OriginalFileName { get; set; } = string.Empty;
|
||||
|
||||
[Column("SAVED_FILE_NAME", TypeName = "varchar(500)")]
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string SavedFileName { get; set; } = string.Empty;
|
||||
|
||||
[Column("FILE_PATH", TypeName = "varchar(1000)")]
|
||||
[Required]
|
||||
[MaxLength(1000)]
|
||||
public string FilePath { get; set; } = string.Empty;
|
||||
|
||||
[Column("FILE_SIZE")]
|
||||
public long FileSize { get; set; }
|
||||
|
||||
[Column("EXTENSION", TypeName = "varchar(20)")]
|
||||
[MaxLength(20)]
|
||||
public string Extension { get; set; } = string.Empty;
|
||||
|
||||
// Attachment hierarchy
|
||||
[Column("IS_EMBEDDED_FILE")]
|
||||
public bool IsEmbeddedFile { get; set; }
|
||||
|
||||
[Column("PARENT_ATTACHMENT_ID")]
|
||||
public int? ParentAttachmentId { get; set; }
|
||||
|
||||
[Column("ATTACHMENT_POSITION")]
|
||||
public int AttachmentPosition { get; set; }
|
||||
|
||||
// Validation
|
||||
[Column("STATUS", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? Status { get; set; }
|
||||
|
||||
[Column("VALIDATION_ERROR_CODE")]
|
||||
public int? ValidationErrorCode { get; set; }
|
||||
|
||||
[Column("VALIDATION_ERROR_MESSAGE", TypeName = "nvarchar(max)")]
|
||||
public string? ValidationErrorMessage { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit field
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("EmailHistoryId")]
|
||||
public virtual EmailHistory? EmailHistory { get; set; }
|
||||
|
||||
[ForeignKey("ParentAttachmentId")]
|
||||
public virtual EmailAttachment? ParentAttachment { get; set; }
|
||||
|
||||
public virtual ICollection<EmailAttachment> EmbeddedFiles { get; set; } = new List<EmailAttachment>();
|
||||
|
||||
// Domain methods
|
||||
public void MarkAsValid()
|
||||
{
|
||||
Status = AttachmentStatus.Valid.ToString();
|
||||
}
|
||||
|
||||
public void MarkAsCorrupt(ErrorCode errorCode, string message)
|
||||
{
|
||||
Status = AttachmentStatus.Corrupt.ToString();
|
||||
ValidationErrorCode = (int)errorCode;
|
||||
ValidationErrorMessage = message;
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
using DigitalData.EmailProfiler.Domain.Enums;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_HISTORY")]
|
||||
public class EmailHistory : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("PROFILE_ID")]
|
||||
public int? ProfileId { get; set; }
|
||||
|
||||
[Column("WORK_PROCESS", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? WorkProcess { get; set; }
|
||||
|
||||
// Email identification
|
||||
[Column("EMAIL_MSGID")]
|
||||
[Required]
|
||||
public int EmailMessageId { get; set; }
|
||||
|
||||
[Column("EMAIL_MSGID_HASH", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? MessageIdHash { get; set; }
|
||||
|
||||
[Column("EMAIL_MSGID_ORIGINAL", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? OriginalMessageId { get; set; }
|
||||
|
||||
[Column("IMAP_UID")]
|
||||
public int? ImapUid { get; set; }
|
||||
|
||||
// Email metadata
|
||||
[Column("EMAIL_SENDER", TypeName = "varchar(200)")]
|
||||
[MaxLength(200)]
|
||||
public string? SenderAddress { get; set; }
|
||||
|
||||
[Column("EMAIL_SUBJECT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Subject { get; set; }
|
||||
|
||||
[Column("EMAIL_DATE")]
|
||||
public DateTime? EmailDate { get; set; }
|
||||
|
||||
[Column("EMAIL_BODY", TypeName = "nvarchar(max)")]
|
||||
public string? EmailBodyHtml { get; set; }
|
||||
|
||||
[Column("EMAIL_BODY_TEXT", TypeName = "nvarchar(max)")]
|
||||
public string? EmailBodyText { get; set; }
|
||||
|
||||
[Column("EMAIL_SUBSTRING1", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? EmailSubstring1 { get; set; }
|
||||
|
||||
[Column("EMAIL_SUBSTRING2", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? EmailSubstring2 { get; set; }
|
||||
|
||||
// Processing
|
||||
[Column("PROCESSED_DATE")]
|
||||
public DateTime? ProcessedDate { get; set; }
|
||||
|
||||
[Column("STATUS", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? Status { get; set; }
|
||||
|
||||
[Column("ERROR_CODE")]
|
||||
public int? ErrorCodeValue { get; set; }
|
||||
|
||||
[Column("ERROR_MESSAGE", TypeName = "nvarchar(max)")]
|
||||
public string? ErrorMessage { get; set; }
|
||||
|
||||
// windream
|
||||
[Column("WINDREAM_DOCUMENT_ID", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? WindreamDocumentId { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit field
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("ProfileId")]
|
||||
public virtual EmailProfile? Profile { get; set; }
|
||||
|
||||
public virtual ICollection<EmailAttachment> Attachments { get; set; } = new List<EmailAttachment>();
|
||||
|
||||
// Domain methods
|
||||
public void MarkAsProcessed()
|
||||
{
|
||||
Status = EmailStatus.Processed.ToString();
|
||||
ProcessedDate = DateTime.Now;
|
||||
}
|
||||
|
||||
public void MarkAsFailed(ErrorCode errorCode, string message)
|
||||
{
|
||||
Status = EmailStatus.Failed.ToString();
|
||||
ErrorCodeValue = (int)errorCode;
|
||||
ErrorMessage = message;
|
||||
ProcessedDate = DateTime.Now;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_EMAIL_OUT")]
|
||||
public class EmailOutbox : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("EMAIL_ACCOUNT_ID")]
|
||||
[Required]
|
||||
public int EmailAccountId { get; set; }
|
||||
|
||||
[Column("RECIPIENT", TypeName = "varchar(200)")]
|
||||
[Required]
|
||||
[MaxLength(200)]
|
||||
public string Recipient { get; set; } = string.Empty;
|
||||
|
||||
[Column("SUBJECT", TypeName = "nvarchar(500)")]
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
[Column("BODY", TypeName = "nvarchar(max)")]
|
||||
[Required]
|
||||
public string Body { get; set; } = string.Empty;
|
||||
|
||||
[Column("IS_HTML")]
|
||||
public bool IsHtml { get; set; } = true;
|
||||
|
||||
[Column("SENT")]
|
||||
public bool Sent { get; set; }
|
||||
|
||||
[Column("SENT_DATE")]
|
||||
public DateTime? SentDate { get; set; }
|
||||
|
||||
[Column("RETRY_COUNT")]
|
||||
public int RetryCount { get; set; }
|
||||
|
||||
[Column("REFERENCE_STRING", TypeName = "varchar(200)")]
|
||||
[MaxLength(200)]
|
||||
public string? ReferenceId { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit field
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("EmailAccountId")]
|
||||
public virtual EmailAccount? EmailAccount { get; set; }
|
||||
}
|
||||
@@ -1,114 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
using DigitalData.EmailProfiler.Domain.Enums;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_POLL_PROCESS")]
|
||||
public class EmailProcess : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("PROCESS_NAME", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string ProcessName { get; set; } = string.Empty;
|
||||
|
||||
[Column("STEP_NAME", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string StepName { get; set; } = string.Empty;
|
||||
|
||||
[Column("PROFILE_ID")]
|
||||
public int? ProfileId { get; set; }
|
||||
|
||||
// Configuration
|
||||
[Column("COPY_2_HDD")]
|
||||
public bool CopyToHdd { get; set; }
|
||||
|
||||
[Column("DELETE_MAIL")]
|
||||
public bool DeleteEmailAfterProcessing { get; set; }
|
||||
|
||||
// Paths
|
||||
[Column("PATH_EMAIL_TEMP", TypeName = "varchar(500)")]
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string TempPath { get; set; } = string.Empty;
|
||||
|
||||
[Column("PATH_EMAIL_ERRORS", TypeName = "varchar(500)")]
|
||||
[Required]
|
||||
[MaxLength(500)]
|
||||
public string ErrorPath { get; set; } = string.Empty;
|
||||
|
||||
[Column("PATH_ORIGINAL", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? ArchivePath { get; set; }
|
||||
|
||||
// windream
|
||||
[Column("WM_IMPORT")]
|
||||
public bool EnableWindreamImport { get; set; }
|
||||
|
||||
[Column("WM_OBJEKTTYPE", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? WindreamObjectType { get; set; }
|
||||
|
||||
[Column("WM_VECTOR_LOG", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? WindreamVectorLog { get; set; }
|
||||
|
||||
[Column("WM_PATH", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? WindreamPath { get; set; }
|
||||
|
||||
[Column("WM_FILE_NAME", TypeName = "varchar(200)")]
|
||||
[MaxLength(200)]
|
||||
public string? WindreamFileName { get; set; }
|
||||
|
||||
[Column("WM_REFERENCE_INDEX", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? WindreamReferenceIndex { get; set; }
|
||||
|
||||
[Column("WM_IDX_BODY_TEXT", TypeName = "varchar(100)")]
|
||||
[MaxLength(100)]
|
||||
public string? WindreamIndexBodyText { get; set; }
|
||||
|
||||
[Column("WM_IDX_BODY_SUBSTR_LENGTH")]
|
||||
public int WindreamIndexBodySubstrLength { get; set; }
|
||||
|
||||
[Column("ALLOW_XML_RECEIPTS")]
|
||||
public bool? AllowXmlReceipts { get; set; }
|
||||
|
||||
// Status
|
||||
[Column("ACTIVE")]
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
[Column("SEQUENCE")]
|
||||
public int? Sequence { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit fields
|
||||
[Column("ADDED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? AddedWho { get; set; }
|
||||
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
[Column("CHANGED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? ChangedWho { get; set; }
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
public virtual ICollection<ProcessStep> Steps { get; set; } = new List<ProcessStep>();
|
||||
public virtual ICollection<EmailProfile> Profiles { get; set; } = new List<EmailProfile>();
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_POLL_PROFILES")]
|
||||
public class EmailProfile : BaseEntity, IAggregateRoot
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("PROFILE_NAME", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string ProfileName { get; set; } = string.Empty;
|
||||
|
||||
[Column("POLL_TYPE", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string PollType { get; set; } = "IMAP";
|
||||
|
||||
[Column("EMAIL_CONF_ID")]
|
||||
[Required]
|
||||
public int EmailAccountId { get; set; }
|
||||
|
||||
[Column("PROCESS_ID")]
|
||||
public int? ProcessId { get; set; }
|
||||
|
||||
// Polling Configuration
|
||||
[Column("POLL_INTERVAL")]
|
||||
public int PollIntervalMinutes { get; set; } = 5;
|
||||
|
||||
[Column("LAST_TICK")]
|
||||
public DateTime? LastPollTime { get; set; }
|
||||
|
||||
// Validation
|
||||
[Column("VALIDATION_SQL", TypeName = "nvarchar(1024)")]
|
||||
[MaxLength(1024)]
|
||||
public string? ValidationSql { get; set; }
|
||||
|
||||
// Status
|
||||
[Column("ACTIVE")]
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
[Column("SEQUENCE")]
|
||||
public int? Sequence { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit fields
|
||||
[Column("ADDED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? AddedWho { get; set; }
|
||||
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
[Column("CHANGED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? ChangedWho { get; set; }
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("EmailAccountId")]
|
||||
public virtual EmailAccount? EmailAccount { get; set; }
|
||||
|
||||
[ForeignKey("ProcessId")]
|
||||
public virtual EmailProcess? EmailProcess { get; set; }
|
||||
|
||||
public virtual ICollection<EmailHistory> EmailHistories { get; set; } = new List<EmailHistory>();
|
||||
|
||||
// Domain methods
|
||||
public void UpdateLastPollTime() => LastPollTime = DateTime.Now;
|
||||
|
||||
public bool ShouldPoll()
|
||||
{
|
||||
if (!IsActive) return false;
|
||||
if (!LastPollTime.HasValue) return true;
|
||||
return DateTime.Now >= LastPollTime.Value.AddMinutes(PollIntervalMinutes);
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_POLL_INDEXING_STEPS")]
|
||||
public class IndexingStep : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("STEP_ID")]
|
||||
[Required]
|
||||
public int StepId { get; set; }
|
||||
|
||||
[Column("INDEXNAME", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string IndexName { get; set; } = string.Empty;
|
||||
|
||||
[Column("INDEXVALUE", TypeName = "varchar(100)")]
|
||||
[Required]
|
||||
[MaxLength(100)]
|
||||
public string IndexValue { get; set; } = string.Empty;
|
||||
|
||||
[Column("ACTIVE")]
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
[Column("USE_FOR_DIRECT_ANSWER")]
|
||||
public bool UseForDirectAnswer { get; set; }
|
||||
|
||||
[Column("SEQUENCE")]
|
||||
public int? Sequence { get; set; }
|
||||
|
||||
// Audit fields
|
||||
[Column("ADDED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? AddedWho { get; set; }
|
||||
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
[Column("CHANGED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? ChangedWho { get; set; }
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("StepId")]
|
||||
public virtual ProcessStep? ProcessStep { get; set; }
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using DigitalData.EmailProfiler.Domain.Common;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Entities;
|
||||
|
||||
[Table("TBEMLP_POLL_STEPS")]
|
||||
public class ProcessStep : BaseEntity
|
||||
{
|
||||
[Key]
|
||||
[Column("GUID", Order = 0)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("PROCESS_ID")]
|
||||
[Required]
|
||||
public int ProcessId { get; set; }
|
||||
|
||||
[Column("STEP_NAME", TypeName = "varchar(50)")]
|
||||
[Required]
|
||||
[MaxLength(50)]
|
||||
public string StepName { get; set; } = string.Empty;
|
||||
|
||||
[Column("KEYWORDS_BODY", TypeName = "varchar(1000)")]
|
||||
[MaxLength(1000)]
|
||||
public string? KeywordsBody { get; set; }
|
||||
|
||||
[Column("ACTIVE")]
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
[Column("SEQUENCE")]
|
||||
public int? Sequence { get; set; }
|
||||
|
||||
[Column("COMMENT", TypeName = "varchar(500)")]
|
||||
[MaxLength(500)]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
// Audit fields
|
||||
[Column("ADDED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? AddedWho { get; set; }
|
||||
|
||||
[Column("ADDED_WHEN")]
|
||||
public DateTime? AddedWhen { get; set; }
|
||||
|
||||
[Column("CHANGED_WHO", TypeName = "varchar(50)")]
|
||||
[MaxLength(50)]
|
||||
public string? ChangedWho { get; set; }
|
||||
|
||||
[Column("CHANGED_WHEN")]
|
||||
public DateTime? ChangedWhen { get; set; }
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey("ProcessId")]
|
||||
public virtual EmailProcess? EmailProcess { get; set; }
|
||||
|
||||
public virtual ICollection<IndexingStep> IndexingSteps { get; set; } = new List<IndexingStep>();
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using MediatR;
|
||||
using DigitalData.EmailProfiler.Domain.Enums;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Domain.Events;
|
||||
|
||||
public class EmailProcessedEvent(int emailHistoryId, int profileId, string messageId, EmailStatus status) : INotification
|
||||
{
|
||||
public int EmailHistoryId { get; } = emailHistoryId;
|
||||
public int ProfileId { get; } = profileId;
|
||||
public string MessageId { get; } = messageId;
|
||||
public EmailStatus Status { get; } = status;
|
||||
public DateTime ProcessedDate { get; } = DateTime.Now;
|
||||
}
|
||||
Reference in New Issue
Block a user