< Summary

Information
Class: OzonDomains.Models.OrderHistory
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OrderHistory.cs
Line coverage
67%
Covered lines: 19
Uncovered lines: 9
Coverable lines: 28
Total lines: 94
Line coverage: 67.8%
Branch coverage
58%
Covered branches: 7
Total branches: 12
Branch coverage: 58.3%
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_OrderId()100%11100%
get_ColumnName()100%11100%
get_ColumnDisplayName()100%11100%
get_OldValue()100%11100%
get_NewValue()100%11100%
get_ChangedAt()100%11100%
get_ChangedBy()100%11100%
get_OperationId()100%11100%
get_Order()100%210%
get_FormattedOldValue()100%11100%
get_FormattedNewValue()100%11100%
get_FormattedChangedAt()100%210%
FormatValue(...)87.5%8888.88%
get_IsOldValueNumeric()100%210%
get_IsNewValueNumeric()100%210%
IsNumeric(...)0%2040%

File(s)

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

#LineLine coverage
 1using System;
 2using System.ComponentModel.DataAnnotations;
 3using System.ComponentModel.DataAnnotations.Schema;
 4using System.Globalization;
 5
 6namespace OzonDomains.Models;
 7
 8[Table("orders_history")]
 9public class OrderHistory
 10{
 11    [Key]
 12    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 13    [Column("Id")]
 5914    public int Id { get; set; }
 15
 16    [Required]
 17    [Column("OrderId")]
 33318    public int OrderId { get; set; }
 19
 20    [Column("ColumnName")]
 21    [MaxLength(100)]
 43122    public string? ColumnName { get; set; }
 23
 24    [Column("ColumnDisplayName")]
 25    [MaxLength(200)]
 32526    public string? ColumnDisplayName { get; set; }
 27
 28    [Column("OldValue")]
 27129    public string? OldValue { get; set; }
 30
 31    [Column("NewValue")]
 40732    public string? NewValue { get; set; }
 33
 34    [Required]
 35    [Column("ChangedAt")]
 40836    public DateTime ChangedAt { get; set; }
 37
 38    [Column("ChangedBy")]
 39    [MaxLength(255)]
 24540    public string? ChangedBy { get; set; }
 41
 42    /// <summary>Идентификатор одной операции сохранения; у старых записей отсутствует.</summary>
 43    [Column("OperationId", TypeName = "char(36)")]
 44    [MaxLength(36)]
 745    public Guid? OperationId { get; set; }
 46
 47    // Навигационное свойство
 48    [ForeignKey("OrderId")]
 049    public virtual Order? Order { get; set; }
 50
 51    // Методы для форматирования значений
 52    [NotMapped]
 3553    public string FormattedOldValue => FormatValue(OldValue);
 54
 55    [NotMapped]
 3756    public string FormattedNewValue => FormatValue(NewValue);
 57
 58    [NotMapped]
 059    public string FormattedChangedAt => ChangedAt.ToString("dd.MM.yyyy HH:mm:ss");
 60
 61    private string FormatValue(string? value)
 62    {
 7263        if (string.IsNullOrEmpty(value))
 1864            return string.Empty;
 65
 5466        if (string.Equals(value.Trim(), "NULL", StringComparison.OrdinalIgnoreCase))
 167            return "Не указано";
 68
 5369        if (decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var decimalValue))
 70        {
 2971            return decimalValue.ToString("0.##", CultureInfo.InvariantCulture);
 72        }
 73
 2474        if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleValue))
 75        {
 076            return doubleValue.ToString("0.##", CultureInfo.InvariantCulture);
 77        }
 2478        return value;
 79    }
 80    [NotMapped]
 081    public bool IsOldValueNumeric => IsNumeric(OldValue);
 82
 83    [NotMapped]
 084    public bool IsNewValueNumeric => IsNumeric(NewValue);
 85
 86    private bool IsNumeric(string? value)
 87    {
 088        if (string.IsNullOrEmpty(value))
 089            return false;
 90
 091        return decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out _) ||
 092               double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out _);
 93    }
 94}