USP_DATAFORMTEMPLATE_ADD_FAFEVENT

The save procedure used by the add dataform template "FAF Event Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@STARTDATE datetime IN Start date
@STARTTIME UDT_HOURMINUTE IN Start time
@ENDDATE datetime IN End date
@ENDTIME UDT_HOURMINUTE IN End time
@CAPACITY int IN Capacity
@EVENTLOCATIONID uniqueidentifier IN Location
@EVENTLOCATIONCONTACTID uniqueidentifier IN Event contact
@COPYFROMEVENTID uniqueidentifier IN Copy configuration from
@ATTRIBUTEDEFINED bit IN Event attributes defined
@SITES xml IN
@EVENTCATEGORYCODEID uniqueidentifier IN Category
@APPEALID uniqueidentifier IN Appeal
@PREVIOUSYEAREVENTID uniqueidentifier IN Previous event
@EVENTYEAR UDT_YEAR IN Report year
@LOOKUPID nvarchar(100) IN Alternate lookup ID
@SUPPORTPHONE nvarchar(20) IN Support phone
@SUPPORTURL UDT_WEBADDRESS IN Support URL
@EVENTTYPECODE tinyint IN Event type
@EVENTSUPPORTEMAIL UDT_EMAILADDRESS IN Event support email
@CLIENTSITESID int IN
@ISFIRSTFAF bit IN
@BATCHNUMBER nvarchar(200) IN
@FAFPROGRAMID uniqueidentifier IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_FAFEVENT
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,    
  @NAME nvarchar(100) = '',
  @DESCRIPTION nvarchar(255) = '',    
  @STARTDATE datetime,
  @STARTTIME dbo.UDT_HOURMINUTE = null,
  @ENDDATE datetime = null,
  @ENDTIME dbo.UDT_HOURMINUTE = null,                        
  @CAPACITY int = 0,
  @EVENTLOCATIONID uniqueidentifier = null,
  @EVENTLOCATIONCONTACTID uniqueidentifier = null,
  @COPYFROMEVENTID uniqueidentifier = null,  
  @ATTRIBUTEDEFINED bit = 0,
  @SITES xml = null,
  @EVENTCATEGORYCODEID uniqueidentifier = null,
  @APPEALID uniqueidentifier = null,
  @PREVIOUSYEAREVENTID uniqueidentifier = null,
  @EVENTYEAR UDT_YEAR = null,
  @LOOKUPID nvarchar(100) = '',
  @SUPPORTPHONE nvarchar(20) = '',
  @SUPPORTURL UDT_WEBADDRESS = '',
  @EVENTTYPECODE tinyint = 0,
  @EVENTSUPPORTEMAIL UDT_EMAILADDRESS = '',
  @CLIENTSITESID int = 0,
  @ISFIRSTFAF bit = 0,
  @BATCHNUMBER nvarchar(200) = '',
  @FAFPROGRAMID uniqueidentifier = null
)
as                    
set nocount on;

declare @CURRENTDATE datetime,
        @idOfTargetSite int,
        @idOfSiteToClone int,
        @NewGuid uniqueidentifier,
        @CopyBatchGUID uniqueidentifier,
        @NewName varchar(50),
        @UserID int,
        @CopyDepth int,
        @CopySecurity bit,
        @DESIGNATIONUSERID nvarchar(200),
        @ClientsID int
        @MAINEVENTID uniqueidentifier = null,
        @DEFAULTSITEID uniqueidentifier = null,
        @dSite nvarchar(200),
        @importbyuser uniqueidentifier = @CURRENTAPPUSERID;

if @ID is null    
    set @ID = newid();    

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

set @CURRENTDATE = getdate();

select @DEFAULTSITEID = SITEID from dbo.UFN_SITE_MYSITE_GET(@CURRENTAPPUSERID)
if dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID) = 1 
begin
  if @SITES is null
    raiserror('Site is required.',13,1)  
  else
    begin      
      select @DEFAULTSITEID = SITEID from dbo.UFN_SITE_MYSITE_GET(@CURRENTAPPUSERID)
      set @dSite = '<SITEID>'+ cast(@DEFAULTSITEID as nvarchar(40)) +'</SITEID>';
      if CAST(@SITES AS NVARCHAR(MAX)) NOT LIKE '%'+@dSite+'%'
        raiserror('You did not assign your default site to the event.  To continue, edit site security and add your default site.', 13,1)

    end
