PlotDirector/PlotLine/ViewModels/IllustrationLibraryViewModels.cs

70 lines
2.5 KiB
C#

using PlotLine.Models;
namespace PlotLine.ViewModels;
public sealed class IllustrationLibraryAdminViewModel
{
public IllustrationLibraryFilter Filter { get; init; } = new();
public IllustrationLibrarySummary Summary { get; init; } = new();
public IReadOnlyList<IllustrationLibraryItem> Items { get; init; } = [];
public IReadOnlyList<string> Categories { get; init; } = IllustrationLibraryCategories.All;
public IReadOnlyList<string> Statuses { get; init; } =
[
IllustrationLibraryStatuses.Planned,
IllustrationLibraryStatuses.Queued,
IllustrationLibraryStatuses.Generating,
IllustrationLibraryStatuses.Generated,
IllustrationLibraryStatuses.Approved,
IllustrationLibraryStatuses.Rejected,
IllustrationLibraryStatuses.Failed,
IllustrationLibraryStatuses.Superseded,
IllustrationLibraryStatuses.Disabled
];
public int StarterCharacterCount { get; init; }
public int StarterLocationCount { get; init; }
public int StarterAssetCount { get; init; }
public IllustrationStarterGenerationPlan StarterGenerationPlan { get; init; } = new(0, 0, 0);
public string StoragePathHint { get; init; } = "/uploads/story-intelligence-library";
public string ProviderStatus { get; init; } = string.Empty;
public int CompletedTotal => Summary.GeneratedCount + Summary.ApprovedCount + Summary.FailedCount + Summary.SupersededCount;
}
public sealed class IllustrationLibraryQueueForm
{
public bool Confirmed { get; set; }
public string? Category { get; set; }
public string? Status { get; set; }
public string? Search { get; set; }
}
public sealed class IllustrationLibraryBulkRetryForm
{
public string? Category { get; set; }
public string? Status { get; set; }
public string? Search { get; set; }
}
public sealed class IllustrationStarterGenerationForm
{
public bool Confirmed { get; set; }
}
public sealed class IllustrationLibraryRejectForm
{
public string? Reason { get; set; }
public string? Category { get; set; }
public string? Status { get; set; }
public string? Search { get; set; }
}
public sealed class IllustrationLibraryMetadataForm
{
public string? DisplayTitle { get; set; }
public string? ShortDescription { get; set; }
public string? MetadataJson { get; set; }
public string? AdminNotes { get; set; }
public string? Category { get; set; }
public string? Status { get; set; }
public string? Search { get; set; }
}