[#34] Second step of not using Bio as Attribute

This commit is contained in:
2024-02-20 16:36:12 +01:00
parent 049927f90c
commit c82e8de724
9 changed files with 140 additions and 77 deletions

View File

@ -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);
}
}
}
}