- Install CsvHelper 33.1.0 and Microsoft.Graph 5.74.0 (main + test projects) - Add 14 core model/enum files (BulkOperationResult, BulkMemberRow, BulkSiteRow, TransferJob, FolderStructureRow, SiteTemplate, SiteTemplateOptions, TemplateLibraryInfo, TemplateFolderInfo, TemplatePermissionGroup, ConflictPolicy, TransferMode, CsvValidationRow) - Add 6 service interfaces (IFileTransferService, IBulkMemberService, IBulkSiteService, ITemplateService, IFolderStructureService, ICsvValidationService) - Add BulkOperationRunner with continue-on-error and cancellation support - Add BulkResultCsvExportService stub (compile-ready) - Add test scaffolds: BulkOperationRunnerTests (5 passing), BulkResultCsvExportServiceTests (2 passing), CsvValidationServiceTests (6 skipped), TemplateRepositoryTests (4 skipped)
36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
namespace SharepointToolbox.Core.Models;
|
|
|
|
public class BulkItemResult<T>
|
|
{
|
|
public T Item { get; }
|
|
public bool IsSuccess { get; }
|
|
public string? ErrorMessage { get; }
|
|
public DateTime Timestamp { get; }
|
|
|
|
private BulkItemResult(T item, bool success, string? error)
|
|
{
|
|
Item = item;
|
|
IsSuccess = success;
|
|
ErrorMessage = error;
|
|
Timestamp = DateTime.UtcNow;
|
|
}
|
|
|
|
public static BulkItemResult<T> Success(T item) => new(item, true, null);
|
|
public static BulkItemResult<T> Failed(T item, string error) => new(item, false, error);
|
|
}
|
|
|
|
public class BulkOperationSummary<T>
|
|
{
|
|
public IReadOnlyList<BulkItemResult<T>> Results { get; }
|
|
public int TotalCount => Results.Count;
|
|
public int SuccessCount => Results.Count(r => r.IsSuccess);
|
|
public int FailedCount => Results.Count(r => !r.IsSuccess);
|
|
public bool HasFailures => FailedCount > 0;
|
|
public IReadOnlyList<BulkItemResult<T>> FailedItems => Results.Where(r => !r.IsSuccess).ToList();
|
|
|
|
public BulkOperationSummary(IReadOnlyList<BulkItemResult<T>> results)
|
|
{
|
|
Results = results;
|
|
}
|
|
}
|