EnVisageOnline/Main/Database/Scripts/20160526/02_VW_ProjectAccessByUserEx...

44 lines
1.6 KiB
Transact-SQL

USE [EnVisage]
GO
/****** Object: View [dbo].[VW_ProjectAccessByUserExtended] Script Date: 5/26/2016 10:30:12 AM ******/
if exists (select 1 from sys.all_views where name like 'VW_ProjectAccessByUserExtended')
begin
DROP VIEW [dbo].[VW_ProjectAccessByUserExtended]
end
GO
/****** Object: View [dbo].[VW_ProjectAccessByUserExtended] Script Date: 5/26/2016 10:30:12 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[VW_ProjectAccessByUserExtended] AS
select P.Id, P.CompanyId, P.ClientId, P.TypeId, P.StatusId, P.Name, P.ProjectNumber, P.Color, P.Details, P.Priority, P.Probability, P.IsRevenueGenerating, P.Deadline,
P.ParentProjectId, P.HasChildren, P.PerformanceRedThreshold, P.PerformanceYellowThreshold, P.PartNum, P.EditTimestamp, B.UserId,
ISNULL(C.Name, '') AS StatusName, ISNULL(D.Name, '') AS CompanyName, ISNULL(E.Name, '') AS ClientName,
ISNULL(F.Name, '') AS TypeName, G.Id AS ActiveScenarioId, ISNULL(G.Name, '') AS ActiveScenarioName,
ISNULL(
(
STUFF((SELECT ',' + t.Name AS [text()]
FROM dbo.Team2Project t2p
JOIN dbo.Team t
ON t2p.TeamId = t.Id
WHERE t2p.ProjectId = P.Id
ORDER BY t.Name ASC
FOR XML PATH('')), 1, 1, '')
), '') AS Teams,
B.[Read], B.Write
from Project P
INNER JOIN VW_ProjectAccessExtended B ON (B.ProjectId = P.Id)
LEFT JOIN [Status] C ON (C.Id = P.StatusId)
LEFT JOIN Company D ON (D.Id = P.CompanyId)
LEFT JOIN Client E ON (E.Id = P.ClientId)
LEFT JOIN [Type] F ON (F.Id = P.TypeId)
LEFT JOIN Scenario G ON (G.ParentId = P.Id) AND (G.[Type] = 2) AND (G.[Status] = 1) -- Poftfolio scenario & active
WHERE (B.[Read] = 1) OR (B.Write = 1)
GO