using AyCode.Core.Serializers.Attributes;
using AyCode.Core.Serializers.Toons;
using AyCode.Interfaces.EntityComment;
using FruitBank.Common.Interfaces;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;

namespace FruitBank.Common.Entities;

[AcBinarySerializable(false, true, false, true, false, false)]
[ToonDescription("Shipping record with documents and measurement tracking", Purpose = "Represents a physical inbound delivery event (truck arrival) at the warehouse, tracking the vehicle and the overall measurement status of the shipment")]
[Table(Name = FruitBankConstClient.ShippingDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingDbTableName)]
public sealed class Shipping : MgEntityBase, IShipping, IEntityComment
{
    public DateTime ShippingDate { get; set; } = DateTime.Now;
    public string LicencePlate { get; set; }
    public bool IsAllMeasured { get; set; }
    public string? Comment { get; set; } = string.Empty;
    public string? CargoCompany { get; set; }

    public DateTime? MeasuredDate { get; set; }

    [Association(ThisKey = nameof(Id), OtherKey = nameof(ShippingDocument.ShippingId), CanBeNull = true)]
    public List<ShippingDocument>? ShippingDocuments { get; set; }


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