USP_PAGEVIEWDATA_ADDPAGEVIEW

The save procedure used by the add dataform template "PageViewData Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PAGEVIEWXMLDATA xml IN Page View XML Data
@MAXRECORDS int IN Maximum number of page views to track. User 0 for no limit.

Definition

Copy

CREATE procedure dbo.USP_PAGEVIEWDATA_ADDPAGEVIEW
(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
      @PAGEVIEWXMLDATA xml = '',
    @MAXRECORDS int = 0
)
as

set nocount on;

if @ID is null
    set @ID = newid()

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try

  declare @IsUserGuid bit
  set @IsUserGuid = (select 1 from dbo.ClientUsers CU where CU.[GUID] = @ID)

  declare @XMLDATA xml
  if @IsUserGuid = 1
  begin
    set @XMLDATA = (select [XMLDATA] from [dbo].[PAGEVIEWDATA] where [ID] = @ID)
  end
  else
  begin    
    declare @TEMP table (BinaryData image, TextData ntext)
    insert into @TEMP
    exec [dbo].[spTempDataFetch] @ID    

    set @XMLDATA = (select top 1 TEXTDATA from @TEMP)
    declare @TEXTDATA nvarchar(max)
    declare @EXPIRATION datetime
    set @EXPIRATION = DATEADD(d,30, GetUTCDate())
  end    

  if @XMLDATA is null
  begin
    set @XMLDATA = '<PageViews />'


    if @IsUserGuid = 1
    begin
      insert into [dbo].[PAGEVIEWDATA]
          (ID, XMLData, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
      values
          (@ID, @XMLDATA, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
    end
    else
    begin    
      set @TEXTDATA = CAST(@XMLDATA as nvarchar(max))
      exec [dbo].[spTempDataAdd] @ID, null, @TEXTDATA, @EXPIRATION
    end  


  end

  declare @HASTIME bit
  set @HASTIME = (select 1 from @PAGEVIEWXMLDATA.nodes('Pg[1]/@T') PG(T))
  if @HASTIME is null
  begin
    --Set the date/time of the page view
    declare @T datetime
    set @T = GETUTCDATE()
    set @PAGEVIEWXMLDATA.modify('insert attribute T {sql:variable("@T")} into (/Pg)[1]')
  end

  set @XMLDATA.modify('insert sql:variable("@PAGEVIEWXMLDATA") as first into (/PageViews)[1]')

  if @MAXRECORDS > 0
    set @XMLDATA.modify('delete /PageViews/Pg[position()>sql:variable("@MAXRECORDS")]')

  if @IsUserGuid = 1
  begin
    update [dbo].[PAGEVIEWDATA] with (rowlock)
    set [XMLDATA] = @XMLDATA
    where [ID] = @ID
  end
  else
  begin      
      set @TEXTDATA = CAST(@XMLDATA as nvarchar(max))
      exec [dbo].[spTempDataAdd] @ID, null, @TEXTDATA, @EXPIRATION
  end
end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0