USP_DATAFORMTEMPLATE_EDITSAVE_R68ONLINESETTINGS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SETTINGSID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ORGANISATION | nvarchar(160) | IN | |
@CCRNID | uniqueidentifier | IN | |
@REGULATORCODE | tinyint | IN | |
@OTHERREGULATORNAME | nvarchar(160) | IN | |
@REGULATORNUMBER | nvarchar(20) | IN | |
@SENDERINFO | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_R68ONLINESETTINGS
(
@SETTINGSID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@ORGANISATION nvarchar(160),
@CCRNID uniqueidentifier,
@REGULATORCODE tinyint,
@OTHERREGULATORNAME nvarchar(160),
@REGULATORNUMBER nvarchar(20),
@SENDERINFO xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
if @CCRNID is null
begin
select @CCRNID = CHARITYCLAIMREFERENCENUMBER.ID
from dbo.CHARITYCLAIMREFERENCENUMBER
left join CHARITYCLAIMREFERENCENUMBERSITE on CHARITYCLAIMREFERENCENUMBERSITE.CHARITYCLAIMREFERENCENUMBERID = CHARITYCLAIMREFERENCENUMBER.ID
where CHARITYCLAIMREFERENCENUMBERSITE.ID is null
--If still null, then CCRN does not exist and we must error out
if @CCRNID is null
raiserror('BBERR_CCRNNOTSET', 13, 1)
end
if @SETTINGSID is null
begin
set @SETTINGSID = newid()
insert into dbo.R68ONLINESUBMISSIONSETTINGS
(ID, ORGANISATION, CCRNID, REGULATORCODE, OTHERREGULATORNAME, REGULATORNUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@SETTINGSID, @ORGANISATION, @CCRNID, @REGULATORCODE, @OTHERREGULATORNAME, @REGULATORNUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
else
update dbo.R68ONLINESUBMISSIONSETTINGS
set ORGANISATION = @ORGANISATION,
CCRNID = @CCRNID,
REGULATORCODE = @REGULATORCODE,
OTHERREGULATORNAME = @OTHERREGULATORNAME,
REGULATORNUMBER = @REGULATORNUMBER,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @SETTINGSID
declare @PASSWORDENCRYPTED nvarchar(max);
declare @HASH nvarchar(200);
declare @EXISTINGPASSWORDENCRYPTED nvarchar(max);
declare @EXISTINGHASH nvarchar(200);
declare @SENDERINFOID uniqueidentifier;
declare @USERID nvarchar(100);
declare @PASSWORD nvarchar(200);
declare @PASSWORDHASH nvarchar(200);
declare @TYPECODE tinyint;
declare @ISTRUSTEE bit;
declare @TRUSTEENAME nvarchar(160);
declare @OFFICIALTITLE nvarchar(4);
declare @OFFICIALFORENAME nvarchar(35);
declare @OFFICIALSURNAME nvarchar(35);
declare @PHONENUMBER nvarchar(35);
declare @ISOVERSEAS bit;
declare @POSTCODE nvarchar(8);
declare @RECORDEXISTS bit;
declare SENDERINFO_CURSOR cursor local fast_forward for
select T.c.value('(ID)[1]','uniqueidentifier') as ID,
T.c.value('(USERID)[1]','nvarchar(100)') as USERID,
T.c.value('(PASSWORD)[1]','nvarchar(200)') as PASSWORD,
T.c.value('(PASSWORDHASH)[1]','nvarchar(200)') as PASSWORDHASH,
T.c.value('(TYPE)[1]','tinyint') as TYPECODE,
T.c.value('(ISTRUSTEE)[1]','bit') as ISTRUSTEE,
T.c.value('(TRUSTEENAME)[1]','nvarchar(160)') as TRUSTEENAME,
T.c.value('(OFFICIALTITLE)[1]','nvarchar(4)') as OFFICIALTITLE,
T.c.value('(OFFICIALFORENAME)[1]','nvarchar(35)') as OFFICIALFORENAME,
T.c.value('(OFFICIALSURNAME)[1]','nvarchar(35)') as OFFICIALSURNAME,
T.c.value('(PHONENUMBER)[1]','nvarchar(35)') as PHONENUMBER,
T.c.value('(ISOVERSEAS)[1]','bit') as ISOVERSEAS,
T.c.value('(POSTCODE)[1]','nvarchar(8)') as POSTCODE
from @SENDERINFO.nodes('SENDERINFO/ITEM') T(c)
open SENDERINFO_CURSOR;
--open the symmetric key for encryption
exec dbo.USP_GET_KEY_ACCESS;
begin try
fetch next from SENDERINFO_CURSOR into @SENDERINFOID, @USERID, @PASSWORD, @PASSWORDHASH, @TYPECODE, @ISTRUSTEE, @TRUSTEENAME, @OFFICIALTITLE, @OFFICIALFORENAME, @OFFICIALSURNAME, @PHONENUMBER, @ISOVERSEAS, @POSTCODE;
while @@FETCH_STATUS = 0
begin
set @RECORDEXISTS = 0
set @EXISTINGPASSWORDENCRYPTED = ''
set @PASSWORDENCRYPTED = ''
set @HASH = ''
set @EXISTINGHASH = ''
if exists(select 1 from dbo.R68ONLINESUBMISSIONSETTINGSSENDERINFO where ID = @SENDERINFOID)
begin
set @RECORDEXISTS = 1;
select @EXISTINGPASSWORDENCRYPTED = PASSWORD,
@EXISTINGHASH = PASSWORDHASH
from dbo.R68ONLINESUBMISSIONSETTINGSSENDERINFO
where ID = @SENDERINFOID
end
if @RECORDEXISTS = 1 and @PASSWORD = N'Qha8$2Jgs!'
begin
set @PASSWORDENCRYPTED = @EXISTINGPASSWORDENCRYPTED;
set @HASH = @EXISTINGHASH
end
else
begin
set @PASSWORDENCRYPTED = EncryptByKey(Key_GUID('sym_BBInfinity'), @PASSWORD);
set @HASH = @PASSWORDHASH
end
if @RECORDEXISTS = 1
begin
update dbo.R68ONLINESUBMISSIONSETTINGSSENDERINFO
set USERID = @USERID,
PASSWORD = @PASSWORDENCRYPTED,
PASSWORDHASH = @HASH,
TYPECODE = @TYPECODE,
ISTRUSTEE = @ISTRUSTEE,
TRUSTEENAME = @TRUSTEENAME,
OFFICIALTITLE = @OFFICIALTITLE,
OFFICIALFORENAME = @OFFICIALFORENAME,
OFFICIALSURNAME = @OFFICIALSURNAME,
PHONENUMBER = @PHONENUMBER,
ISOVERSEAS = @ISOVERSEAS,
POSTCODE = @POSTCODE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @SENDERINFOID
end
else
begin
insert into dbo.R68ONLINESUBMISSIONSETTINGSSENDERINFO
(ID, R68ONLINESUBMISSIONSETTINGSID, USERID, [PASSWORD], PASSWORDHASH, TYPECODE, ISTRUSTEE, TRUSTEENAME, OFFICIALTITLE, OFFICIALFORENAME, OFFICIALSURNAME, PHONENUMBER, ISOVERSEAS, POSTCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@SENDERINFOID, @SETTINGSID, @USERID, @PASSWORDENCRYPTED, @HASH, @TYPECODE, @ISTRUSTEE, @TRUSTEENAME, @OFFICIALTITLE, @OFFICIALFORENAME, @OFFICIALSURNAME, @PHONENUMBER, @ISOVERSEAS, @POSTCODE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
fetch next from SENDERINFO_CURSOR into @SENDERINFOID, @USERID, @PASSWORD, @PASSWORDHASH, @TYPECODE, @ISTRUSTEE, @TRUSTEENAME, @OFFICIALTITLE, @OFFICIALFORENAME, @OFFICIALSURNAME, @PHONENUMBER, @ISOVERSEAS, @POSTCODE;
end
close symmetric key sym_BBInfinity;
close SENDERINFO_CURSOR;
deallocate SENDERINFO_CURSOR;
end try
begin catch
close symmetric key sym_BBInfinity;
close SENDERINFO_CURSOR;
deallocate SENDERINFO_CURSOR;
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0