Phase 20F Fixed build project
This commit is contained in:
parent
16ea855a3e
commit
6cd452018c
@ -247,7 +247,7 @@ public sealed class OnboardingService(
|
|||||||
|
|
||||||
await PublishBuildProgress(userId, preview.PreviewID, "Creating characters...", 60, progress);
|
await PublishBuildProgress(userId, preview.PreviewID, "Creating characters...", 60, progress);
|
||||||
var result = await builds.BuildAsync(userId, request)
|
var result = await builds.BuildAsync(userId, request)
|
||||||
?? throw new InvalidOperationException("The project structure could not be built. Check the review choices and try again.");
|
?? throw new InvalidOperationException($"The project structure could not be built. Approved chapters: {request.Chapters.Count}, scenes: {request.Scenes.Count}, characters: {request.Characters.Count}. Return to review, save your selections, and try Build Project again.");
|
||||||
await scanPreviews.SaveBuildResultAsync(userId, result);
|
await scanPreviews.SaveBuildResultAsync(userId, result);
|
||||||
await PublishBuildProgress(userId, preview.PreviewID, "Finalising project...", 90, progress);
|
await PublishBuildProgress(userId, preview.PreviewID, "Finalising project...", 90, progress);
|
||||||
await PublishBuildProgress(userId, preview.PreviewID, result.Message, 100, progress, result);
|
await PublishBuildProgress(userId, preview.PreviewID, result.Message, 100, progress, result);
|
||||||
@ -415,6 +415,15 @@ public sealed class OnboardingService(
|
|||||||
var previewChapters = preview.Chapters.ToDictionary(chapter => chapter.TemporaryChapterKey, StringComparer.Ordinal);
|
var previewChapters = preview.Chapters.ToDictionary(chapter => chapter.TemporaryChapterKey, StringComparer.Ordinal);
|
||||||
var previewScenes = preview.Scenes.ToDictionary(scene => scene.TemporarySceneKey, StringComparer.Ordinal);
|
var previewScenes = preview.Scenes.ToDictionary(scene => scene.TemporarySceneKey, StringComparer.Ordinal);
|
||||||
var includedChapterKeys = review.Chapters.Where(chapter => chapter.Include).Select(chapter => chapter.TemporaryChapterKey).ToHashSet(StringComparer.Ordinal);
|
var includedChapterKeys = review.Chapters.Where(chapter => chapter.Include).Select(chapter => chapter.TemporaryChapterKey).ToHashSet(StringComparer.Ordinal);
|
||||||
|
if (includedChapterKeys.Count == 0)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Choose at least one chapter before continuing.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!review.Scenes.Any(scene => scene.Include && includedChapterKeys.Contains(scene.TemporaryChapterKey)))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Choose at least one scene before continuing.");
|
||||||
|
}
|
||||||
|
|
||||||
if (review.Chapters.Where(chapter => chapter.Include).Any(chapter => string.IsNullOrWhiteSpace(chapter.Title)))
|
if (review.Chapters.Where(chapter => chapter.Include).Any(chapter => string.IsNullOrWhiteSpace(chapter.Title)))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -85,8 +85,8 @@
|
|||||||
<input type="hidden" name="Chapters[@chapterIndex].TemporaryChapterKey" value="@chapter.TemporaryChapterKey" />
|
<input type="hidden" name="Chapters[@chapterIndex].TemporaryChapterKey" value="@chapter.TemporaryChapterKey" />
|
||||||
<input type="hidden" name="Chapters[@chapterIndex].ChapterNumber" value="@chapter.ChapterNumber" />
|
<input type="hidden" name="Chapters[@chapterIndex].ChapterNumber" value="@chapter.ChapterNumber" />
|
||||||
<label class="onboarding-review-toggle">
|
<label class="onboarding-review-toggle">
|
||||||
<input type="hidden" name="Chapters[@chapterIndex].Include" value="false" />
|
|
||||||
<input type="checkbox" name="Chapters[@chapterIndex].Include" value="true" checked="@chapter.Include" data-review-kind="chapter" />
|
<input type="checkbox" name="Chapters[@chapterIndex].Include" value="true" checked="@chapter.Include" data-review-kind="chapter" />
|
||||||
|
<input type="hidden" name="Chapters[@chapterIndex].Include" value="false" />
|
||||||
Include chapter
|
Include chapter
|
||||||
</label>
|
</label>
|
||||||
<label class="onboarding-review-field">
|
<label class="onboarding-review-field">
|
||||||
@ -104,8 +104,8 @@
|
|||||||
<input type="hidden" name="Scenes[@sceneIndex].TemporaryChapterKey" value="@scene.TemporaryChapterKey" />
|
<input type="hidden" name="Scenes[@sceneIndex].TemporaryChapterKey" value="@scene.TemporaryChapterKey" />
|
||||||
<input type="hidden" name="Scenes[@sceneIndex].SceneNumberWithinChapter" value="@scene.SceneNumberWithinChapter" />
|
<input type="hidden" name="Scenes[@sceneIndex].SceneNumberWithinChapter" value="@scene.SceneNumberWithinChapter" />
|
||||||
<label class="onboarding-review-toggle">
|
<label class="onboarding-review-toggle">
|
||||||
<input type="hidden" name="Scenes[@sceneIndex].Include" value="false" />
|
|
||||||
<input type="checkbox" name="Scenes[@sceneIndex].Include" value="true" checked="@scene.Include" data-review-kind="scene" />
|
<input type="checkbox" name="Scenes[@sceneIndex].Include" value="true" checked="@scene.Include" data-review-kind="scene" />
|
||||||
|
<input type="hidden" name="Scenes[@sceneIndex].Include" value="false" />
|
||||||
Include scene
|
Include scene
|
||||||
</label>
|
</label>
|
||||||
<label class="onboarding-review-field">
|
<label class="onboarding-review-field">
|
||||||
@ -116,8 +116,8 @@
|
|||||||
@if (scene.WordCount == 0)
|
@if (scene.WordCount == 0)
|
||||||
{
|
{
|
||||||
<label class="onboarding-review-toggle">
|
<label class="onboarding-review-toggle">
|
||||||
<input type="hidden" name="Scenes[@sceneIndex].AllowZeroWords" value="false" />
|
|
||||||
<input type="checkbox" name="Scenes[@sceneIndex].AllowZeroWords" value="true" />
|
<input type="checkbox" name="Scenes[@sceneIndex].AllowZeroWords" value="true" />
|
||||||
|
<input type="hidden" name="Scenes[@sceneIndex].AllowZeroWords" value="false" />
|
||||||
Allow empty scene
|
Allow empty scene
|
||||||
</label>
|
</label>
|
||||||
}
|
}
|
||||||
@ -172,8 +172,8 @@
|
|||||||
<input type="hidden" name="Characters[@characterIndex].TemporaryCharacterKey" value="@candidate.TemporaryCharacterKey" />
|
<input type="hidden" name="Characters[@characterIndex].TemporaryCharacterKey" value="@candidate.TemporaryCharacterKey" />
|
||||||
<input type="hidden" name="Characters[@characterIndex].Category" value="@candidate.Category" />
|
<input type="hidden" name="Characters[@characterIndex].Category" value="@candidate.Category" />
|
||||||
<label class="onboarding-review-toggle">
|
<label class="onboarding-review-toggle">
|
||||||
<input type="hidden" name="Characters[@characterIndex].Include" value="false" />
|
|
||||||
<input type="checkbox" name="Characters[@characterIndex].Include" value="true" checked="@candidate.Include" />
|
<input type="checkbox" name="Characters[@characterIndex].Include" value="true" checked="@candidate.Include" />
|
||||||
|
<input type="hidden" name="Characters[@characterIndex].Include" value="false" />
|
||||||
Include
|
Include
|
||||||
</label>
|
</label>
|
||||||
<label class="onboarding-review-field">
|
<label class="onboarding-review-field">
|
||||||
@ -218,8 +218,8 @@
|
|||||||
<input type="hidden" name="Characters[@characterIndex].TemporaryCharacterKey" value="@candidate.TemporaryCharacterKey" />
|
<input type="hidden" name="Characters[@characterIndex].TemporaryCharacterKey" value="@candidate.TemporaryCharacterKey" />
|
||||||
<input type="hidden" name="Characters[@characterIndex].Category" value="@candidate.Category" />
|
<input type="hidden" name="Characters[@characterIndex].Category" value="@candidate.Category" />
|
||||||
<label class="onboarding-review-toggle">
|
<label class="onboarding-review-toggle">
|
||||||
<input type="hidden" name="Characters[@characterIndex].Include" value="false" />
|
|
||||||
<input type="checkbox" name="Characters[@characterIndex].Include" value="true" checked="@candidate.Include" />
|
<input type="checkbox" name="Characters[@characterIndex].Include" value="true" checked="@candidate.Include" />
|
||||||
|
<input type="hidden" name="Characters[@characterIndex].Include" value="false" />
|
||||||
Include
|
Include
|
||||||
</label>
|
</label>
|
||||||
<label class="onboarding-review-field">
|
<label class="onboarding-review-field">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user