< Summary

Information
Class: OzonDomains.Models.ProfitLigaCartItem
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/ProfitLigaCartItem.cs
Line coverage
100%
Covered lines: 25
Uncovered lines: 0
Coverable lines: 25
Total lines: 67
Line coverage: 100%
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_StudioOrderId()100%11100%
get_ActiveStudioOrderId()100%11100%
get_StudioOrder()100%11100%
get_ArticleId()100%11100%
get_WarehouseId()100%11100%
get_ProductCode()100%11100%
get_Article()100%11100%
get_Brand()100%11100%
get_ProductName()100%11100%
get_WarehouseName()100%11100%
get_PointCode()100%11100%
get_PointName()100%11100%
get_Quantity()100%11100%
get_Multi()100%11100%
get_SourcePrice()100%11100%
get_CurrencyCode()100%11100%
get_DeliveryAtUtc()100%11100%
get_Status()100%11100%
get_TestResultJson()100%11100%
get_LastError()100%11100%
get_TestedAtUtc()100%11100%
get_CreatedBy()100%11100%
get_CreatedAtUtc()100%11100%
get_UpdatedAtUtc()100%11100%

File(s)

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

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3
 4namespace OzonDomains.Models;
 5
 6/// <summary>Локальная корзина Профит-Лиги. Рабочая корзина Studio2 держится здесь, а не у поставщика:
 7/// POST /cart/order оформляет корзину аккаунта целиком, поэтому выбранные позиции заливаются в API
 8/// только в момент оформления.</summary>
 9[Table("ProfitLigaCartItems")]
 10public sealed class ProfitLigaCartItem
 11{
 7412    public long Id { get; set; }
 13
 10314    public int StudioOrderId { get; set; }
 15
 16    /// <summary>Заполнено, пока строка активна; уникальный индекс по нему защищает от дублей.</summary>
 2517    public int? ActiveStudioOrderId { get; set; }
 3518    public Order? StudioOrder { get; set; }
 19
 20    /// <summary>article_id — идентификатор товара во внутренней системе поставщика.</summary>
 13021    [Required, MaxLength(40)] public string ArticleId { get; set; } = string.Empty;
 22
 23    /// <summary>warehouse_id — идентификатор склада поставщика.</summary>
 12124    [Required, MaxLength(40)] public string WarehouseId { get; set; } = string.Empty;
 25
 26    /// <summary>product_code — GUID номенклатуры 1С. Обязателен для POST /cart/add.</summary>
 3627    [MaxLength(120)] public string? ProductCode { get; set; }
 28
 15329    [Required, MaxLength(60)] public string Article { get; set; } = string.Empty;
 14530    [Required, MaxLength(100)] public string Brand { get; set; } = string.Empty;
 2131    [MaxLength(200)] public string? ProductName { get; set; }
 3032    [MaxLength(160)] public string? WarehouseName { get; set; }
 33
 34    /// <summary>Торговая точка доставки: код из GET /cart/params.</summary>
 4535    [MaxLength(120)] public string? PointCode { get; set; }
 2536    [MaxLength(300)] public string? PointName { get; set; }
 37
 6438    public decimal Quantity { get; set; }
 39
 40    /// <summary>Кратность заказа со стороны поставщика.</summary>
 1041    public int Multi { get; set; }
 42
 4443    public decimal? SourcePrice { get; set; }
 9544    [MaxLength(8)] public string CurrencyCode { get; set; } = "RUB";
 345    public DateTime? DeliveryAtUtc { get; set; }
 46
 20947    [Required, MaxLength(30)] public string Status { get; set; } = ProfitLigaCartItemStatus.Pending;
 48
 449    public string? TestResultJson { get; set; }
 3250    [MaxLength(1000)] public string? LastError { get; set; }
 4551    public DateTime? TestedAtUtc { get; set; }
 52
 853    [MaxLength(450)] public string? CreatedBy { get; set; }
 7054    public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow;
 8255    public DateTime UpdatedAtUtc { get; set; } = DateTime.UtcNow;
 56}
 57
 58public static class ProfitLigaCartItemStatus
 59{
 60    public const string Pending = "Pending";
 61    public const string Ready = "Ready";
 62    public const string Processing = "Processing";
 63    public const string Ordered = "Ordered";
 64    public const string Failed = "Failed";
 65    public const string Removed = "Removed";
 66    public static readonly string[] Active = [Pending, Ready, Processing, Failed];
 67}