UFN_CONSTITUENTHISTORY_APPUSER_AUDIT
Returns the audit information for the app user linked to a constituent record.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@CONSTITUENTDATEADDED | datetime | IN | |
@ACTIONTYPECODE | tinyint | IN |
Definition
Copy
create function dbo.UFN_CONSTITUENTHISTORY_APPUSER_AUDIT
(
@CONSTITUENTID uniqueidentifier,
@CONSTITUENTDATEADDED datetime,
@ACTIONTYPECODE tinyint
)
returns @RESULTS table
(
RECORDID uniqueidentifier,
AUDITDATE datetime,
CHANGEDBYUSER nvarchar(128),
PROCESS nvarchar(255),
FIELD nvarchar(128),
OLD nvarchar(4000),
NEW nvarchar(4000),
ACTION nvarchar(8),
CHANGEDBYAPP nvarchar(200)
) as begin
with CHANGES as
(select
'Update' as CHANGETYPE,
AFTERUPDATE.AUDITRECORDID,
AFTERUPDATE.AUDITKEY,
AFTERUPDATE.CHANGEDBYID AUDITCHANGEAGENTID,
CHANGEAGENT.APPLICATIONNAME CHANGEDBYAPP,
CHANGEAGENT.USERNAME CHANGEDBYUSER,
AFTERUPDATE.DATEADDED,
AFTERUPDATE.DATECHANGED,
'APPUSER' TABLENAME
from
dbo.APPUSERAUDIT as BEFOREUPDATE
inner join
dbo.APPUSERAUDIT as AFTERUPDATE
on
AFTERUPDATE.AUDITKEY = BEFOREUPDATE.AUDITKEY
and BEFOREUPDATE.AUDITTYPECODE = 0 and AFTERUPDATE.AUDITTYPECODE = 1
left join
dbo.CHANGEAGENT
on
CHANGEAGENT.ID = AFTERUPDATE.CHANGEDBYID
where
(BEFOREUPDATE.CONSTITUENTID = @CONSTITUENTID and (AFTERUPDATE.CONSTITUENTID <> @CONSTITUENTID or AFTERUPDATE.CONSTITUENTID is null)) or
((BEFOREUPDATE.CONSTITUENTID <> @CONSTITUENTID or BEFOREUPDATE.CONSTITUENTID is null) and AFTERUPDATE.CONSTITUENTID = @CONSTITUENTID))
insert into @RESULTS
select
CHANGES.AUDITRECORDID,
CHANGES.DATECHANGED as AUDITDATE,
CHANGES.CHANGEDBYUSER,
(select PROCESSDISPLAYNAME from dbo.CHANGEAGENT where ID = CHANGES.AUDITCHANGEAGENTID) as PROCESS,
'Link to ' + (select coalesce(USERNAME,'App User') from dbo.APPUSER where ID = CHANGES.AUDITRECORDID) + ':' + [DETAIL].FIELD,
DETAIL.OLD,
case when CHANGES.CHANGETYPE = 'Delete' then 'n/a' else DETAIL.NEW end,
case when CHANGES.CHANGETYPE = 'Delete' then 'Delete' else 'Update' end,
CHANGES.CHANGEDBYAPP
from
CHANGES
cross apply
dbo.UFN_AUDIT_GETDETAIL_BYFIELDLIST('APPUSERAUDIT',CHANGES.AUDITKEY,CHANGES.AUDITRECORDID,'CONSTITUENTID') as DETAIL
where
(CHANGES.CHANGETYPE = 'Update' and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2));
return;
end