using Laservall.Solidworks.Extension; using Laservall.Solidworks.Model; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Laservall.Solidworks.Server { internal interface IBomDataProvider { Task LoadBomAsync(IProgress progress, CancellationToken ct); SaveResult SaveChanges(List changes); BomSettings GetSettings(); void SaveSettings(BomSettings settings); List GetFlatBomItems(List allItems); } internal sealed class BomLoadProgress { public int Processed { get; set; } public int Total { get; set; } public string CurrentName { get; set; } } internal sealed class BomLoadResult { public List Items { get; set; } public List DynamicKeys { get; set; } public BomSettings Settings { get; set; } } internal sealed class ChangeItem { public string DocPath { get; set; } public string Key { get; set; } public string Value { get; set; } } internal sealed class SaveResult { public bool Success { get; set; } public int SavedCount { get; set; } public string Error { get; set; } } }