ServiceManager.Report.Compliance.ControlManagement.SP.GetCACountByStatus.Install (Resource)

Element properties:

TypeResource
File NameServiceManager.Report.GRC.ControlManagement.SP.GetCACountByStatus.Install.sql
AccessibilityPublic

Source Code:

<Resource ID="ServiceManager.Report.Compliance.ControlManagement.SP.GetCACountByStatus.Install" Accessibility="Public" FileName="ServiceManager.Report.GRC.ControlManagement.SP.GetCACountByStatus.Install.sql"/>

File Content: ServiceManager.Report.GRC.ControlManagement.SP.GetCACountByStatus.Install.sql

/****** Object:  StoredProcedure [dbo].[ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus]    Script Date: 02/25/2010 04:49:00 ******/

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus]
GO

/****** Object: StoredProcedure [dbo].[ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus] Script Date: 02/25/2010 04:49:00 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Last Updated: 10/29/2009 milindma
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus]
@StartDate DATETIME,
@EndDate DATETIME,
@ProgramId INT=null,
@ADValue INT=null,
@AssignedTo INT=null,
@OwnedBy INT=null,
@ADCategoryId nvarchar(max) = '-1'
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @Error int
DECLARE @tableADCategoryForCACount TABLE (value nvarchar(256))
INSERT @tableADCategoryForCACount (value)
SELECT * FROM dbo.fn_CSVToTableInt(@ADCategoryId)


IF OBJECT_ID(N'tempdb..#CACNTCAT', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACNTCAT
END;

WITH CACNTCATData (ProgramDimKey, CategoryDimKey)
AS
(
SELECT ProgramDimKey, ProgramHasCategory_CategoryDimKey AS CategoryDimKey
FROM ProgramHasCategoriesFactvw
WHERE (0 = @ProgramId OR ProgramDimKey = @ProgramId)
UNION ALL
SELECT ProgramDimKey, CategoryContainsCategory_CategoryDimKey as CategoryDimKey
FROM dbo.CategoryContainsCategoryFactvw AS CC
INNER JOIN CACNTCATData AS CD
ON CC.CategoryDimKey = CD.CategoryDimKey
)

SELECT ProgramDimKey, CategoryDimKey into #CACNTCAT FROM CACNTCATData;

-- Test
--SELECT * FROM #CACNTCAT;

IF OBJECT_ID(N'tempdb..#CACntDimKey', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACntDimKey
END;

WITH CACNTDimKeyData (CategoryDimKey, ControlObjectiveDimKey)
AS
(
SELECT A.CategoryDimKey, A.CategoryContainsControlObjective_ControlObjectiveDimKey AS ControlObjectiveDimKey
FROM CategoryHasCOFactvw A
INNER JOIN #CACNTCAT B
ON A.CategoryDimKey = B.CategoryDimKey
LEFT JOIN ControlObjectiveCitationFactvw COC
ON COC.ControlObjectiveDimKey = A.CategoryContainsControlObjective_ControlObjectiveDimKey

LEFT JOIN AuthorityDocumentHasCitationFactvw ADHC
ON ADHC.ComplianceDocumentHasCitation_AuthorityDocumentCitationDimKey = COC.ControlObjectiveCitation_AuthorityDocumentCitationDimKey

LEFT JOIN AuthorityDocumentDimvw AD
ON AD.AuthorityDocumentDimKey = ADHC.AuthorityDocumentDimKey
--LEFT JOIN COAuthorityDocFactvw COAD ON
--COAD.ControlObjectiveDimKey = A.CategoryContainsControlObjective_ControlObjectiveDimKey
--LEFT JOIN AuthorityDocumentDimvw AD
--ON AD.AuthorityDocumentDimKey = COAD.PolicyItemRelatesToAuthorityDocument_AuthorityDocumentDimKey
--LEFT JOIN AuthorityDocumentCategoryvw ADC
--ON ADC.AuthorityDocumentCategoryId = AD.GRCDocumentCategory_AuthorityDocumentCategoryId
WHERE
(0 = @ADValue OR AD.AuthorityDocumentDimKey = @ADValue OR AD.AuthorityDocumentDimKey IS NULL)
AND ((-1 IN (Select value from @tableADCategoryForCACount )) OR (AD.DocumentCategory_AuthorityDocumentCategoryId IN (Select value from @tableADCategoryForCACount)) OR AD.DocumentCategory_AuthorityDocumentCategoryId IS NULL)

UNION ALL
SELECT CategoryDimKey, CC.PolicyItemContainsCompliancePolicyItem_ControlObjectiveDimKey as ControlObjectiveDimKey
FROM COHasCOFactVw AS CC
INNER JOIN CACNTDimKeyData AS CD
ON CC.ControlObjectiveDimKey = CD.ControlObjectiveDimKey
)
SELECT CategoryDimKey, ControlObjectiveDimKey into #CACNTDimKey FROM CACNTDimKeyData;

--Test
--SELECT * FROM #CACNTDimKey

IF OBJECT_ID(N'tempdb..#CACntList', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACntList
END;

WITH CACntList (ControlObjectiveDimKey, ControlActivityDimKey)
AS
(
SELECT A.ControlObjectiveDimKey, B.ControlObjectiveContainsControlActivity_ControlActivityDimKey AS ControlActivityDimKey
FROM #CACntDimKey A
INNER JOIN COHasCAFactvw B
ON A.ControlObjectiveDimKey = B.ControlObjectiveDimKey
UNION ALL
SELECT ControlObjectiveDimKey, CC.ControlActivityContainsControlActivity_ControlActivityDimKey as ControlActivityDimKey
FROM CAHasCAFactvw AS CC
INNER JOIN CACntList AS CD
ON CC.ControlActivityDimKey = CD.ControlActivityDimKey
)
SELECT ControlObjectiveDimKey, ControlActivityDimKey into #CACntList FROM CACntList;

--Test
--SELECT * FROM #CACntList

IF OBJECT_ID(N'tempdb..#CACntPHasCO', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACntPHasCO
END;

WITH CACntPHasCO (ProgramDimKey, ControlObjectiveDimKey)
AS
(
SELECT ProgramDimKey, PolicyItemContainsCompliancePolicyItem_ControlObjectiveDimKey AS ControlObjectiveDimKey
FROM ProgramHasCOFactvw
LEFT JOIN ControlObjectiveCitationFactvw COC
ON COC.ControlObjectiveDimKey = PolicyItemContainsCompliancePolicyItem_ControlObjectiveDimKey

LEFT JOIN AuthorityDocumentHasCitationFactvw ADHC
ON ADHC.ComplianceDocumentHasCitation_AuthorityDocumentCitationDimKey = COC.ControlObjectiveCitation_AuthorityDocumentCitationDimKey

LEFT JOIN AuthorityDocumentDimvw AD
ON AD.AuthorityDocumentDimKey = ADHC.AuthorityDocumentDimKey
--LEFT JOIN COAuthorityDocFactvw COAD ON
--COAD.ControlObjectiveDimKey = PolicyItemContainsCompliancePolicyItem_ControlObjectiveDimKey
--LEFT JOIN AuthorityDocumentDimvw AD
--ON AD.AuthorityDocumentDimKey = COAD.PolicyItemRelatesToAuthorityDocument_AuthorityDocumentDimKey
--LEFT JOIN AuthorityDocumentCategoryvw ADC
--ON ADC.AuthorityDocumentCategoryId = AD.GRCDocumentCategory_AuthorityDocumentCategoryId
WHERE (0 = @ProgramId OR ProgramDimKey = @ProgramId)
AND (0 = @ADValue OR AD.AuthorityDocumentDimKey = @ADValue OR AD.AuthorityDocumentDimKey IS NULL)
AND ((-1 IN (Select value from @tableADCategoryForCACount )) OR (AD.DocumentCategory_AuthorityDocumentCategoryId IN (Select value from @tableADCategoryForCACount)) OR AD.DocumentCategory_AuthorityDocumentCategoryId IS NULL)

UNION ALL
SELECT ProgramDimKey, PolicyItemContainsCompliancePolicyItem_ControlObjectiveDimKey as ControlObjectiveDimKey
FROM COHasCOFactvw AS CC
INNER JOIN CACntPHasCO AS CD
ON CC.ControlObjectiveDimKey = CD.ControlObjectiveDimKey
)
SELECT ProgramDimKey, ControlObjectiveDimKey into #CACntPHasCO FROM CACntPHasCO;

--Test
--SELECT * FROM #CACntPHasCO

IF OBJECT_ID(N'tempdb..#CACntPCAList', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACntPCAList
END;

WITH CACntPCA (ControlObjectiveDimKey, ControlActivityDimKey)
AS
(
SELECT A.ControlObjectiveDimKey, B.ControlObjectiveContainsControlActivity_ControlActivityDimKey
FROM #CACntPHasCO A
INNER JOIN dbo.COHasCAFactvw B
ON A.ControlObjectiveDimKey = B.ControlObjectiveDimKey
UNION ALL
SELECT ControlObjectiveDimKey, CC.ControlActivityContainsControlActivity_ControlActivityDimKey as ControlActivityDimKey
FROM CAHasCAFactvw AS CC
INNER JOIN CACntPCA AS CD
ON CC.ControlActivityDimKey = CD.ControlActivityDimKey
)
SELECT ControlObjectiveDimKey, ControlActivityDimKey into #CACntPCAList FROM CACntPCA;

--Test
--SELECT * FROM #CACntPCAList

IF OBJECT_ID(N'tempdb..#CACntAllList', N'U') IS NOT NULL
BEGIN
DROP TABLE #CACntAllList
END;

CREATE TABLE #CACntAllList
(ControlObjectiveDimKey int
, ControlActivityDimKey int)

INSERT INTO #CACntAllList
SELECT DISTINCT ControlObjectiveDimKey, ControlActivityDimKey
FROM #CACntList
UNION
SELECT DISTINCT ControlObjectiveDimKey, ControlActivityDimKey
FROM #CACntPCAList

--Test
--SELECT * FROM #CACntAllList

-- Insert statements for procedure here
SELECT '"' + Convert(varchar,(SELECT COUNT(DISTINCT CAFilter.Id)
FROM (SELECT DISTINCT CA.*
FROM (SELECT CA.ControlActivityDimKey,
CA.Id,
CA.Title AS Title,
CS.CAStatusValue,
CS.CAStatusId,
CA.CreatedDate,
CAList.ControlObjectiveDimKey
FROM ControlActivityStatusDurationFactvw CASD

JOIN ControlActivityDimvw CA
ON CA.ControlActivityDimKey = CASD.ControlActivityDimKey

JOIN #CACntAllList CAList
ON CAList.ControlActivityDimKey = CA.ControlActivityDimKey

JOIN CAStatusvw CS
ON CS.CAStatusId = CASD.CAStatusId

WHERE ((DATEDIFF(DAY, LastModifiedDateTime, @StartDate) <= 0 AND DATEDIFF(DAY, LastModifiedDateTime, @EndDate) >=0)
OR
(FinishDateTime IS NOT NULL AND DATEDIFF(DAY, FinishDateTime, @StartDate) <= 0 AND DATEDIFF(DAY, FinishDateTime, @EndDate) >=0))) AS CA

LEFT JOIN ControlObjectiveCitationFactvw COC
ON COC.ControlObjectiveDimKey = CA.ControlObjectiveDimKey

LEFT JOIN AuthorityDocumentHasCitationFactvw ADHC
ON ADHC.ComplianceDocumentHasCitation_AuthorityDocumentCitationDimKey = COC.ControlObjectiveCitation_AuthorityDocumentCitationDimKey

LEFT JOIN AuthorityDocumentDimvw AD
ON AD.AuthorityDocumentDimKey = ADHC.AuthorityDocumentDimKey
--LEFT JOIN COAuthorityDocFactvw COAD
--ON COAD.ControlObjectiveDimKey = CA.ControlObjectiveDimKey

--LEFT JOIN AuthorityDocumentDimvw AD
--ON AD.AuthorityDocumentDimKey = COAD.PolicyItemRelatesToAuthorityDocument_AuthorityDocumentDimKey

--LEFT JOIN AuthorityDocumentCategoryvw ADC
--ON ADC.AuthorityDocumentCategoryId = AD.GRCDocumentCategory_AuthorityDocumentCategoryId

WHERE ((-1 IN (Select value from @tableADCategoryForCACount )) OR (AD.DocumentCategory_AuthorityDocumentCategoryId IN (Select value from @tableADCategoryForCACount)) OR AD.DocumentCategory_AuthorityDocumentCategoryId IS NULL)
AND (0 = @ADValue OR AD.AuthorityDocumentDimKey = @ADValue OR AD.AuthorityDocumentDimKey IS NULL)
AND CA.CAStatusId = CASV.CAStatusId) AS CAFilter

JOIN ControlActivityOwnedByUserFactvw CAOW
ON CAOW.ControlActivityDimKey = CAFilter.ControlActivityDimKey

JOIN UserDimvw OwnedBy
ON OwnedBy.UserDimKey = CAOW.ControlActivityOwnedBy_UserDimKey

LEFT JOIN ControlActivityAssignedToUserFactvw CAA
ON CAA.ControlActivityDimKey = CAFilter.ControlActivityDimKey

LEFT JOIN UserDimvw AssignedTo
ON AssignedTo.UserDimKey = CAA.WorkItemAssignedToUser_UserDimKey

WHERE (0 = @OwnedBy OR OwnedBy.UserDimKey = @OwnedBy)
AND (0 = @AssignedTo OR AssignedTo.UserDimKey = @AssignedTo)))
+ '" Control Activities '+ CASV.CAStatusValue AS HeaderValue, CASV.CAStatusId, CASV.CAStatusValue
FROM CAStatusvw CASV WHERE CASV.ParentId IS NOT NULL
END


GO


GRANT EXECUTE ON dbo.ServiceManager_Report_GRC_ControlManagement_SP_GetCACountByStatus TO reportuser
GO