using AyCode.Core.Interfaces;

namespace AyCode.Services.Nav.Ekaer.Models;

/// <summary>
/// KÉZZEL ÍRT partial-kiegészítés a generált <see cref="TradeCardItemType"/>-hoz — a generált fájlhoz NEM nyúlunk,
/// az xscgen-újrageneráláskor ez a fájl megmarad.
/// Az <see cref="IId{T}"/> implementáció grid-megjelenítéshez kell (IId&lt;int&gt;-megkötésű grid-bázisok
/// readonly DataSource-aként). EXPLICIT implementáció, mert a NAV-séma saját <c>Id</c>-t definiál, ami
/// <b>string</b> (<c>[XmlAttribute("id")]</c>, csak modify-kérésnél töltött) — a grid viszont int-et vár.
/// SZÁMÍTOTT érték: az <c>ItemExternalId</c>-ból jön (a mapper oda a <c>ShippingItem.Id</c>-t írja),
/// így betöltéskor nincs teendő. Az explicit tagot az XmlSerializer nem szerializálja — a NAV-wire érintetlen.
/// </summary>
public partial class TradeCardItemType : IId<int>
{
    int IId<int>.Id
    {
        get => int.TryParse(ItemExternalId, out var id) ? id : 0;
        set => ItemExternalId = value.ToString();
    }
}
