using Elwig.Helpers; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace Elwig.Models.Entities { [Table("season"), PrimaryKey("Year")] public class Season { [Column("year")] public int Year { get; set; } [Column("currency")] public string CurrencyCode { get; set; } [Column("precision")] public byte Precision { get; set; } [Column("max_kg_per_ha")] public int MaxKgPerHa { get; set; } [Column("vat_normal")] public double VatNormal { get; set; } [Column("vat_flatrate")] public double VatFlatrate { get; set; } [Column("min_kg_per_bs")] public int MinKgPerBusinessShare { get; set; } [Column("max_kg_per_bs")] public int MaxKgPerBusinessShare { get; set; } [Column("penalty_per_kg")] public long? PenaltyPerKgValue { get; set; } [NotMapped] public decimal? PenaltyPerKg { get => PenaltyPerKgValue != null ? DecFromDb(PenaltyPerKgValue.Value) : null; set => PenaltyPerKgValue = value != null ? DecToDb(value.Value) : null; } [Column("penalty_amount")] public long? PenaltyAmoutValue { get; set; } [NotMapped] public decimal? PenaltyAmount { get => PenaltyAmoutValue != null ? DecFromDb(PenaltyAmoutValue.Value) : null; set => PenaltyAmoutValue = value != null ? DecToDb(value.Value) : null; } [Column("penalty_none")] public long? PenaltyNoneValue { get; set; } [NotMapped] public decimal? PenaltyNone { get => PenaltyNoneValue != null ? DecFromDb(PenaltyNoneValue.Value) : null; set => PenaltyNoneValue = value != null ? DecToDb(value.Value) : null; } [Column("bs_value")] public long? BusinessShareValueValue { get; set; } [NotMapped] public decimal? BusinessShareValue { get => BusinessShareValueValue != null ? DecFromDb(BusinessShareValueValue.Value) : null; set => BusinessShareValueValue = value != null ? DecToDb(value.Value) : null; } [Column("start_date")] public string? StartDateString { get; set; } [NotMapped] public DateOnly? StartDate { get => StartDateString != null ? DateOnly.ParseExact(StartDateString, "yyyy-MM-dd") : null; set => StartDateString = value?.ToString("yyyy-MM-dd"); } [Column("end_date")] public string? EndDateString { get; set; } [NotMapped] public DateOnly? EndDate { get => EndDateString != null ? DateOnly.ParseExact(EndDateString, "yyyy-MM-dd") : null; set => EndDateString = value?.ToString("yyyy-MM-dd"); } [ForeignKey("CurrencyCode")] public virtual Currency Currency { get; private set; } [InverseProperty("Season")] public virtual ISet Modifiers { get; private set; } [InverseProperty("Season")] public virtual ISet PaymentVariants { get; private set; } [InverseProperty("Season")] public virtual ISet Deliveries { get; private set; } public decimal DecFromDb(long value) { return Utils.DecFromDb(value, Precision); } public long DecToDb(decimal value) { return Utils.DecToDb(value, Precision); } } }