USP_DATAFORMTEMPLATE_EDIT_EVENTAPPEALS
The save procedure used by the edit dataform template "Event Appeals Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@APPEALS | xml | IN | Appeals |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_EVENTAPPEALS
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@APPEALS xml,
@CURRENTAPPUSERID uniqueidentifier = null
) as
set nocount on;
declare @APPEALS_TABLE table (
APPEALID uniqueidentifier,
USERHASACCESS bit
);
insert into @APPEALS_TABLE
select
T.appeals.value('(APPEALID)[1]', 'uniqueidentifier') as APPEALID,
T.appeals.value('(USERHASACCESS)[1]', 'bit') as USERHASACCESS
from
@APPEALS.nodes('APPEALS/ITEM') T(appeals);
-- Verify the user has access to the added appeals
declare @DATAFORMINSTANCEID uniqueidentifier;
set @DATAFORMINSTANCEID = '4C220F26-7903-4EA6-B9AB-8609CA77EB76';
declare @ISADMIN bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
if (@ISADMIN = 0)
begin
declare @EXISTING_APPEALS table (
APPEALID uniqueidentifier
);
insert into @EXISTING_APPEALS
select
APPEALID
from
dbo.EVENTAPPEAL
where
EVENTID = @ID;
declare @EXISTINGCOUNT int = 0;
declare @APPEALCOUNT int = 0;
declare @JOINCOUNT int = 0;
declare @CHECKSECURITY bit = 0;
select @EXISTINGCOUNT = count(APPEALID) from @EXISTING_APPEALS;
select @APPEALCOUNT = count(APPEALID) from @APPEALS_TABLE;
if @EXISTINGCOUNT = @APPEALCOUNT
begin
select @JOINCOUNT = count(A.APPEALID) from @APPEALS_TABLE A inner join @EXISTING_APPEALS E on E.APPEALID = A.APPEALID;
if @JOINCOUNT != @EXISTINGCOUNT
set @CHECKSECURITY = 1;
end
else if not(@EXISTINGCOUNT > @APPEALCOUNT) -- this assumes that the UIModel code will stop the rights restricted user from deleting an appeal they don't have rights to
set @CHECKSECURITY = 1;
if @CHECKSECURITY = 1
begin
select
top(1) APPEAL.ID
from
dbo.APPEAL
inner join
@APPEALS_TABLE A on A.APPEALID = APPEAL.ID
left join
@EXISTING_APPEALS E on E.APPEALID = A.APPEALID
where
dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_FORSITE(@CURRENTAPPUSERID, @DATAFORMINSTANCEID, APPEAL.SITEID) = 1 and
E.APPEALID is null
if @@ROWCOUNT = 0
begin
raiserror('BBERR_APPEAL_NOACCESS',13,1);
return 0;
end
end
end
declare @CURRENCYMATCHTEST integer;
declare @EVENTBASECURRENCYID uniqueidentifier;
select
@EVENTBASECURRENCYID = BASECURRENCYID
from
dbo.EVENT
where
ID = @ID;
select
@CURRENCYMATCHTEST = sum(case when @EVENTBASECURRENCYID <> APPEAL.BASECURRENCYID then 1 else 0 end)
from
@APPEALS_TABLE APPEALSFROMXML
left join dbo.APPEAL on APPEAL.ID = APPEALSFROMXML.APPEALID;
if @CURRENCYMATCHTEST > 0
begin
raiserror('BBERR_EVENTTOAPPEALBASEMISMATCH', 13, 1);
return 1;
end
exec dbo.USP_EVENT_GETAPPEALS_UPDATEFROMXML @ID, @APPEALS, @CHANGEAGENTID;