USP_DATALIST_SELECTPARTSFORUPDATE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONTENTTYPEID | int | IN | |
@SEARCHPARTNAME | varchar(515) | IN | |
@SEARCHPERSONNAME | varchar(510) | IN | |
@EVENTPROGRAMID | uniqueidentifier | IN | |
@PAGENUMBER | int | IN | |
@PAGESIZE | int | IN | |
@SORTPARAMETER | varchar(100) | IN | |
@USERID | int | IN | |
@SOURCEPARTID | int | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_SELECTPARTSFORUPDATE(
@CONTENTTYPEID int,
@SEARCHPARTNAME varchar(515) = '',
@SEARCHPERSONNAME varchar(510) = '',
@EVENTPROGRAMID UNIQUEIDENTIFIER = null,
@PAGENUMBER int = 1,
@PAGESIZE int = 50,
@SORTPARAMETER varchar(100) ='',
@USERID int = 1,
@SOURCEPARTID int
)
as
set nocount on;
DECLARE @sqlCommand nvarchar(4000)
DECLARE @STARTROW int
DECLARE @ENDROW int
Create TABLE #Queue
(
SequenceId int IDENTITY(1, 1),
PartName varchar(515),
PageName varchar(510),
SiteName varchar(510),
UpdateDate datetime,
UpdateBy varchar(50),
PartID int
)
Create TABLE #Queue2
(
SequenceId int IDENTITY(1, 1),
PartName varchar(515) DEFAULT '',
PageName nvarchar(max) DEFAULT '',
SiteName nvarchar(max) DEFAULT '',
UpdateDate datetime,
UpdateBy varchar(50),
PartID int,
RecordCount int,
PageCount int,
NumPage int DEFAULT 0,
NumSite int DEFAULT 0
)
SET @sqlCommand = '
Insert into #Queue(PartName, PageName, SiteName, UpdateDate, UpdateBy, PartID)
Select SC.Title As PartName, SP.PageName As PageName, CS.Name As SiteName,
SC.UpdateDate, CU.UserName As UpdateBy, SC.ID As PartID
from PageContent PC
Inner Join SitePages SP on SP.ID = PC.SitePagesID
Inner Join SiteContent SC on PC.SiteContentID = SC.ID
Inner Join ClientSites CS on SP.ClientSitesID = CS.ID
Inner Join ClientUsers CU on CU.ID = Isnull(SC.ChangedByCMSUserID, SC.OwnerID) '
DECLARE @IsSupervisor bit
Select @IsSupervisor = IsSupervisor from ClientUsers where ID = @USERID
If @USERID = 1
Select @IsSupervisor = 1
--regular user
If @IsSupervisor = 0 Begin
SET @sqlCommand += ' Inner Join dbo.UFN_PART_UPDATEPERMISSION(' + Convert(varchar(10), @USERID) + ') PU on PU.ID = SC.ID '
--check site security
/*
DECLARE @CONSTITUENTID UNIQUEIDENTIFIER
Set @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@USERID)
SET @sqlCommand += ' Inner Join (Select Distinct EE.ClientSitesID from EventSite ES Inner Join ConstituentSite CS on CS.SITEID = ES.SITEID
Inner Join EVENTEXTENSION EE on ES.EVENTID = EE.EVENTID
where CS.CONSTITUENTID = ''' + CAST(@CONSTITUENTID As varchar(50)) + ''' or EE.SITEID is null) SITESECURITY On SITESECURITY.ClientSitesID = CS.ID '
*/
End
if @EVENTPROGRAMID != CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER) Begin
SET @sqlCommand += ' Inner Join (Select ClientSitesID from EventExtension where FAFProgramid = ''' + CAST(@EVENTPROGRAMID As varchar(50)) + ''') NAP On NAP.ClientSitesID = CS.ID '
End
SET @sqlCommand += ' Where SC.ContentTypesID = ' + Convert(varchar(10), @ContentTypeID) + ' and SC.ID != '+ Convert(varchar(10), @SOURCEPARTID) + ''
if @SEARCHPARTNAME != '' Begin
SET @sqlCommand += ' and SC.Title like ''' + @SEARCHPARTNAME + '%' +''''
End
if @SEARCHPERSONNAME != '' Begin
SET @sqlCommand += ' and (CU.FirstName like ''' + @SEARCHPERSONNAME + '%' +''' Or CU.LastName like ''' + @SEARCHPERSONNAME + '%' +''')'
End
EXEC sp_executesql @sqlCommand
-- copy data to #Queue2
Insert into #Queue2(PartID, PartName, UpdateDate, UpdateBy)
Select distinct PartID, PartName, UpdateDate, UpdateBy from #Queue
DECLARE PartCursor CURSOR FOR
Select PageName, SiteName, PartID
From #Queue
DECLARE @PageName varchar(500)
DECLARE @SiteName varchar(500)
DECLARE @MyPartID int
DECLARE @OldSiteName varchar(500)
DECLARE @OldPageName varchar(200)
OPEN PartCursor
FETCH NEXT FROM PartCursor
Into @PageName, @SiteName, @MyPartID
Set @OldSiteName = ''
Set @OldPageName = ''
WHILE @@FETCH_STATUS = 0
BEGIN
Update #Queue2 Set
PageName =
CASE
When NumPage = 0 Then @PageName
When NumPage <= 2 and @PageName!= @OldPageName Then PageName + ', ' + @PageName
Else PageName + ''
End,
SiteName =
CASE
When NumSite =0 Then @SiteName
When NumSite <=2 and @SiteName!= @OldSiteName Then SiteName + ', ' + @SiteName
Else SiteName + ''
End,
NumPage =
CASE
When @PageName!= @OldPageName Then NumPage + 1
Else NumPage
End,
NumSite =
CASE
When @SiteName!= @OldSiteName Then NumSite + 1
Else NumSite
End
Where PartID = @MyPartID
Set @OldSiteName = @SiteName
Set @OldPageName = @PageName
FETCH NEXT FROM PartCursor
Into @PageName, @SiteName, @MyPartID
END
CLOSE PartCursor
DEALLOCATE PartCursor
Update #Queue2 Set PageName =
CASE
When NumPage <=3 Then PageName + ''
Else PageName + ', and ' + Cast((NumPage -3) As varchar) + ' other pages'
End,
SiteName =
CASE
When NumSite <=3 Then SiteName + ''
Else SiteName + ', and ' + Cast((NumSite -3) As varchar) + ' other websites'
End
-- return the final data
DECLARE @RecordCount int
DECLARE @PageCount int
SELECT @RecordCount = COUNT(SequenceId) FROM #Queue2
SET @PageCount = CEILING(@RecordCount * 1.0 / @PAGESIZE)
Update #Queue2 Set RecordCount = @RecordCount, PageCount = @PageCount
-- get paged data
DECLARE @LB int
DECLARE @UB int
DECLARE @SelectSql nvarchar(4000)
SET @LB = (@PAGENUMBER - 1) * @PAGESIZE + 1
SET @UB = @LB + @PAGESIZE - 1
Set @SelectSql = 'Select PARTNAME,PAGENAME,SITENAME,UPDATEDATE,UPDATEBY,PARTID,RecordCount,PageCount
from #Queue2 Where SequenceId between '+ Convert(varchar(10), @LB) +' AND ' + Convert(varchar(10), @UB) + ''
if @SORTPARAMETER != '' Begin
SET @SelectSql += ' order by ''' + @SORTPARAMETER + ''''
End
else Begin
SET @SelectSql += ' order by PartName'
End
EXEC sp_executesql @SelectSql
Drop table #Queue
Drop table #Queue2