using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

namespace Elwig.Models {
    [Table("area_commitment"), PrimaryKey("VNr")]
    public class AreaCom {
        [Column("vnr")]
        public int VNr { get; set; }

        [Column("area")]
        public int Area { get; set; }

        [Column("sortid")]
        public string SortId { get; set; }

        [Column("cultid")]
        public string CultId { get; set; }

        [ForeignKey("VNr")]
        public virtual Contract Contract { get; private set; }

        [ForeignKey("SortId")]
        public virtual WineVar WineVar { get; private set; }

        [ForeignKey("CultId")]
        public virtual WineCult WineCult { get; private set; }

        [InverseProperty("AreaCom")]
        public virtual ISet<AreaComParcel> Parcels { get; private set; }

        [InverseProperty("AreaCom")]
        public virtual ISet<AreaComAttr> AttributeEntries { get; private set; }

        [NotMapped]
        public IEnumerable<WineAttr> Attributes => AttributeEntries.Select(e => e.WineAttr);
    }
}