diff --git a/PlotLine/Services/StoryIntelligenceAssetImportService.cs b/PlotLine/Services/StoryIntelligenceAssetImportService.cs index d086b7c..b6298eb 100644 --- a/PlotLine/Services/StoryIntelligenceAssetImportService.cs +++ b/PlotLine/Services/StoryIntelligenceAssetImportService.cs @@ -137,12 +137,12 @@ public sealed class StoryIntelligenceAssetImportService( var requestedName = Clean(choice.ImportName); var importName = string.IsNullOrWhiteSpace(requestedName) ? candidate.DisplayName : requestedName; - var forceCreateSeparate = string.Equals(choice.Action, StoryIntelligenceAssetImportActions.CreateSeparate, StringComparison.OrdinalIgnoreCase); - var matchedExistingId = forceCreateSeparate - ? null - : candidate.ExistingAssetID + var linkExisting = string.Equals(choice.Action, StoryIntelligenceAssetImportActions.LinkExisting, StringComparison.OrdinalIgnoreCase); + var matchedExistingId = linkExisting + ? candidate.ExistingAssetID ?? existingIndex.Find(importName)?.StoryAssetID - ?? existingIndex.Find(candidate.DisplayName)?.StoryAssetID; + ?? existingIndex.Find(candidate.DisplayName)?.StoryAssetID + : null; var assetId = matchedExistingId; if (!assetId.HasValue) diff --git a/PlotLine/Services/StoryIntelligenceCharacterImportService.cs b/PlotLine/Services/StoryIntelligenceCharacterImportService.cs index fb5fbc9..83818f4 100644 --- a/PlotLine/Services/StoryIntelligenceCharacterImportService.cs +++ b/PlotLine/Services/StoryIntelligenceCharacterImportService.cs @@ -142,12 +142,12 @@ public sealed class StoryIntelligenceCharacterImportService( var requestedName = Clean(choice.ImportName); var importName = string.IsNullOrWhiteSpace(requestedName) ? candidate.DisplayName : requestedName; - var forceCreateSeparate = string.Equals(choice.Action, StoryIntelligenceCharacterImportActions.CreateSeparate, StringComparison.OrdinalIgnoreCase); - var matchedExistingId = forceCreateSeparate - ? null - : candidate.ExistingCharacterID + var linkExisting = string.Equals(choice.Action, StoryIntelligenceCharacterImportActions.LinkExisting, StringComparison.OrdinalIgnoreCase); + var matchedExistingId = linkExisting + ? candidate.ExistingCharacterID ?? existingIndex.Find(importName)?.CharacterID - ?? existingIndex.Find(candidate.DisplayName)?.CharacterID; + ?? existingIndex.Find(candidate.DisplayName)?.CharacterID + : null; var characterId = matchedExistingId; if (!characterId.HasValue) diff --git a/PlotLine/Services/StoryIntelligenceLocationImportService.cs b/PlotLine/Services/StoryIntelligenceLocationImportService.cs index d5777a0..a174e13 100644 --- a/PlotLine/Services/StoryIntelligenceLocationImportService.cs +++ b/PlotLine/Services/StoryIntelligenceLocationImportService.cs @@ -132,12 +132,12 @@ public sealed class StoryIntelligenceLocationImportService( var requestedName = Clean(choice.ImportName); var importName = string.IsNullOrWhiteSpace(requestedName) ? candidate.DisplayName : requestedName; - var forceCreateSeparate = string.Equals(choice.Action, StoryIntelligenceLocationImportActions.CreateSeparate, StringComparison.OrdinalIgnoreCase); - var matchedExistingId = forceCreateSeparate - ? null - : candidate.ExistingLocationID + var linkExisting = string.Equals(choice.Action, StoryIntelligenceLocationImportActions.LinkExisting, StringComparison.OrdinalIgnoreCase); + var matchedExistingId = linkExisting + ? candidate.ExistingLocationID ?? existingIndex.Find(importName)?.LocationID - ?? existingIndex.Find(candidate.DisplayName)?.LocationID; + ?? existingIndex.Find(candidate.DisplayName)?.LocationID + : null; var locationId = matchedExistingId; if (!locationId.HasValue) diff --git a/PlotLine/ViewModels/OnboardingViewModels.cs b/PlotLine/ViewModels/OnboardingViewModels.cs index 6d9b037..38a784c 100644 --- a/PlotLine/ViewModels/OnboardingViewModels.cs +++ b/PlotLine/ViewModels/OnboardingViewModels.cs @@ -212,16 +212,16 @@ public sealed class StoryIntelligenceCharacterImportForm public sealed class StoryIntelligenceCharacterImportChoiceForm { public string Key { get; set; } = string.Empty; - public string Action { get; set; } = StoryIntelligenceCharacterImportActions.Approve; + public string Action { get; set; } = StoryIntelligenceCharacterImportActions.CreateNew; public string? ImportName { get; set; } public string? AliasTargetKey { get; set; } } public static class StoryIntelligenceCharacterImportActions { - public const string Approve = "Approve"; + public const string CreateNew = "CreateNew"; + public const string LinkExisting = "LinkExisting"; public const string Ignore = "Ignore"; - public const string CreateSeparate = "CreateSeparate"; public const string Alias = "Alias"; } @@ -260,16 +260,16 @@ public sealed class StoryIntelligenceLocationImportForm public sealed class StoryIntelligenceLocationImportChoiceForm { public string Key { get; set; } = string.Empty; - public string Action { get; set; } = StoryIntelligenceLocationImportActions.Approve; + public string Action { get; set; } = StoryIntelligenceLocationImportActions.CreateNew; public string? ImportName { get; set; } public string? AliasTargetKey { get; set; } } public static class StoryIntelligenceLocationImportActions { - public const string Approve = "Approve"; + public const string CreateNew = "CreateNew"; + public const string LinkExisting = "LinkExisting"; public const string Ignore = "Ignore"; - public const string CreateSeparate = "CreateSeparate"; public const string Alias = "Alias"; } @@ -309,16 +309,16 @@ public sealed class StoryIntelligenceAssetImportForm public sealed class StoryIntelligenceAssetImportChoiceForm { public string Key { get; set; } = string.Empty; - public string Action { get; set; } = StoryIntelligenceAssetImportActions.Approve; + public string Action { get; set; } = StoryIntelligenceAssetImportActions.CreateNew; public string? ImportName { get; set; } public string? AliasTargetKey { get; set; } } public static class StoryIntelligenceAssetImportActions { - public const string Approve = "Approve"; + public const string CreateNew = "CreateNew"; + public const string LinkExisting = "LinkExisting"; public const string Ignore = "Ignore"; - public const string CreateSeparate = "CreateSeparate"; public const string Alias = "Alias"; } diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml index 0a4eb12..ed52d1b 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceAssetComplete.cshtml @@ -5,7 +5,7 @@
- +

Build Story Database

diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml index cb7232a..9071603 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml @@ -47,9 +47,9 @@ else {
- - - + + +
@@ -62,7 +62,6 @@ var candidate = Model.AssetReview.Candidates[i];
- @candidate.AssetName @candidate.Category · @candidate.AppearsInScenes.ToString("N0") scene@(candidate.AppearsInScenes == 1 ? string.Empty : "s") @@ -106,19 +105,16 @@
Decision + - @if (candidate.IsExistingMatch) - { - - }