using AyCode.Core.Serializers.Toons;
using AyCode.Entities;
using FruitBank.Common.Interfaces;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Core.Interfaces;

namespace FruitBank.Common.Entities;

public abstract class PartnerBase : MgEntityBase, IPartnerBase
{
    public string Name { get; set; }
    public string TaxId { get; set; }
    public string CertificationNumber { get; set; }

    public string CountryCode { get; set; }

    [ToonDescription(Purpose = "ISO 4217 currency code the company trades and settles in with this partner (e.g. EUR, HUF). For supplier partners it is the source currency for converting shipping-item values to example: HUF in NAV EKÁER reporting.")]
    public string Currency { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
    public string State { get; set; }
    public string County { get; set; }
    public string City { get; set; }
    public string Street { get; set; }

    [NotColumn, NotMapped, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
    [ToonDescription(Purpose = "The PostalCode + City + Street joined into a single-line postal address (non-empty parts).")]
    public string? FullAddress => this.ComposeFullAddress();


    [SkipValuesOnUpdate]
    public DateTime Created { get; set; }
    public DateTime Modified { get; set; }
}