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

namespace Elwig.Models.Entities {
    [Table("wine_variety"), PrimaryKey("SortId")]
    public class WineVar {
        [Column("sortid")]
        public string SortId { get; private set; } = null!;

        [Column("type")]
        public string Type { get; private set; } = null!;

        [Column("max_qualid")]
        public string MaxQualId { get; private set; } = null!;

        [ForeignKey("MaxQualId")]
        public virtual WineQualLevel MaxQualityLevel { get; private set; } = null!;

        [Column("name")]
        public string Name { get; private set; } = null!;

        [Column("comment")]
        public string? Comment { get; private set; }

        public string SortIdFormat => IsQuw ? SortId : $"({SortId})";
        public string CommentFormat => (Comment != null) ? $" ({Comment})" : "";

        public bool IsRed => Type == "R";
        public bool IsWhite => Type == "W";
        public bool IsQuw => MaxQualId == "QUW";
        public Brush? Color => IsWhite ? Brushes.DarkGreen : IsRed ? Brushes.DarkRed : null;

        public WineVar() { }

        public WineVar(string sortId, string name) {
            SortId = sortId;
            Name = name;
            MaxQualId = "QUW";
        }

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