[#34] Second step of not using Bio as Attribute
This commit is contained in:
@ -1,20 +1,81 @@
|
||||
using Elwig.Models.Entities;
|
||||
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}");
|
||||
}
|
||||
}
|
||||
|
||||
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?.AttrId}";
|
||||
public string FullName => $"{Variety?.Name}" + (Variety != null && Attribute != null ? " " : "") + $"{Attribute?.Name}";
|
||||
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(WineVar? var, WineAttr? attr) {
|
||||
public Varibute(RawVaribute raw) :
|
||||
this(raw.SortId != null ? new WineVar(raw.SortId, raw.SortId) : null,
|
||||
raw.AttrId != null ? new WineAttr(raw.AttrId, raw.AttrId) : null,
|
||||
raw.CultId != null ? new WineCult(raw.CultId, 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() {
|
||||
@ -23,6 +84,6 @@ namespace Elwig.Helpers.Billing {
|
||||
|
||||
public int CompareTo(Varibute? other) {
|
||||
return Listing.CompareTo(other?.Listing);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user