79 lines
2.2 KiB
Transact-SQL
79 lines
2.2 KiB
Transact-SQL
CREATE OR ALTER PROCEDURE dbo.WordCompanion_Runtime_SceneWordCount_Update
|
|
@UserID int,
|
|
@DocumentGuid uniqueidentifier,
|
|
@BookID int,
|
|
@ChapterID int,
|
|
@SceneID int,
|
|
@WordCount int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
IF @DocumentGuid IS NULL
|
|
OR @DocumentGuid = '00000000-0000-0000-0000-000000000000'
|
|
OR @BookID <= 0
|
|
OR @ChapterID <= 0
|
|
OR @SceneID <= 0
|
|
OR @WordCount < 0
|
|
RETURN;
|
|
|
|
DECLARE @ManuscriptDocumentID int;
|
|
|
|
SELECT @ManuscriptDocumentID = md.ManuscriptDocumentID
|
|
FROM dbo.ManuscriptDocuments md
|
|
INNER JOIN dbo.Books b ON b.BookID = md.BookID
|
|
INNER JOIN dbo.Projects p ON p.ProjectID = b.ProjectID
|
|
INNER JOIN dbo.ProjectUserAccess pua ON pua.ProjectID = p.ProjectID
|
|
WHERE md.DocumentGuid = @DocumentGuid
|
|
AND md.BookID = @BookID
|
|
AND md.IsActive = 1
|
|
AND b.IsArchived = 0
|
|
AND p.IsArchived = 0
|
|
AND pua.UserID = @UserID
|
|
AND pua.IsActive = 1;
|
|
|
|
IF @ManuscriptDocumentID IS NULL
|
|
RETURN;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.Scenes s
|
|
INNER JOIN dbo.Chapters c ON c.ChapterID = s.ChapterID
|
|
WHERE s.SceneID = @SceneID
|
|
AND s.ChapterID = @ChapterID
|
|
AND c.BookID = @BookID
|
|
AND s.IsArchived = 0
|
|
AND c.IsArchived = 0
|
|
AND s.IsLinkedToManuscript = 1
|
|
AND s.ManuscriptDocumentID = @ManuscriptDocumentID
|
|
)
|
|
RETURN;
|
|
|
|
DECLARE @LastWorkedOnDate date = CONVERT(date, SYSUTCDATETIME());
|
|
|
|
IF EXISTS (SELECT 1 FROM dbo.SceneWorkflow WHERE SceneID = @SceneID)
|
|
BEGIN
|
|
UPDATE dbo.SceneWorkflow
|
|
SET ActualWordCount = @WordCount,
|
|
LastWorkedOn = @LastWorkedOnDate,
|
|
UpdatedDate = SYSUTCDATETIME()
|
|
WHERE SceneID = @SceneID;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT dbo.SceneWorkflow (SceneID, ActualWordCount, LastWorkedOn)
|
|
VALUES (@SceneID, @WordCount, @LastWorkedOnDate);
|
|
END;
|
|
|
|
UPDATE dbo.ManuscriptDocuments
|
|
SET LastSyncUtc = SYSUTCDATETIME()
|
|
WHERE ManuscriptDocumentID = @ManuscriptDocumentID;
|
|
|
|
SELECT @SceneID AS SceneId,
|
|
@WordCount AS ActualWords,
|
|
@LastWorkedOnDate AS LastWorkedOn,
|
|
N'Word count synced.' AS Message;
|
|
END;
|
|
GO
|