92 lines
3.3 KiB
C#
92 lines
3.3 KiB
C#
using Elwig.Models.Entities;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Elwig.Helpers.Billing {
|
|
|
|
public record struct RawQualVaribute {
|
|
public string QualId;
|
|
public string? SortId;
|
|
public string? AttrId;
|
|
public string? CultId;
|
|
|
|
public RawQualVaribute(string qualid, string? sortid, string? attrid, string? cultid) {
|
|
QualId = qualid;
|
|
SortId = sortid;
|
|
AttrId = attrid;
|
|
CultId = cultid;
|
|
}
|
|
}
|
|
|
|
public record struct RawVaribute : IComparable<RawVaribute> {
|
|
public string? SortId;
|
|
public string? AttrId;
|
|
public string? CultId;
|
|
|
|
public RawVaribute(string? sortid, string? attrid, string? cultid) {
|
|
SortId = sortid;
|
|
AttrId = attrid;
|
|
CultId = cultid;
|
|
}
|
|
|
|
public RawVaribute(string id) {
|
|
var p1 = id.Split('/')[0].Split('-')[0];
|
|
SortId = p1 == "" ? null : p1;
|
|
AttrId = id.Contains('/') ? id.Split('/')[1].Split('-')[0] : null;
|
|
CultId = id.Contains('-') ? id.Split('-')[1] : null;
|
|
}
|
|
|
|
public readonly override string ToString() {
|
|
return $"{SortId}" + (AttrId != null ? $"/{AttrId}" : "") + (CultId != null ? $"-{CultId}" : "");
|
|
}
|
|
|
|
public readonly int CompareTo(RawVaribute other) {
|
|
return $"{SortId}/{AttrId}-{CultId}".CompareTo($"{other.SortId}/{other.AttrId}-{other.CultId}");
|
|
}
|
|
}
|
|
|
|
[PrimaryKey("Listing")]
|
|
public class Varibute : IComparable<Varibute> {
|
|
|
|
public WineVar? Variety { get; }
|
|
public WineAttr? Attribute { get; }
|
|
public WineCult? Cultivation { get; }
|
|
public int? AssignedGraphId { get; set; }
|
|
public int? AssignedAbgewGraphId { get; set; }
|
|
|
|
public string Listing => $"{Variety?.SortId}" +
|
|
(Attribute != null ? $"/{Attribute.AttrId}" : "") +
|
|
(Cultivation != null ? $"-{Cultivation.CultId}" : "");
|
|
public string FullName => $"{Variety?.Name}" +
|
|
(Variety != null && Attribute != null ? " " : "") + $"{Attribute?.Name}" +
|
|
((Variety != null || Attribute != null) && Cultivation != null ? " " : "") + $"{Cultivation?.Name}";
|
|
|
|
public Varibute(RawVaribute raw) :
|
|
this(raw.SortId != null ? new WineVar(raw.SortId, raw.SortId) : null,
|
|
raw.AttrId != null ? new WineAttr() { AttrId = raw.AttrId, Name = raw.AttrId } : null,
|
|
raw.CultId != null ? new WineCult() { CultId = raw.CultId, Name = raw.CultId } : null) {
|
|
}
|
|
|
|
public Varibute(RawVaribute raw, Dictionary<string, WineVar> vars, Dictionary<string, WineAttr> attrs, Dictionary<string, WineCult> cults) :
|
|
this(raw.SortId != null && raw.SortId != "" ? vars[raw.SortId] : null,
|
|
raw.AttrId != null && raw.AttrId != "" ? attrs[raw.AttrId] : null,
|
|
raw.CultId != null && raw.CultId != "" ? cults[raw.CultId] : null) {
|
|
}
|
|
|
|
public Varibute(WineVar? var, WineAttr? attr, WineCult? cult) {
|
|
Variety = var;
|
|
Attribute = attr;
|
|
Cultivation = cult;
|
|
}
|
|
|
|
public override string ToString() {
|
|
return Listing;
|
|
}
|
|
|
|
public int CompareTo(Varibute? other) {
|
|
return Listing.CompareTo(other?.Listing);
|
|
}
|
|
}
|
|
}
|