153 lines
5.1 KiB
Transact-SQL
153 lines
5.1 KiB
Transact-SQL
SET ANSI_NULLS ON;
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.ContinuityWarningAcknowledgements', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.ContinuityWarningAcknowledgements
|
|
(
|
|
ContinuityWarningAcknowledgementID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_ContinuityWarningAcknowledgements PRIMARY KEY,
|
|
ProjectID int NOT NULL,
|
|
WarningType nvarchar(100) NOT NULL,
|
|
SceneID int NULL,
|
|
CharacterID int NULL,
|
|
AssetID int NULL,
|
|
AcknowledgedDate datetime2 NOT NULL CONSTRAINT DF_ContinuityWarningAcknowledgements_AcknowledgedDate DEFAULT SYSUTCDATETIME(),
|
|
AcknowledgedByUserID int NULL,
|
|
Notes nvarchar(500) NULL,
|
|
SceneIDKey AS ISNULL(SceneID, 0) PERSISTED,
|
|
CharacterIDKey AS ISNULL(CharacterID, 0) PERSISTED,
|
|
AssetIDKey AS ISNULL(AssetID, 0) PERSISTED,
|
|
CONSTRAINT FK_ContinuityWarningAcknowledgements_Projects FOREIGN KEY (ProjectID) REFERENCES dbo.Projects(ProjectID),
|
|
CONSTRAINT FK_ContinuityWarningAcknowledgements_Scenes FOREIGN KEY (SceneID) REFERENCES dbo.Scenes(SceneID),
|
|
CONSTRAINT FK_ContinuityWarningAcknowledgements_Characters FOREIGN KEY (CharacterID) REFERENCES dbo.Characters(CharacterID),
|
|
CONSTRAINT FK_ContinuityWarningAcknowledgements_Assets FOREIGN KEY (AssetID) REFERENCES dbo.StoryAssets(StoryAssetID),
|
|
CONSTRAINT FK_ContinuityWarningAcknowledgements_AppUser FOREIGN KEY (AcknowledgedByUserID) REFERENCES dbo.AppUser(UserID)
|
|
);
|
|
END;
|
|
GO
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'UX_ContinuityWarningAcknowledgements_Identity' AND object_id = OBJECT_ID(N'dbo.ContinuityWarningAcknowledgements'))
|
|
BEGIN
|
|
CREATE UNIQUE INDEX UX_ContinuityWarningAcknowledgements_Identity
|
|
ON dbo.ContinuityWarningAcknowledgements(ProjectID, WarningType, SceneIDKey, CharacterIDKey, AssetIDKey);
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.ContinuityWarningAcknowledgement_ListByProject
|
|
@ProjectID int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT ContinuityWarningAcknowledgementID,
|
|
ProjectID,
|
|
WarningType,
|
|
SceneID,
|
|
CharacterID,
|
|
AssetID,
|
|
AcknowledgedDate,
|
|
AcknowledgedByUserID,
|
|
Notes
|
|
FROM dbo.ContinuityWarningAcknowledgements
|
|
WHERE ProjectID = @ProjectID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.ContinuityWarningAcknowledgement_Get
|
|
@ProjectID int,
|
|
@WarningType nvarchar(100),
|
|
@SceneID int = NULL,
|
|
@CharacterID int = NULL,
|
|
@AssetID int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT ContinuityWarningAcknowledgementID,
|
|
ProjectID,
|
|
WarningType,
|
|
SceneID,
|
|
CharacterID,
|
|
AssetID,
|
|
AcknowledgedDate,
|
|
AcknowledgedByUserID,
|
|
Notes
|
|
FROM dbo.ContinuityWarningAcknowledgements
|
|
WHERE ProjectID = @ProjectID
|
|
AND WarningType = @WarningType
|
|
AND ISNULL(SceneID, 0) = ISNULL(@SceneID, 0)
|
|
AND ISNULL(CharacterID, 0) = ISNULL(@CharacterID, 0)
|
|
AND ISNULL(AssetID, 0) = ISNULL(@AssetID, 0);
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.ContinuityWarningAcknowledgement_Save
|
|
@ProjectID int,
|
|
@WarningType nvarchar(100),
|
|
@SceneID int = NULL,
|
|
@CharacterID int = NULL,
|
|
@AssetID int = NULL,
|
|
@AcknowledgedByUserID int = NULL,
|
|
@Notes nvarchar(500) = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @TrimmedWarningType nvarchar(100) = NULLIF(LTRIM(RTRIM(@WarningType)), N'');
|
|
DECLARE @TrimmedNotes nvarchar(500) = NULLIF(LTRIM(RTRIM(@Notes)), N'');
|
|
|
|
IF @ProjectID <= 0 OR @TrimmedWarningType IS NULL
|
|
RETURN;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.ContinuityWarningAcknowledgements
|
|
WHERE ProjectID = @ProjectID
|
|
AND WarningType = @TrimmedWarningType
|
|
AND ISNULL(SceneID, 0) = ISNULL(@SceneID, 0)
|
|
AND ISNULL(CharacterID, 0) = ISNULL(@CharacterID, 0)
|
|
AND ISNULL(AssetID, 0) = ISNULL(@AssetID, 0)
|
|
)
|
|
BEGIN
|
|
UPDATE dbo.ContinuityWarningAcknowledgements
|
|
SET AcknowledgedDate = SYSUTCDATETIME(),
|
|
AcknowledgedByUserID = @AcknowledgedByUserID,
|
|
Notes = @TrimmedNotes
|
|
WHERE ProjectID = @ProjectID
|
|
AND WarningType = @TrimmedWarningType
|
|
AND ISNULL(SceneID, 0) = ISNULL(@SceneID, 0)
|
|
AND ISNULL(CharacterID, 0) = ISNULL(@CharacterID, 0)
|
|
AND ISNULL(AssetID, 0) = ISNULL(@AssetID, 0);
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT dbo.ContinuityWarningAcknowledgements
|
|
(ProjectID, WarningType, SceneID, CharacterID, AssetID, AcknowledgedByUserID, Notes)
|
|
VALUES
|
|
(@ProjectID, @TrimmedWarningType, @SceneID, @CharacterID, @AssetID, @AcknowledgedByUserID, @TrimmedNotes);
|
|
END;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.ContinuityWarningAcknowledgement_Delete
|
|
@ProjectID int,
|
|
@WarningType nvarchar(100),
|
|
@SceneID int = NULL,
|
|
@CharacterID int = NULL,
|
|
@AssetID int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DELETE FROM dbo.ContinuityWarningAcknowledgements
|
|
WHERE ProjectID = @ProjectID
|
|
AND WarningType = @WarningType
|
|
AND ISNULL(SceneID, 0) = ISNULL(@SceneID, 0)
|
|
AND ISNULL(CharacterID, 0) = ISNULL(@CharacterID, 0)
|
|
AND ISNULL(AssetID, 0) = ISNULL(@AssetID, 0);
|
|
END;
|
|
GO
|