using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace Elwig.Models.Entities { [Table("payment_variant"), PrimaryKey("Year", "AvNr")] public class PaymentVar { [Column("year")] public int Year { get; set; } [Column("avnr")] public int AvNr { get; set; } [Column("name")] public required string Name { get; set; } [Column("date")] public required string DateString { get; set; } [NotMapped] public DateOnly Date { get => DateOnly.ParseExact(DateString, "yyyy-MM-dd"); set => DateString = value.ToString("yyyy-MM-dd"); } [Column("transfer_date")] public string? TransferDateString { get; set; } [NotMapped] public DateOnly? TransferDate { get => TransferDateString != null ? DateOnly.ParseExact(TransferDateString, "yyyy-MM-dd") : null; set => TransferDateString = value?.ToString("yyyy-MM-dd"); } [Column("test_variant")] public bool TestVariant { get; set; } [Column("calc_time")] public long? CalcTimeUnix { get; set; } [NotMapped] public DateTime? CalcTime => CalcTimeUnix != null ? DateTimeOffset.FromUnixTimeSeconds(CalcTimeUnix.Value).LocalDateTime : null; [Column("comment")] public string? Comment { get; set; } [Column("data")] public required string Data { get; set; } [Column("ctime"), DatabaseGenerated(DatabaseGeneratedOption.Computed)] public long CTime { get; private set; } [NotMapped] public DateTime CreatedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime; [Column("mtime"), DatabaseGenerated(DatabaseGeneratedOption.Computed)] public long MTime { get; private set; } [NotMapped] public DateTime ModifiedTimestamp => DateTimeOffset.FromUnixTimeSeconds(MTime).LocalDateTime; [ForeignKey("Year")] public virtual Season Season { get; private set; } = null!; [InverseProperty(nameof(PaymentMember.Variant))] public virtual ICollection MemberPayments { get; private set; } = null!; [InverseProperty(nameof(PaymentDeliveryPart.Variant))] public virtual ICollection DeliveryPartPayments { get; private set; } = null!; [InverseProperty(nameof(Credit.Variant))] public virtual ICollection Credits { get; private set; } = null!; } }