Files
elwig/Elwig/Helpers/Billing/ContractSelection.cs

39 lines
1.2 KiB
C#

using Elwig.Models.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Elwig.Helpers.Billing {
public class ContractSelection : IComparable<ContractSelection> {
public WineVar? Variety { get; }
public WineAttr? Attribute { get; }
public string Listing => $"{Variety?.SortId}{Attribute?.AttrId}";
public ContractSelection(WineVar? var, WineAttr? attr) {
Variety = var;
Attribute = attr;
}
public static List<ContractSelection> 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);
}
}
}