XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using XFEEDToolBox.Core.Models;
using XFEEDToolBox.Core.Data;

namespace XFEEDToolBox.Core.Planning;

/// <summary>Empty optional fields never become exact empty-string filters.</summary>
public static class TradeSearchConstraints
{
    public static string[] ParseCommodityFilter(string? text)=>NormalizeCommodityFilter((text??"").Split([',',',',';',';','\r','\n'],StringSplitOptions.TrimEntries|StringSplitOptions.RemoveEmptyEntries));
    public static string[] NormalizeCommodityFilter(IEnumerable<string>? values)=>(values??[])
        .Select(CommodityCatalog.SelectionKey).Where(key=>!string.IsNullOrWhiteSpace(key)).Distinct(StringComparer.Ordinal).ToArray();
    private static bool Text(string? requested,string actual)=>string.IsNullOrWhiteSpace(requested)||actual.Equals(requested.Trim(),StringComparison.OrdinalIgnoreCase);
    public static bool SourceAllows(Station station,PlannerRequest request)
        =>(request.SourceMarketIdFilter is not {} id||station.MarketId==id)
            &&Text(request.SourceSystemFilter,station.SystemName)&&Text(request.SourceStationFilter,station.Name);
    public static bool DestinationAllows(Station station,PlannerRequest request)
        =>(request.DestinationMarketIdFilter is not {} id||station.MarketId==id)
            &&Text(request.DestinationSystemFilter,station.SystemName)&&Text(request.DestinationStationFilter,station.Name);
}