using Elwig.Models.Entities; using System; using System.Collections.Generic; using System.Linq; namespace Elwig.Helpers.Billing { public class ContractSelection : IComparable { public WineVar? Variety { get; } public WineAttr? Attribute { get; } public string Listing => $"{Variety?.SortId}{Attribute?.AttrId}"; public string FullName => $"{Variety?.Name}" + (Variety != null && Attribute != null ? " " : "") + $"{Attribute?.Name}"; public ContractSelection(WineVar? var, WineAttr? attr) { Variety = var; Attribute = attr; } public static List GetContractsForYear(AppDbContext context, int year) { return context.DeliveryParts .Where(p => p.Year == year) .Select(d => new ContractSelection(d.Variant, d.Attribute)) .Distinct() .ToList() .Union(context.WineVarieties.Select(v => new ContractSelection(v, null))) .DistinctBy(c => c.Listing) .Order() .ToList(); } public override string ToString() { return Listing; } public int CompareTo(ContractSelection? other) { return Listing.CompareTo(other?.Listing); } } }