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

namespace Elwig.Models {
    [Table("modifier"), PrimaryKey("Year", "ModId")]
    public class Modifier {
        [Column("year")]
        public int Year { get; set; }

        [Column("modid")]
        public string ModId { get; set; }

        [Column("name")]
        public string Name { get; set; }

        [Column("abs")]
        public long? AbsValue { get; set; }

        [NotMapped]
        public decimal? Abs {
            get {
                return AbsValue != null ? Season.DecFromDb((long)AbsValue) : null;
            }
            set {
                AbsValue = value != null ? Season.DecToDb((decimal)value) : null;
            }
        }

        [Column("rel")]
        public double? Rel { get; set; }

        [Column("standard")]
        public bool IsStandard { get; set; }

        [Column("quick_select")]
        public bool IsQuickSelect { get; set; }

        [ForeignKey("Year")]
        public virtual Season Season { get; private set; }

        public string ValueStr => (Abs != null) ?
            $"{(Abs < 0 ? " -" : "+")}{Math.Abs(Abs.Value)} {Season.Currency.Symbol}/kg" :
            $"{(Rel < 0 ? " -" : "+")}{Math.Abs(Rel.Value):P2}";

        public override string ToString() {
            return Name;
        }
    }
}