using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;

namespace Elwig.Models.Entities {
    [Table("payment_delivery_part"), PrimaryKey("Year", "DId", "DPNr", "AvNr")]
    public class PaymentDeliveryPart {
        [Column("year")]
        public int Year { get; set; }

        [Column("did")]
        public int DId { get; set; }

        [Column("dpnr")]
        public int DPNr { get; set; }

        [Column("avnr")]
        public int AvNr { get; set; }

        [Column("net_amount")]
        public long NetAmountValue { get; set; }
        [NotMapped]
        public decimal NetAmount {
            get => Variant.Season.DecFromDb(NetAmountValue);
            set => NetAmountValue = Variant.Season.DecToDb(value);
        }

        [Column("mod_abs")]
        public long ModAbsValue { get; set; }
        [NotMapped]
        public decimal ModAbs {
            get => Variant.Season.DecFromDb(ModAbsValue);
            set => ModAbsValue = Variant.Season.DecToDb(value);
        }

        [Column("mod_rel")]
        public double ModRelValue { get; set; }
        [NotMapped]
        public decimal ModRel {
            get => (decimal)ModRelValue;
            set => ModRelValue = (double)value;
        }

        [Column("amount")]
        public long AmountValue { get; private set; }
        [NotMapped]
        public decimal Amount => Variant.Season.DecFromDb(AmountValue);

        [ForeignKey("Year, AvNr")]
        public virtual PaymentVar Variant { get; private set; } = null!;

        [ForeignKey("Year, DId, DPNr")]
        public virtual DeliveryPart DeliveryPart { get; private set; } = null!;
    }
}
