| | | 1 | | using System.ComponentModel.DataAnnotations; |
| | | 2 | | |
| | | 3 | | namespace OzonDomains.Models.Partners; |
| | | 4 | | |
| | | 5 | | /// <summary>Журнал входов и действий партнёров и владельца над партнёрами.</summary> |
| | | 6 | | public class PartnerAuditLog |
| | | 7 | | { |
| | 24 | 8 | | public long Id { get; set; } |
| | | 9 | | |
| | 204 | 10 | | public DateTime OccurredAtUtc { get; set; } = DateTime.UtcNow; |
| | | 11 | | |
| | | 12 | | /// <summary>Партнёр, о котором запись. Null — запись без привязки (например, вход с неизвестным логином).</summary> |
| | 104 | 13 | | public long? PartnerId { get; set; } |
| | | 14 | | |
| | | 15 | | /// <summary>Кто выполнил: логин партнёра, id владельца или "system".</summary> |
| | | 16 | | [MaxLength(200)] |
| | 125 | 17 | | public string Actor { get; set; } = null!; |
| | | 18 | | |
| | 106 | 19 | | public PartnerActorKind ActorKind { get; set; } |
| | | 20 | | |
| | | 21 | | /// <summary>Код действия, например "login", "login_failed", "partner_created", "rule_saved".</summary> |
| | | 22 | | [MaxLength(64)] |
| | 121 | 23 | | public string Action { get; set; } = null!; |
| | | 24 | | |
| | | 25 | | /// <summary>Номер заказа, если действие относится к заказу.</summary> |
| | | 26 | | [MaxLength(100)] |
| | 104 | 27 | | public string? OrderNumber { get; set; } |
| | | 28 | | |
| | 203 | 29 | | public bool Success { get; set; } = true; |
| | | 30 | | |
| | | 31 | | [MaxLength(2000)] |
| | 112 | 32 | | public string? Details { get; set; } |
| | | 33 | | |
| | | 34 | | [MaxLength(64)] |
| | 107 | 35 | | public string? IpAddress { get; set; } |
| | | 36 | | } |
| | | 37 | | |
| | | 38 | | public enum PartnerActorKind |
| | | 39 | | { |
| | | 40 | | System = 0, |
| | | 41 | | Partner = 1, |
| | | 42 | | Owner = 2 |
| | | 43 | | } |