< Summary

Information
Class: OzonDomains.Models.BergCartItem
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/BergCartItem.cs
Line coverage
95%
Covered lines: 20
Uncovered lines: 1
Coverable lines: 21
Total lines: 64
Line coverage: 95.2%
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%210%
get_ResourceId()100%11100%
get_WarehouseId()100%11100%
get_Article()100%11100%
get_Brand()100%11100%
get_ProductName()100%11100%
get_WarehouseName()100%11100%
get_Quantity()100%11100%
get_Multi()100%11100%
get_SourcePrice()100%11100%
get_MaxPrice()100%11100%
get_CurrencyCode()100%11100%
get_DeliveryAtUtc()100%11100%
get_Status()100%11100%
get_LastError()100%11100%
get_CreatedBy()100%11100%
get_CreatedAtUtc()100%11100%
get_UpdatedAtUtc()100%11100%

File(s)

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

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3
 4namespace OzonDomains.Models;
 5
 6/// <summary>Локальная корзина Berg. У Berg нет API корзины — <c>ordering/place_order.json</c>
 7/// размещает заказ целиком одним вызовом, поэтому отобранные позиции копятся здесь и уходят
 8/// поставщику только в момент оформления.</summary>
 9[Table("BergCartItems")]
 10public sealed class BergCartItem
 11{
 1112    public long Id { get; set; }
 13
 1814    public int StudioOrderId { get; set; }
 15
 16    /// <summary>Заполнено, пока строка активна; уникальный индекс по нему защищает от дублей.</summary>
 2117    public int? ActiveStudioOrderId { get; set; }
 018    public Order? StudioOrder { get; set; }
 19
 20    /// <summary>resource_id — идентификатор карточки товара Berg.</summary>
 921    public long ResourceId { get; set; }
 22
 23    /// <summary>warehouse_id — склад предложения Berg.</summary>
 924    public long WarehouseId { get; set; }
 25
 2926    [Required, MaxLength(60)] public string Article { get; set; } = string.Empty;
 2927    [Required, MaxLength(100)] public string Brand { get; set; } = string.Empty;
 828    [MaxLength(200)] public string? ProductName { get; set; }
 829    [MaxLength(160)] public string? WarehouseName { get; set; }
 30
 831    public decimal Quantity { get; set; }
 32
 33    /// <summary>multiplication_factor — кратность отгрузки со стороны Berg.</summary>
 834    public int Multi { get; set; }
 35
 736    public decimal? SourcePrice { get; set; }
 37
 38    /// <summary>Цена из проценки, уходит в max_price: Berg отклонит строку, если цена выросла.</summary>
 839    public decimal? MaxPrice { get; set; }
 40
 2141    [MaxLength(8)] public string CurrencyCode { get; set; } = "RUB";
 42
 43    /// <summary>Дата отгрузки из address_timetable предложения — основа для dispatch_at.</summary>
 744    public DateTime? DeliveryAtUtc { get; set; }
 45
 3746    [Required, MaxLength(30)] public string Status { get; set; } = BergCartItemStatus.Pending;
 47
 348    [MaxLength(1000)] public string? LastError { get; set; }
 49
 750    [MaxLength(450)] public string? CreatedBy { get; set; }
 2151    public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow;
 3352    public DateTime UpdatedAtUtc { get; set; } = DateTime.UtcNow;
 53}
 54
 55public static class BergCartItemStatus
 56{
 57    public const string Pending = "Pending";
 58    public const string Ready = "Ready";
 59    public const string Processing = "Processing";
 60    public const string Ordered = "Ordered";
 61    public const string Failed = "Failed";
 62    public const string Removed = "Removed";
 63    public static readonly string[] Active = [Pending, Ready, Processing, Failed];
 64}