USP_WPSOCIAL_ADD

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@WEALTHID uniqueidentifier IN
@SOURCE nvarchar(100) IN
@ORIGINALID int IN
@FULLHASH nvarchar(32) IN
@PARTIALHASH nvarchar(32) IN
@MC nvarchar(3) IN
@RECURSIVEMATCH bit IN
@FULLNAME nvarchar(1200) IN
@GENDERCODE tinyint IN
@LOCATION nvarchar(4000) IN
@OCCUPATION nvarchar(2048) IN
@COMPANY nvarchar(4000) IN
@SOCIALMEDIARATING int IN
@INFLUENCERATING int IN
@OUTREACHRATING int IN
@SOCIALMEDIARATINGATTRIBUTEID nvarchar(32) IN
@INFLUENCERATINGATTRIBUTEID nvarchar(32) IN
@OUTREACHRATINGATTRIBUTEID nvarchar(32) IN

Definition

Copy


CREATE procedure dbo.USP_WPSOCIAL_ADD (
                @ID uniqueidentifier = null output,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTAPPUSERID uniqueidentifier = null,
                @WEALTHID uniqueidentifier,
                @SOURCE nvarchar(100),
                @ORIGINALID int = 0,
                @FULLHASH nvarchar(32) = '',
                @PARTIALHASH nvarchar(32) = '',
                @MC nvarchar(3) = '',
                @RECURSIVEMATCH bit = 0,
        @FULLNAME nvarchar(1200) = '',
        @GENDERCODE tinyint = 0,
        @LOCATION nvarchar(4000) = '',
        @OCCUPATION nvarchar(2048) = '',
        @COMPANY nvarchar(4000) = '',
        @SOCIALMEDIARATING int = -1,
        @INFLUENCERATING int = -1,
        @OUTREACHRATING int = -1,
                @SOCIALMEDIARATINGATTRIBUTEID nvarchar(32) = '',
                @INFLUENCERATINGATTRIBUTEID nvarchar(32) = '',
                @OUTREACHRATINGATTRIBUTEID nvarchar(32) = ''
            )
