PlotDirector/PlotLine/Sql/158_Phase25C_OnboardingMarkerSaveStates.sql

110 lines
3.9 KiB
Transact-SQL

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_GetByPreview
@UserID int,
@PreviewID uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
DECLARE @BuildID int;
SELECT @BuildID = OnboardingManuscriptBuildID
FROM dbo.OnboardingManuscriptBuilds
WHERE PreviewID = @PreviewID
AND UserID = @UserID;
IF @BuildID IS NULL
RETURN;
SELECT OnboardingManuscriptBuildID AS BuildID, PreviewID, ProjectID, BookID, ManuscriptDocumentID, Status, MarkerStatus,
ChaptersCreated, ScenesCreated, CharactersCreated, CharactersReused, SceneAppearancesCreated,
CAST(1 AS bit) AS AlreadyBuilt,
CASE MarkerStatus
WHEN N'Completed' THEN N'This manuscript structure has already been built and saved.'
WHEN N'SaveNotRequired' THEN N'This manuscript structure has already been built; the expected Word markers were already present.'
WHEN N'UserConfirmedSave' THEN N'This manuscript structure has already been built and the Word save was confirmed.'
WHEN N'UserSaveRequired' THEN N'This manuscript structure has already been built. Save the Word document, then continue the import again.'
ELSE N'This manuscript structure has already been built into PlotDirector.'
END AS Message
FROM dbo.OnboardingManuscriptBuilds
WHERE OnboardingManuscriptBuildID = @BuildID;
SELECT TemporaryChapterKey, ChapterID
FROM dbo.OnboardingManuscriptBuildChapterMap
WHERE OnboardingManuscriptBuildID = @BuildID
ORDER BY TemporaryChapterKey;
SELECT TemporarySceneKey, SceneID
FROM dbo.OnboardingManuscriptBuildSceneMap
WHERE OnboardingManuscriptBuildID = @BuildID
ORDER BY TemporarySceneKey;
SELECT TemporaryCharacterKey, CharacterID, Created
FROM dbo.OnboardingManuscriptBuildCharacterMap
WHERE OnboardingManuscriptBuildID = @BuildID
ORDER BY TemporaryCharacterKey;
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncCompleted
@BuildID int,
@MarkerStatus nvarchar(40) = N'Completed',
@Message nvarchar(500) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @MarkerStatus NOT IN (N'Completed', N'SaveNotRequired', N'UserConfirmedSave')
SET @MarkerStatus = N'Completed';
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = @MarkerStatus,
MarkerSyncMessage = COALESCE(
LEFT(NULLIF(LTRIM(RTRIM(@Message)), N''), 500),
CASE @MarkerStatus
WHEN N'SaveNotRequired' THEN N'Scene markers already existed. No Word save was required.'
WHEN N'UserConfirmedSave' THEN N'Scene markers added; user confirmed the Word document was saved.'
ELSE N'Scene markers added and document saved.'
END),
MarkerSyncCompletedUtc = SYSUTCDATETIME(),
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID;
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncUserSaveRequired
@BuildID int,
@Message nvarchar(500) = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = N'UserSaveRequired',
MarkerSyncMessage = COALESCE(
LEFT(NULLIF(LTRIM(RTRIM(@Message)), N''), 500),
N'Scene markers have been added. Save the document in Word, then continue the import again.'),
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID;
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncFailed
@BuildID int,
@Message nvarchar(500) = NULL,
@Diagnostics nvarchar(max) = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = N'Failed',
MarkerSyncMessage = LEFT(NULLIF(LTRIM(RTRIM(@Message)), N''), 500),
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID;
END;
GO