< Summary

Information
Class: OzonDomains.Models.EmailAttachmentProcessingResult
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/EmailRoutingModels.cs
Line coverage
33%
Covered lines: 5
Uncovered lines: 10
Coverable lines: 15
Total lines: 193
Line coverage: 33.3%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%210%
get_EmailMessageInboxId()100%11100%
get_EmailAttachmentInboxId()100%11100%
get_EmailRoutingRuleId()100%210%
get_Status()100%11100%
get_Reason()100%11100%
get_DropboxFolderPath()100%210%
get_DropboxFileName()100%210%
get_DropboxFilePath()100%210%
get_DropboxDownloadLink()100%210%
get_Error()100%210%
get_CreatedAt()100%11100%
get_EmailMessage()100%210%
get_Attachment()100%210%
get_Rule()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/EmailRoutingModels.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3
 4namespace OzonDomains.Models;
 5
 6public enum EmailRoutingConflictPolicy
 7{
 8    Overwrite = 0,
 9    SkipIfExists = 1,
 10    VersionedName = 2
 11}
 12
 13public enum EmailMessageProcessingStatus
 14{
 15    New = 0,
 16    ProcessedSuccessfully = 1,
 17    ProcessedWithWarnings = 2,
 18    Failed = 3
 19}
 20
 21public enum EmailAttachmentProcessingStatus
 22{
 23    Pending = 0,
 24    Uploaded = 1,
 25    RejectedByRule = 2,
 26    Duplicate = 3,
 27    Failed = 4,
 28    OrdersImported = 5
 29}
 30
 31[Table("EmailRoutingRules")]
 32public class EmailRoutingRule
 33{
 34    [Key]
 35    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 36    public int Id { get; set; }
 37
 38    [Required]
 39    [MaxLength(200)]
 40    public string Name { get; set; } = string.Empty;
 41
 42    public bool IsActive { get; set; } = true;
 43
 44    public int Priority { get; set; } = 100;
 45
 46    [MaxLength(1000)]
 47    public string? AllowedSenders { get; set; }
 48
 49    [MaxLength(1000)]
 50    public string? SubjectPattern { get; set; }
 51
 52    [MaxLength(1000)]
 53    public string? BodyPattern { get; set; }
 54
 55    [MaxLength(1000)]
 56    public string? FileNamePattern { get; set; }
 57
 58    [MaxLength(500)]
 59    public string? AllowedExtensions { get; set; }
 60
 61    public long? MinFileSizeBytes { get; set; }
 62
 63    public long? MaxFileSizeBytes { get; set; }
 64
 65    [Required]
 66    [MaxLength(500)]
 67    public string DropboxFolderTemplate { get; set; } = "/Приложения/Studio2/EmailFiles";
 68
 69    public EmailRoutingConflictPolicy ConflictPolicy { get; set; } = EmailRoutingConflictPolicy.SkipIfExists;
 70
 71    public bool ProcessOnlyFirstMatchedAttachment { get; set; }
 72
 73    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 74
 75    public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
 76}
 77
 78[Table("EmailMessageInboxes")]
 79public class EmailMessageInbox
 80{
 81    [Key]
 82    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 83    public long Id { get; set; }
 84
 85    [Required]
 86    [MaxLength(255)]
 87    public string MessageExternalId { get; set; } = string.Empty;
 88
 89    [MaxLength(255)]
 90    public string? Uid { get; set; }
 91
 92    [MaxLength(320)]
 93    public string? SenderEmail { get; set; }
 94
 95    [MaxLength(500)]
 96    public string? Subject { get; set; }
 97
 98    [Column(TypeName = "longtext")]
 99    public string? BodyText { get; set; }
 100
 101    public DateTime? ReceivedAtUtc { get; set; }
 102
 103    public EmailMessageProcessingStatus ProcessingStatus { get; set; } = EmailMessageProcessingStatus.New;
 104
 105    [MaxLength(1000)]
 106    public string? ProcessingError { get; set; }
 107
 108    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 109
 110    public DateTime? ProcessedAtUtc { get; set; }
 111
 112    public virtual List<EmailAttachmentInbox> Attachments { get; set; } = new();
 113}
 114
 115[Table("EmailAttachmentInboxes")]
 116public class EmailAttachmentInbox
 117{
 118    [Key]
 119    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 120    public long Id { get; set; }
 121
 122    [Required]
 123    public long EmailMessageInboxId { get; set; }
 124
 125    [Required]
 126    [MaxLength(500)]
 127    public string FileName { get; set; } = string.Empty;
 128
 129    [MaxLength(20)]
 130    public string? Extension { get; set; }
 131
 132    public long FileSizeBytes { get; set; }
 133
 134    [MaxLength(128)]
 135    public string? Sha256Hash { get; set; }
 136
 137    [Column(TypeName = "longblob")]
 138    public byte[] FileBytes { get; set; } = Array.Empty<byte>();
 139
 140    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 141
 142    [ForeignKey(nameof(EmailMessageInboxId))]
 143    public virtual EmailMessageInbox? EmailMessage { get; set; }
 144
 145    public virtual List<EmailAttachmentProcessingResult> ProcessingResults { get; set; } = new();
 146}
 147
 148[Table("EmailAttachmentProcessingResults")]
 149public class EmailAttachmentProcessingResult
 150{
 151    [Key]
 152    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 0153    public long Id { get; set; }
 154
 155    [Required]
 2156    public long EmailMessageInboxId { get; set; }
 157
 158    [Required]
 2159    public long EmailAttachmentInboxId { get; set; }
 160
 0161    public int? EmailRoutingRuleId { get; set; }
 162
 2163    public EmailAttachmentProcessingStatus Status { get; set; } = EmailAttachmentProcessingStatus.Pending;
 164
 165    [MaxLength(1000)]
 2166    public string? Reason { get; set; }
 167
 168    [MaxLength(700)]
 0169    public string? DropboxFolderPath { get; set; }
 170
 171    [MaxLength(700)]
 0172    public string? DropboxFileName { get; set; }
 173
 174    [MaxLength(1200)]
 0175    public string? DropboxFilePath { get; set; }
 176
 177    [MaxLength(1200)]
 0178    public string? DropboxDownloadLink { get; set; }
 179
 180    [MaxLength(2000)]
 0181    public string? Error { get; set; }
 182
 2183    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 184
 185    [ForeignKey(nameof(EmailMessageInboxId))]
 0186    public virtual EmailMessageInbox? EmailMessage { get; set; }
 187
 188    [ForeignKey(nameof(EmailAttachmentInboxId))]
 0189    public virtual EmailAttachmentInbox? Attachment { get; set; }
 190
 191    [ForeignKey(nameof(EmailRoutingRuleId))]
 0192    public virtual EmailRoutingRule? Rule { get; set; }
 193}