end

if not exists(select top 1 EA.EMAILADDRESS from CONSTITUENT C join EMAILADDRESS EA on C.ID = EA.CONSTITUENTID where C.ID = @EVENTLOCATIONCONTACTID)
  raiserror('ContactNoEmail',13,1)

if @ENDDATE is null
    set @ENDDATE = @STARTDATE;

/* TMV 02/28/2007 CR268233-022607*/
if @CAPACITY is null
    set @CAPACITY = 0;

if @ISFIRSTFAF = 1
  exec dbo.USP_FAFEVENT_INITIALIZE_PARAMETER

begin try

    exec dbo.USP_EVENTSITE_VALIDATESITES @SITES

  /* FAF considers appeal same as event, so we create appeal behind scene to conform with current event model (team fundraising)*/

  declare @APPEALDESCRIPTION nvarchar(255)
  set @APPEALID = newID()
  if @DESCRIPTION = '' 
    set @APPEALDESCRIPTION = @NAME
  else
    set @APPEALDESCRIPTION = @DESCRIPTION                
  declare @appealindex int = 1
  declare @APPEALNAME nvarchar(100)
  set @APPEALNAME = @NAME
  while exists(select ID from dbo.APPEAL where NAME = @APPEALNAME)
  begin
       set @APPEALNAME = @APPEALNAME + cast(@appealindex as nvarchar(3))
       set @appealindex = @appealindex + 1
  end

  exec dbo.USP_DATAFORMTEMPLATE_ADD_APPEAL @ID=@APPEALID output, @CHANGEAGENTID=@CHANGEAGENTID, @NAME=@APPEALNAME, @DESCRIPTION=@APPEALDESCRIPTION
            @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @SITEID=@DEFAULTSITEID, @CURRENTAPPUSERID=@CURRENTAPPUSERID;

    insert into dbo.EVENT
        (ID, NAME, DESCRIPTION, STARTDATE, STARTTIME, ENDDATE, ENDTIME, CAPACITY, EVENTLOCATIONID, EVENTLOCATIONCONTACTID, MAINEVENTID, EVENTCATEGORYCODEID, APPEALID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
    values
        (@ID, @NAME, @DESCRIPTION, @STARTDATE, @STARTTIME, @ENDDATE, @ENDTIME, @CAPACITY, @EVENTLOCATIONID, @EVENTLOCATIONCONTACTID, @MAINEVENTID, @EVENTCATEGORYCODEID, @APPEALID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

    exec dbo.USP_EVENT_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE 

  select @DESIGNATIONUSERID = LOOKUPID from dbo.EVENT where ID = @ID

  set @DESIGNATIONUSERID = 'FAF-DES-' + @DESIGNATIONUSERID

  exec dbo.USP_FAFEVENTDEFAULTDESIGNATION_ADD_EDIT @EVENTID=@ID, @APPEALID=@APPEALID, @NAME=@NAME, @DESCRIPTION=@APPEALDESCRIPTION, @LOOKUPID=@DESIGNATIONUSERID, @CURRENTAPPUSERID=@CURRENTAPPUSERID, @SITEID=@DEFAULTSITEID, @CHANGEAGENTID=@CHANGEAGENTID

   /* Site/FAF event creation starts */   

  select @UserID = [ClientUsers].ID from BBNCUSERMAP 
  join dbo.[ClientUsers] on [ClientUsers].[UserName] = BBNCUSERMAP.BBNCUSERNAME
  where BBNCUSERMAP.ID = @CURRENTAPPUSERID

  if @UserID is null
    set @UserID = 1

  set @NewGuid = NEWID()
  set @CopyBatchGUID = NEWID()
  set @NewName = @NAME

  set @CopyDepth = 3  /* ALL */
  set @CopySecurity = 1 /* true */

  select @idOfTargetSite = Value, @idOfSiteToClone = Value from dbo.Setting where ID = 1 
  select @ClientsID = value from dbo.Setting where ID = 2

  if @COPYFROMEVENTID is not null 
    select @idOfTargetSite=CLIENTSITESID, @idOfSiteToClone=CLIENTSITESID from dbo.EVENTEXTENSION where EVENTID = @COPYFROMEVENTID

  exec dbo.spClone_ClientSites @PKID = @idOfTargetSite output, @CurrentUsersID=@UserID,@NewName=@NewName, @NewGuid = @NewGuid, @CopyBatchGUID=@CopyBatchGUID

  select @ClientsID=ClientsID from dbo.ClientSites where ID=@idOfTargetSite

  set @CLIENTSITESID = @idOfTargetSite 

  if @COPYFROMEVENTID is not null 
    begin
      exec dbo.USP_FAFEVENTCOPY_WRAPPER @SOURCEID=@COPYFROMEVENTID,@TARGETEVENTID=@ID,@COPYBATCHGUID=@CopyBatchGUID,@CHANGEAGENTID = @CHANGEAGENTID,@EVENTYEAR = @EVENTYEAR,
        @SUPPORTURL = @SUPPORTURL, @SUPPORTPHONE = @SUPPORTPHONE, @LOOKUPEVENTID = @LOOKUPID, @EVENTTYPECODE = @EVENTTYPECODE
            @PRIORYEAREVENTID = @PREVIOUSYEAREVENTID, @EVENTSUPPORTEMAIL = @EVENTSUPPORTEMAIL, @CLIENTSITESID=@idOfTargetSite,@USERID=@UserID, @SITEID=@DEFAULTSITEID,
            @FAFPROGRAMID = @FAFPROGRAMID;            

       exec dbo.spCloneSite_DeepCopy @SourceClientSitesID=@idOfSiteToClone, @TargetClientSitesID=@idOfTargetSite, @CurrentUserID=@UserID, @CopyBatchGUID=@CopyBatchGUID, @CopyDepth=@CopyDepth,@CopySecurity=@CopySecurity

       IF NOT EXISTS(SELECT ET.ID FROM dbo.EmailTemplate ET (NOLOCK) INNER JOIN dbo.EVENTEMAILTEMPLATE EET (NOLOCK)
          ON ET.ID = EET.EMAILTEMPLATEID AND EET.CONFIRMATIONTYPECODE = 33 WHERE EET.EVENTID = @ID)
       EXEC USP_FAF_DEFAULT_MARKETING_TEMPLATE_ADD @EVENTID = @ID, @appuserID = @CURRENTAPPUSERID, @USERID = @USERID, @CLIENTSID = @CLIENTSID;

       EXEC USP_FAF_ADHOCQUERY_LIST_COPY @EVENTID = @ID, @OLDEVENTID = @COPYFROMEVENTID, @APPUSERID = @CURRENTAPPUSERID, @USERID = @USERID, @CLIENTSID = @CLIENTSID;

       EXEC USP_FAF_DEFAULT_MARKETING_MESSAGES_COPY @EVENTID = @ID, @OLDEVENTID = @COPYFROMEVENTID, @APPUSERID = @CURRENTAPPUSERID, @USERID = @USERID, @CLIENTSID = @CLIENTSID;


  end
  else
    begin
      exec dbo.USP_DATAFORMTEMPLATE_ADD_EVENT_EXTENSION @CHANGEAGENTID = @CHANGEAGENTID, @EVENTID =  @ID, @EVENTYEAR = @EVENTYEAR
          @SUPPORTURL = @SUPPORTURL, @SUPPORTPHONE = @SUPPORTPHONE, @LOOKUPEVENTID = @LOOKUPID, @EVENTTYPECODE = @EVENTTYPECODE
          @PRIORYEAREVENTID = @PREVIOUSYEAREVENTID, @EVENTSUPPORTEMAIL = @EVENTSUPPORTEMAIL, @CLIENTSITESID=@idOfTargetSite, @SITEID=@DEFAULTSITEID,
          @FAFPROGRAMID = @FAFPROGRAMID;  

      exec dbo.USP_FAFDEFAULTOPTIONS_CREATE @EVENTID=@ID, @CHANGEAGENTID = @CHANGEAGENTID
      exec dbo.USP_FAFDEFAULTACKNOWLEDGEMENTS @EVENTID=@ID, @CLIENTSITESID=@idOfTargetSite, @USERID=@UserID, @CLIENTSID=@ClientsID, @CHANGEAGENTID = @CHANGEAGENTID
      exec dbo.USP_FAFDEFAULTNOTIFICATIONS @EVENTID=@ID, @CLIENTSITESID=@idOfTargetSite, @USERID=@UserID, @CLIENTSID=@ClientsID, @CHANGEAGENTID = @CHANGEAGENTID
      exec dbo.USP_FAFDEFAULTCOMMUNICATIONTEMPLATES @EVENTID=@ID, @CLIENTSITESID=@idOfTargetSite, @USERID=@UserID, @CHANGEAGENTID = @CHANGEAGENTID
      exec dbo.USP_FAFDEFAULTONLINECONFIRMATIONS @EVENTID=@ID, @CLIENTSITESID=@idOfTargetSite, @USERID=@UserID, @CLIENTSID=@ClientsID, @CHANGEAGENTID = @CHANGEAGENTID

      -- Create Default Social Network transaction types of the new event
      exec dbo.USP_FAFDEFAULTSOCIALNETWORK @EVENTID=@ID, @CHANGEAGENTID = @CHANGEAGENTID

      -- Create Default Marketing Template

      exec dbo.USP_FAF_DEFAULT_MARKETING_TEMPLATE_ADD @EVENTID = @ID, @APPUSERID = @CURRENTAPPUSERID, @CHANGEAGENTID = @CHANGEAGENTID, @USERID = @USERID, @CLIENTSID = @CLIENTSID

      -- Create Default Marketing Messages

      exec dbo.USP_FAF_DEFAULT_MARKETING_MESSAGES @EVENTID = @ID, @APPUSERID = @CURRENTAPPUSERID, @CHANGEAGENTID = @CHANGEAGENTID, @USERID = @USERID, @CLIENTSID = @CLIENTSID

      if @BATCHNUMBER <> '' 
        set @importbyuser = null

      insert into dbo.EVENTIMPORT
        (ID, IMPORTATTEMPT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, ISIMPORTINGBYUSERID, BATCHNUMBER)
      values 
        (@ID, 0, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @importbyuser, @BATCHNUMBER);

    end  


  /* create fake URL */

  /*
  declare @protocol nvarchar(5), @domain nvarchar(250)

  select @protocol = item from dbo.UFN_STRING_PARSER('/', @url ) where id = 1
  select @domain= item from dbo.UFN_STRING_PARSER('/', @url ) where id = 2

  set @url = @protocol + '//' + @domain + '/' + replace(@NAME, ' ', '-') + '/'

  */    

  declare @url nvarchar(1024)
    select @url = value from dbo.CMSSITESETTING where ClientSitesID = 1 and ENUMID = 11

  declare @INTEGRATIONURL nvarchar(1024)          
  set @INTEGRATIONURL = dbo.UFN_BBNC_URL();

  declare @siteName nvarchar(200)
  set @siteName = replace(@NAME, ' ', '')
  set @siteName = dbo.UFN_FAFEVENT_VALIDEVENTURL(@siteName)

  if @INTEGRATIONURL = @url  
    set @url = @url + @siteName + '/'
  else
    set @url = @INTEGRATIONURL + @siteName + '/'

  declare @index int = 1
  while exists(select value from dbo.CMSSITESETTING where ENUMID = 11 and VALUE = @url)
  begin
      set @sitename = @siteName + cast(@index as nvarchar(3))
      set @index = @index + 1
      set @url = @integrationurl + @siteName + '/'
  end

  update dbo.CMSSITESETTING
  set VALUE = @url 
  where ENUMID = 11 and CLIENTSITESID = @idOfTargetSite

  update dbo.CMSSITESETTING
  set VALUE = @url + 'Page.aspx' 
  where ENUMID = 10 and CLIENTSITESID = @idOfTargetSite

  /*update dbo.ClientSites
  set ParentSiteID = @idOfSiteToClone
  where ID = @idOfTargetSite*/

  /* site creation end */ 

end try

begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
end catch

return 0;