USP_GROUPADD
Adds a group. As of Aug 2009, is called from Group.Add and Committee.Add.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@DESCRIPTION | nvarchar(300) | IN | |
@GROUPTYPEID | uniqueidentifier | IN | |
@GIVESANONYMOUSLY | bit | IN | |
@ADDRESSTYPECODEID | uniqueidentifier | IN | |
@COUNTRYID | uniqueidentifier | IN | |
@ADDRESSBLOCK | nvarchar(150) | IN | |
@CITY | nvarchar(50) | IN | |
@STATEID | uniqueidentifier | IN | |
@POSTCODE | nvarchar(12) | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@NUMBER | nvarchar(100) | IN | |
@EMAILADDRESSTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESS | UDT_EMAILADDRESS | IN | |
@MEMBERS | xml | IN | |
@WEBADDRESS | UDT_WEBADDRESS | IN | |
@PRIMARYCONTACTID | uniqueidentifier | IN | |
@NEWMEMBERSEARCHID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DONOTMAIL | bit | IN | |
@DONOTMAILREASONCODEID | uniqueidentifier | IN | |
@SKIP_ADDING_SECURITYGROUPS | bit | IN | |
@OMITFROMVALIDATION | bit | IN | |
@CART | nvarchar(10) | IN | |
@DPC | nvarchar(8) | IN | |
@LOT | nvarchar(5) | IN | |
@COUNTYCODEID | uniqueidentifier | IN | |
@CONGRESSIONALDISTRICTCODEID | uniqueidentifier | IN | |
@LASTVALIDATIONATTEMPTDATE | datetime | IN | |
@VALIDATIONMESSAGE | nvarchar(200) | IN | |
@CERTIFICATIONDATA | int | IN | |
@SKIP_ADDING_SITES | bit | IN | |
@DONOTEMAIL | bit | IN | |
@DONOTCALL | bit | IN | |
@INFOSOURCECODEID | uniqueidentifier | IN | |
@ISCONFIDENTIAL | bit | IN | |
@DONOTCALLREASONCODEID | uniqueidentifier | IN | |
@PHONE_ISCONFIDENTIAL | bit | IN | |
@ADDTYPE | tinyint | IN | |
@IDSETREGISTERID | uniqueidentifier | IN | |
@DONOTEMAILREASONCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GROUPADD
(
@ID uniqueidentifier output,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(300) = '',
@GROUPTYPEID uniqueidentifier,
@GIVESANONYMOUSLY bit = 0,
@ADDRESSTYPECODEID uniqueidentifier = null,
@COUNTRYID uniqueidentifier = null,
@ADDRESSBLOCK nvarchar(150) = '',
@CITY nvarchar(50) = '',
@STATEID uniqueidentifier = null,
@POSTCODE nvarchar(12) = '',
@PHONETYPECODEID uniqueidentifier = null,
@NUMBER nvarchar(100) = '',
@EMAILADDRESSTYPECODEID uniqueidentifier = null,
@EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
@MEMBERS xml = null,
@WEBADDRESS dbo.UDT_WEBADDRESS = '',
@PRIMARYCONTACTID uniqueidentifier = null,
@NEWMEMBERSEARCHID uniqueidentifier = null,
@STARTDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@DONOTMAIL bit = 0,
@DONOTMAILREASONCODEID uniqueidentifier = null,
@SKIP_ADDING_SECURITYGROUPS bit=0,
@OMITFROMVALIDATION bit = 0,
@CART nvarchar(10) = '',
@DPC nvarchar(8) = '',
@LOT nvarchar(5) = '',
@COUNTYCODEID uniqueidentifier = null,
@CONGRESSIONALDISTRICTCODEID uniqueidentifier = null,
@LASTVALIDATIONATTEMPTDATE datetime = null,
@VALIDATIONMESSAGE nvarchar(200) = '',
@CERTIFICATIONDATA integer = 0,
@SKIP_ADDING_SITES bit=0,
@DONOTEMAIL bit = 0,
@DONOTCALL bit = 0,
@INFOSOURCECODEID uniqueidentifier = null,
@ISCONFIDENTIAL bit = 0,
@DONOTCALLREASONCODEID uniqueidentifier = null,
@PHONE_ISCONFIDENTIAL bit = 0,
@ADDTYPE tinyint = 0,
@IDSETREGISTERID uniqueidentifier = null,
@DONOTEMAILREASONCODEID uniqueidentifier = null
)
as
set nocount on;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @STARTDATE is not null
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)
if @STARTDATE > @CURRENTDATE
begin
raiserror('ERR_STARTDATE_IN_FUTURE', 13, 1);
return 1;
end
if @ID is null
set @ID = newid();
if @DONOTMAIL = 0
set @DONOTMAILREASONCODEID = null
if @DONOTCALL = 0
set @DONOTCALLREASONCODEID = null
if @DONOTEMAIL = 0
set @DONOTEMAILREASONCODEID = null
begin try
insert into dbo.CONSTITUENT
(
ID,
KEYNAME,
GIVESANONYMOUSLY,
ISGROUP,
WEBADDRESS,
ISCONSTITUENT,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
@NAME,
@GIVESANONYMOUSLY,
1,
@WEBADDRESS,
1,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
)
insert into dbo.GROUPDATA
(
ID,
GROUPTYPECODE,
GROUPTYPEID,
STARTDATE,
DESCRIPTION,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
1, -- Custom group
@GROUPTYPEID,
@STARTDATE,
@DESCRIPTION,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
)
if
(
(@STATEID is not null)
or (coalesce(@ADDRESSBLOCK,'') <> '')
or (coalesce(@CITY,'') <> '')
or (coalesce(@POSTCODE,'') <> '')
or (@ADDRESSTYPECODEID is not null)
or (@COUNTRYID is not null)
or (@DONOTMAIL = 1)
or (@DONOTMAILREASONCODEID is not null)
)
begin
declare @ADDRESSID uniqueidentifier;
set @ADDRESSID = newID();
insert into dbo.ADDRESS
(
ID,
CONSTITUENTID,
ADDRESSTYPECODEID,
ISPRIMARY,
COUNTRYID,
STATEID,
ADDRESSBLOCK,
CITY,
POSTCODE,
CART,
DPC,
LOT,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,
DONOTMAIL,
DONOTMAILREASONCODEID,
ISCONFIDENTIAL
)
values
(
@ADDRESSID,
@ID,
@ADDRESSTYPECODEID,
1,
@COUNTRYID,
@STATEID,
@ADDRESSBLOCK,
@CITY,
@POSTCODE,
@CART,
@DPC,
@LOT,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE,
@DONOTMAIL,
@DONOTMAILREASONCODEID,
@ISCONFIDENTIAL
)
insert into dbo.ADDRESSVALIDATIONUPDATE
(
[ID],
[COUNTYCODEID],
[CONGRESSIONALDISTRICTCODEID],
[LASTVALIDATIONATTEMPTDATE],
[VALIDATIONMESSAGE],
[CERTIFICATIONDATA],
[OMITFROMVALIDATION],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@ADDRESSID,
@COUNTYCODEID,
@CONGRESSIONALDISTRICTCODEID,
@CURRENTDATE,
@VALIDATIONMESSAGE,
@CERTIFICATIONDATA,
@OMITFROMVALIDATION,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
declare @PHONE_COUNTRYID uniqueidentifier = @COUNTRYID
if @COUNTRYID is null
exec @PHONE_COUNTRYID = dbo.UFN_COUNTRY_GETDEFAULT;
if coalesce(@NUMBER, '') <> ''
begin
insert into dbo.PHONE
(
CONSTITUENTID,
PHONETYPECODEID,
NUMBER,
COUNTRYID,
ISPRIMARY,
DONOTCALL,
INFOSOURCECODEID,
DONOTCALLREASONCODEID,
ISCONFIDENTIAL,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
@PHONETYPECODEID,
@NUMBER,
@PHONE_COUNTRYID,
1,
@DONOTCALL,
@INFOSOURCECODEID,
@DONOTCALLREASONCODEID,
@PHONE_ISCONFIDENTIAL,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
)
if @PRIMARYCONTACTID is not null
exec dbo.USP_GROUP_COPYPHONE @ID, @PRIMARYCONTACTID, @NUMBER, @CHANGEAGENTID;
end
if coalesce(@EMAILADDRESS, '') <> ''
begin
insert into dbo.EMAILADDRESS
(
CONSTITUENTID,
EMAILADDRESSTYPECODEID,
EMAILADDRESS,
ISPRIMARY,
DONOTEMAIL,
INFOSOURCECODEID,
DONOTEMAILREASONCODEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
@EMAILADDRESSTYPECODEID,
@EMAILADDRESS,
1,
@DONOTEMAIL,
@INFOSOURCECODEID,
@DONOTEMAILREASONCODEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
)
end
if @ADDTYPE = 0 -- Add single member
begin
declare @MEMBERSTOINSERT table
(
GROUPMEMBERID uniqueidentifier,
MEMBERID uniqueidentifier,
ISPRIMARY bit
)
if (@ISADMIN = 0 and
(
(@APPUSER_IN_NONRACROLE = 0
and exists(
select T.c.value('(MEMBERID)[1]','uniqueidentifier')
from @MEMBERS.nodes('/MEMBERS/ITEM') T(c)
where
T.c.value('(MEMBERID)[1]','uniqueidentifier') is not null
and
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(
@CURRENTAPPUSERID, T.c.value('(MEMBERID)[1]','uniqueidentifier'), @APPUSER_IN_NOSECGROUPROLE) = 0))
or
(@APPUSER_IN_NONSITEROLE = 0
and exists(
select T.c.value('(MEMBERID)[1]','uniqueidentifier')
from @MEMBERS.nodes('/MEMBERS/ITEM') T(c)
where
T.c.value('(MEMBERID)[1]','uniqueidentifier') is not null
and
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(
@CURRENTAPPUSERID, T.c.value('(MEMBERID)[1]','uniqueidentifier'), @APPUSER_IN_NOSITEROLE) = 0))
)
)
begin
raiserror ('ERR_MEMBER_NOACCESS',13,1);
return 0;
end
insert into @MEMBERSTOINSERT
(
GROUPMEMBERID,
MEMBERID,
ISPRIMARY
)
select
newid(),
T.c.value('(MEMBERID)[1]','uniqueidentifier'),
T.c.value('(ISPRIMARY)[1]','bit')
from @MEMBERS.nodes('/MEMBERS/ITEM') T(c)
where T.c.value('(MEMBERID)[1]','uniqueidentifier') is not null
if (exists(select top 1 MEMBERID from @MEMBERSTOINSERT group by MEMBERID having count(*) > 1))
begin
raiserror('ERR_MEMBERSUNIQUE', 13, 1);
return 1;
end
insert into dbo.GROUPMEMBER
(
ID,
GROUPID,
MEMBERID,
ISPRIMARY,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
GROUPMEMBERID,
@ID,
MEMBERID,
0,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @MEMBERSTOINSERT
insert into dbo.GROUPMEMBERDATERANGE
(
GROUPMEMBERID,
DATEFROM,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
GROUPMEMBERID,
@STARTDATE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @MEMBERSTOINSERT
declare @PRIMARYMEMBERID uniqueidentifier
select @PRIMARYMEMBERID=GROUPMEMBERID
from @MEMBERSTOINSERT
where ISPRIMARY=1
if @PRIMARYMEMBERID is not null
begin
update dbo.GROUPMEMBER
set
ISPRIMARY = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @PRIMARYMEMBERID
end
end
else
begin
exec dbo.USP_GROUPMEMBERADDBULK @ID, @CHANGEAGENTID, @ID, @IDSETREGISTERID, default, @STARTDATE, 1, default, default, @CURRENTAPPUSERID;
end
/*Start security groups*/
if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@ID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end security groups*/
/*Start sites*/
if coalesce(@SKIP_ADDING_SITES,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@ID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end sites*/
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0