as
begin
  set nocount on;

  -- do work


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

  begin try

        declare @CURRENTDATE datetime;
        set @CURRENTDATE = getdate();

        --Get any existing ID

        select 
            @ID = ID 
        from 
            dbo.WPSOCIAL
        where 
            ID=@WEALTHID;

        -- Record exists

        if @ID is not null 
        begin
      if not exists(select 1 from dbo.WPSOCIAL where @ID = ID and FULLHASH=@FULLHASH
            begin
                --Record exists but needs to be updated


                update
                    dbo.WPSOCIAL
        set
                    SOURCE = coalesce(nullif(@SOURCE, ''), SOURCE),
          FULLNAME = coalesce(@FULLNAME, ''),
          GENDERCODE = coalesce(@GENDERCODE, 0),
          SOCIALMEDIARATING = coalesce(@SOCIALMEDIARATING, 0),
          INFLUENCERATING = coalesce(@INFLUENCERATING, 0),
          OUTREACHRATING = coalesce(@OUTREACHRATING, 0),
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE,
          FULLHASH = coalesce(@FULLHASH, '')
        where @ID = ID
      end

        end    else begin

      --Record is new and needs to be Added

            if @ID is null
                set @ID = @WEALTHID;

      insert into WPSOCIAL (
          ID,
          ADDEDBYID,
          CHANGEDBYID,
          DATEADDED, 
          DATECHANGED,
          SOURCE,
          FULLNAME,
          GENDERCODE,
          LOCATION,
          OCCUPATION,
          COMPANY,
          SOCIALMEDIARATING,
          INFLUENCERATING,
          OUTREACHRATING,
        FULLHASH
      ) values
      (
          @ID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE
          @CURRENTDATE,
          coalesce(@SOURCE, ''),
          coalesce(@FULLNAME, ''),
                coalesce(@GENDERCODE, 0),
          coalesce(@LOCATION, ''),
          coalesce(@OCCUPATION, ''),
          coalesce(@COMPANY, ''),
          coalesce(@SOCIALMEDIARATING, 0),
          coalesce(@INFLUENCERATING, 0),
          coalesce(@OUTREACHRATING, 0),
                coalesce(@FULLHASH, '')
      )
    end

    Update dbo.WEALTH set SOCIALMEDIADATE = @CURRENTDATE where @ID = ID;

    -- Add/Edit social attribute scores

    -- This part expects that a value was provided (> -1) and the ID for this attribute was already populated.

    -- We mainly chose this for performance reasons, where calling each attribute once per screen was far better than once per constituent.


    declare @ADDRATINGS bit = 0;
        declare @PARAMETERDEFINITION nvarchar(500);
    set @PARAMETERDEFINITION = N'@PARENTID uniqueidentifier, @CHANGEAGENTID uniqueidentifier, @VALUE int, @STARTDATE datetime';

    if @SOCIALMEDIARATING > -1 and isnull(@SOCIALMEDIARATINGATTRIBUTEID, '') <> ''
    begin
      set @ADDRATINGS = 1;
          declare @SQLTOEXECSMR nvarchar(max);
      set @SQLTOEXECSMR = 
          N'
          declare @ATTRIBUTEID uniqueidentifier;
        select @ATTRIBUTEID = ID from dbo.ATTRIBUTE' + @SOCIALMEDIARATINGATTRIBUTEID + ' where ID = @PARENTID;

        if @ATTRIBUTEID is not null begin
          exec dbo.USP_ATTRIBUTE' + @SOCIALMEDIARATINGATTRIBUTEID + '_EDIT @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;          
        end else begin
          exec dbo.USP_ATTRIBUTE' + @SOCIALMEDIARATINGATTRIBUTEID + '_ADD @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;
        end
      ';

      exec sp_executesql @SQLTOEXECSMR, @PARAMETERDEFINITION,  @PARENTID = @WEALTHID, @CHANGEAGENTID = @CHANGEAGENTID, @VALUE = @SOCIALMEDIARATING, @STARTDATE = @CURRENTDATE;

    end

    if @INFLUENCERATING > -1 and isnull(@INFLUENCERATINGATTRIBUTEID, '') <> ''
    begin
      set @ADDRATINGS = 1;
          declare @SQLTOEXECSMI nvarchar(max);
      set @SQLTOEXECSMI = 
          N'
          declare @ATTRIBUTEID uniqueidentifier;
        select @ATTRIBUTEID = ID from dbo.ATTRIBUTE' + @INFLUENCERATINGATTRIBUTEID + ' where ID = @PARENTID;

        if @ATTRIBUTEID is not null begin
          exec dbo.USP_ATTRIBUTE' + @INFLUENCERATINGATTRIBUTEID + '_EDIT @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;          
        end else begin
          exec dbo.USP_ATTRIBUTE' + @INFLUENCERATINGATTRIBUTEID + '_ADD @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;
        end
      ';

      exec sp_executesql @SQLTOEXECSMI, @PARAMETERDEFINITION,  @PARENTID = @WEALTHID, @CHANGEAGENTID = @CHANGEAGENTID, @VALUE = @INFLUENCERATING, @STARTDATE = @CURRENTDATE;

    end

    if @OUTREACHRATING > -1 and isnull(@OUTREACHRATINGATTRIBUTEID, '') <> ''
    begin
      set @ADDRATINGS = 1;
          declare @SQLTOEXECSMO nvarchar(max);
      set @SQLTOEXECSMO = 
          N'
          declare @ATTRIBUTEID uniqueidentifier;
        select @ATTRIBUTEID = ID from dbo.ATTRIBUTE' + @OUTREACHRATINGATTRIBUTEID + ' where ID = @PARENTID;

        if @ATTRIBUTEID is not null begin
          exec dbo.USP_ATTRIBUTE' + @OUTREACHRATINGATTRIBUTEID + '_EDIT @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;          
        end else begin
          exec dbo.USP_ATTRIBUTE' + @OUTREACHRATINGATTRIBUTEID + '_ADD @ID = @PARENTID, @VALUE = @VALUE, @STARTDATE = @STARTDATE, @CHANGEAGENTID = @CHANGEAGENTID;
        end
      ';

      exec sp_executesql @SQLTOEXECSMO, @PARAMETERDEFINITION,  @PARENTID = @WEALTHID, @CHANGEAGENTID = @CHANGEAGENTID, @VALUE = @OUTREACHRATING, @STARTDATE = @CURRENTDATE;

    end

    if @ADDRATINGS = 1
    begin
      --Add a modeling and propensity record to be associated with the M&P attributes we just added.

      exec dbo.USP_MODELINGANDPROPENSITY_ADDIFDOESNOTEXIST @WEALTHID, @CHANGEAGENTID;
    end

  end try
  begin catch
    exec dbo.USP_RAISE_ERROR;
  end catch

  return 0;

end