< Summary

Information
Class: OzonDomains.Models.StatusTransition
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/StatusTransition.cs
Line coverage
40%
Covered lines: 6
Uncovered lines: 9
Coverable lines: 15
Total lines: 84
Line coverage: 40%
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_FromStatusId()100%11100%
get_FromStatus()100%210%
get_ToStatusId()100%11100%
get_ToStatus()100%210%
get_TransactionType()100%11100%
get_DisplayName()100%210%
get_Description()100%210%
get_DisplayOrder()100%210%
get_IsActive()100%11100%
get_IsRepeatable()100%210%
get_Conditions()100%210%
get_SystemName()100%210%
get_CreatedAt()100%11100%
get_UpdatedAt()100%210%

File(s)

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

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3using OzonDomains;
 4
 5namespace OzonDomains.Models
 6{
 7    /// <summary>
 8    /// Переход между статусами (workflow).
 9    /// </summary>
 10    public class StatusTransition
 11    {
 1612        public int Id { get; set; }
 13
 14        /// <summary>
 15        /// Исходный статус
 16        /// </summary>
 2117        public int FromStatusId { get; set; }
 18
 19        [ForeignKey(nameof(FromStatusId))]
 020        public virtual AppStatus? FromStatus { get; set; }
 21
 22        /// <summary>
 23        /// Целевой статус
 24        /// </summary>
 1625        public int ToStatusId { get; set; }
 26
 27        [ForeignKey(nameof(ToStatusId))]
 028        public virtual AppStatus? ToStatus { get; set; }
 29
 30        /// <summary>
 31        /// Тип транзакции, используемый для перехода
 32        /// </summary>
 1733        public TransactionType TransactionType { get; set; }
 34
 35        /// <summary>
 36        /// Название перехода (для отображения в UI)
 37        /// </summary>
 38        [StringLength(100)]
 039        public string? DisplayName { get; set; }
 40
 41        /// <summary>
 42        /// Описание перехода
 43        /// </summary>
 44        [StringLength(500)]
 045        public string? Description { get; set; }
 46
 47        /// <summary>
 48        /// Порядок отображения (для сортировки в UI). Необязательное поле.
 49        /// </summary>
 050        public int? DisplayOrder { get; set; }
 51
 52        /// <summary>
 53        /// Активен ли переход
 54        /// </summary>
 1055        public bool IsActive { get; set; } = true;
 56
 57        /// <summary>
 58        /// Разрешено ли выполнять переход несколько раз
 59        /// </summary>
 060        public bool IsRepeatable { get; set; } = false;
 61
 62        /// <summary>
 63        /// Условия перехода (JSON или текст для бизнес-логики)
 64        /// </summary>
 65        [StringLength(1000)]
 066        public string? Conditions { get; set; }
 67
 68        /// <summary>
 69        /// Системное имя (для использования в коде)
 70        /// </summary>
 71        [StringLength(50)]
 072        public string? SystemName { get; set; }
 73
 74        /// <summary>
 75        /// Дата создания записи
 76        /// </summary>
 1077        public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
 78
 79        /// <summary>
 80        /// Дата последнего обновления
 81        /// </summary>
 082        public DateTime? UpdatedAt { get; set; }
 83    }
 84}