USP_DATAFORMTEMPLATE_EDIT_PROGRAMREGISTRATIONINFORMATION
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@REGISTRATIONINFORMATIONTYPECODE | tinyint | IN | |
@REGISTRATIONSECTIONCODEID | uniqueidentifier | IN | |
@REGISTRATIONINFORMATIONID | uniqueidentifier | IN | |
@REQUIRED | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PROGRAMREGISTRATIONINFORMATION
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@REGISTRATIONINFORMATIONTYPECODE tinyint,
@REGISTRATIONSECTIONCODEID uniqueidentifier,
@REGISTRATIONINFORMATIONID uniqueidentifier,
@REQUIRED bit
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
if @REGISTRATIONINFORMATIONTYPECODE = 0 --Announcement
set @REQUIRED = 0
--determine the program ID to see if the section exists for it
declare @PROGRAMID uniqueidentifier
declare @ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID uniqueidentifier
select
@PROGRAMID = pers.PROGRAMID,
@ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID = pers.ID
from dbo.PROGRAMEVENTREGISTRATIONSECTION as pers
inner join dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION as persri
on pers.ID = persri.PROGRAMEVENTREGISTRATIONSECTIONID
where persri.ID = @ID
declare @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID uniqueidentifier = (select top 1 ID from dbo.PROGRAMEVENTREGISTRATIONSECTION where (PROGRAMID = @PROGRAMID) and (REGISTRATIONSECTIONCODEID = @REGISTRATIONSECTIONCODEID))
if @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID is null begin
declare @MAXSECTIONSEQUENCE int = (select isnull(max(SEQUENCE), 0) from dbo.PROGRAMEVENTREGISTRATIONSECTION where (PROGRAMID = @PROGRAMID))
set @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID = newid()
insert into dbo.PROGRAMEVENTREGISTRATIONSECTION (ID, PROGRAMID, REGISTRATIONSECTIONCODEID, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID, @PROGRAMID, @REGISTRATIONSECTIONCODEID, @MAXSECTIONSEQUENCE + 1, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
declare @MAXITEMSEQUENCE int = (select isnull(max(SEQUENCE), 0) from dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION where (PROGRAMEVENTREGISTRATIONSECTIONID = @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID))
update dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION set
PROGRAMEVENTREGISTRATIONSECTIONID = @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID,
REGISTRATIONINFORMATIONID = @REGISTRATIONINFORMATIONID,
SEQUENCE = case when (@DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID = @ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID) then SEQUENCE else @MAXITEMSEQUENCE + 1 end,
[REQUIRED] = @REQUIRED,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
--clean up the original section if the item was moved out of it and there are no items which now refer to it...
if @DESTINATIONPROGRAMEVENTREGISTRATIONSECTIONID <> @ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID begin
if not exists (select 1 from dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION where PROGRAMEVENTREGISTRATIONSECTIONID = @ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID) begin
exec dbo.USP_PROGRAMEVENTREGISTRATIONSECTION_DELETEBYID_WITHCHANGEAGENTID @ORIGINALPROGRAMEVENTREGISTRATIONSECTIONID, @CHANGEAGENTID;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;