< Summary

Information
Class: OzonDomains.Models.OzonChatOrder
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OzonChatOrder.cs
Line coverage
50%
Covered lines: 8
Uncovered lines: 8
Coverable lines: 16
Total lines: 97
Line coverage: 50%
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%11100%
get_ChatId()100%11100%
get_OrderId()100%11100%
get_ClientId()100%11100%
get_PostingNumber()100%11100%
get_UnreadMessagesCount()100%210%
get_LastMessageDate()100%210%
get_LastMessageText()100%210%
get_LastMessageFromCustomer()100%210%
get_ChatStatus()100%210%
get_ChatType()100%210%
get_IsActive()100%11100%
get_CreatedAt()100%11100%
get_UpdatedAt()100%11100%
get_Order()100%210%
get_Client()100%210%

File(s)

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

#LineLine coverage
 1using System;
 2using System.ComponentModel.DataAnnotations;
 3using System.ComponentModel.DataAnnotations.Schema;
 4
 5namespace OzonDomains.Models
 6{
 7    /// <summary>
 8    /// Связь между чатом Ozon и заказом
 9    /// </summary>
 10    [Table("OzonChatOrders")]
 11    public class OzonChatOrder
 12    {
 13        [Key]
 14        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 315        public long Id { get; set; }
 16
 17        /// <summary>
 18        /// ID чата в системе Ozon
 19        /// </summary>
 20        [Required]
 21        [MaxLength(100)]
 622        public string ChatId { get; set; } = string.Empty;
 23
 24        /// <summary>
 25        /// ID заказа в нашей системе
 26        /// </summary>
 27        [Required]
 328        public int OrderId { get; set; }
 29
 30        /// <summary>
 31        /// ID клиента Ozon
 32        /// </summary>
 33        [Required]
 334        public int ClientId { get; set; }
 35
 36        /// <summary>
 37        /// Номер отправления (для быстрого поиска)
 38        /// </summary>
 39        [MaxLength(50)]
 340        public string? PostingNumber { get; set; }
 41
 42        /// <summary>
 43        /// Количество непрочитанных сообщений от покупателя
 44        /// </summary>
 045        public int UnreadMessagesCount { get; set; } = 0;
 46
 47        /// <summary>
 48        /// Дата последнего сообщения
 49        /// </summary>
 050        public DateTime? LastMessageDate { get; set; }
 51
 52        /// <summary>
 53        /// Текст последнего сообщения (для быстрого отображения)
 54        /// </summary>
 55        [Column(TypeName = "longtext")]
 056        public string? LastMessageText { get; set; }
 57
 58        /// <summary>
 59        /// Последнее сообщение от покупателя (true) или продавца (false)
 60        /// </summary>
 061        public bool LastMessageFromCustomer { get; set; } = false;
 62
 63        /// <summary>
 64        /// Статус чата (Opened, Closed)
 65        /// </summary>
 66        [MaxLength(50)]
 067        public string? ChatStatus { get; set; }
 68
 69        /// <summary>
 70        /// Тип чата (Buyer_Seller, Buyer_Support)
 71        /// </summary>
 72        [MaxLength(50)]
 073        public string? ChatType { get; set; }
 74
 75        /// <summary>
 76        /// Активен ли чат (для мягкого удаления)
 77        /// </summary>
 678        public bool IsActive { get; set; } = true;
 79
 80        /// <summary>
 81        /// Дата создания записи
 82        /// </summary>
 383        public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 84
 85        /// <summary>
 86        /// Дата последнего обновления
 87        /// </summary>
 388        public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
 89
 90        // Navigation properties
 91        [ForeignKey(nameof(OrderId))]
 092        public virtual Order? Order { get; set; }
 93
 94        [ForeignKey(nameof(ClientId))]
 095        public virtual OzonClient? Client { get; set; }
 96    }
 97}