< Summary

Information
Class: OzonDomains.Models.OzonChatResponseStatistic
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OzonChatResponseStatistic.cs
Line coverage
30%
Covered lines: 6
Uncovered lines: 14
Coverable lines: 20
Total lines: 120
Line coverage: 30%
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_ClientId()100%11100%
get_OrderId()100%210%
get_PostingNumber()100%210%
get_ClientMessageId()100%210%
get_ClientMessageText()100%11100%
get_ClientMessageDate()100%210%
get_SellerResponseMessageId()100%210%
get_SellerResponseText()100%210%
get_SellerResponseDate()100%210%
get_ResponseTimeSeconds()100%210%
get_IsAnswered()100%210%
get_ChatType()100%210%
get_ChatStatus()100%210%
get_ResponderName()100%210%
get_CreatedAt()100%11100%
get_UpdatedAt()100%11100%
get_Client()100%210%
get_Order()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OzonChatResponseStatistic.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("OzonChatResponseStatistics")]
 11    public class OzonChatResponseStatistic
 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 клиента Ozon в нашей системе
 26        /// </summary>
 27        [Required]
 328        public int ClientId { get; set; }
 29
 30        /// <summary>
 31        /// ID заказа в нашей системе (может быть null)
 32        /// </summary>
 033        public int? OrderId { get; set; }
 34
 35        /// <summary>
 36        /// Номер отправления (для быстрого поиска)
 37        /// </summary>
 38        [MaxLength(50)]
 039        public string? PostingNumber { get; set; }
 40
 41        /// <summary>
 42        /// ID сообщения клиента в системе Ozon
 43        /// </summary>
 44        [Required]
 045        public long ClientMessageId { get; set; }
 46
 47        /// <summary>
 48        /// Текст сообщения клиента
 49        /// </summary>
 50        [Column(TypeName = "longtext")]
 351        public string? ClientMessageText { get; set; }
 52
 53        /// <summary>
 54        /// Дата и время отправки сообщения клиентом (UTC)
 55        /// </summary>
 56        [Required]
 057        public DateTime ClientMessageDate { get; set; }
 58
 59        /// <summary>
 60        /// ID ответного сообщения продавца (если был ответ)
 61        /// </summary>
 062        public long? SellerResponseMessageId { get; set; }
 63
 64        /// <summary>
 65        /// Текст ответа продавца (если был ответ)
 66        /// </summary>
 67        [Column(TypeName = "longtext")]
 068        public string? SellerResponseText { get; set; }
 69
 70        /// <summary>
 71        /// Дата и время ответа продавца (UTC)
 72        /// </summary>
 073        public DateTime? SellerResponseDate { get; set; }
 74
 75        /// <summary>
 76        /// Время ответа в секундах (разница между ответом и вопросом)
 77        /// </summary>
 078        public int? ResponseTimeSeconds { get; set; }
 79
 80        /// <summary>
 81        /// Был ли дан ответ на сообщение
 82        /// </summary>
 083        public bool IsAnswered { get; set; } = false;
 84
 85        /// <summary>
 86        /// Тип чата (Buyer_Seller, Buyer_Support)
 87        /// </summary>
 88        [MaxLength(50)]
 089        public string? ChatType { get; set; }
 90
 91        /// <summary>
 92        /// Статус чата на момент записи (Opened, Closed)
 93        /// </summary>
 94        [MaxLength(50)]
 095        public string? ChatStatus { get; set; }
 96
 97        /// <summary>
 98        /// Имя оператора/пользователя, который ответил (если известно)
 99        /// </summary>
 100        [MaxLength(200)]
 0101        public string? ResponderName { get; set; }
 102
 103        /// <summary>
 104        /// Дата создания записи в БД
 105        /// </summary>
 3106        public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 107
 108        /// <summary>
 109        /// Дата последнего обновления записи
 110        /// </summary>
 3111        public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
 112
 113        // Navigation properties
 114        [ForeignKey(nameof(ClientId))]
 0115        public virtual OzonClient? Client { get; set; }
 116
 117        [ForeignKey(nameof(OrderId))]
 0118        public virtual Order? Order { get; set; }
 119    }
 120}