USP_DATAFORMTEMPLATE_EDITLOAD_EMAILADDRESS

The load procedure used by the edit dataform template "Email Address Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@EMAILADDRESSTYPECODEID uniqueidentifier INOUT Type
@EMAILADDRESS UDT_EMAILADDRESS INOUT Email address
@PRIMARY bit INOUT Set as primary email address
@DONOTEMAIL bit INOUT Do not send email to this address
@SPOUSENAME nvarchar(154) INOUT
@SPOUSEHASMATCHINGEMAILADDRESS bit INOUT
@UPDATEMATCHINGSPOUSEEMAILADDRESS bit INOUT Update matching email information for spouse
@ISHOUSEHOLD bit INOUT
@ISHOUSEHOLDMEMBER bit INOUT
@UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit INOUT Update matching email addresses in household
@MATCHINGHOUSEHOLDMEMBERS xml INOUT Household members
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_EMAILADDRESS (
                    @ID uniqueidentifier,
                    @DATALOADED bit = 0 output,
                    @EMAILADDRESSTYPECODEID uniqueidentifier = null output,
                    @EMAILADDRESS dbo.UDT_EMAILADDRESS = null output,
                    @PRIMARY bit = null output,
                    @DONOTEMAIL bit = null output,
                    @SPOUSENAME nvarchar(154) = null output,
                    @SPOUSEHASMATCHINGEMAILADDRESS bit = null output,
                    @UPDATEMATCHINGSPOUSEEMAILADDRESS bit = null output,
                    @ISHOUSEHOLD bit = null output,
                    @ISHOUSEHOLDMEMBER bit = null output,
                    @UPDATEMATCHINGHOUSEHOLDEMAILADDRESS bit = null output,
                    @MATCHINGHOUSEHOLDMEMBERS xml = null output,
                    @TSLONG bigint = 0 output
                )
                as
                    set nocount on;

                    declare @SPOUSEID uniqueidentifier;

                    set @DATALOADED = 0;
                    set @TSLONG = 0;
                    set @SPOUSEHASMATCHINGEMAILADDRESS = 0;
                    set @UPDATEMATCHINGSPOUSEEMAILADDRESS = 0;

                    if exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP') begin
                        select
                            @DATALOADED = 1,
                            @EMAILADDRESSTYPECODEID = EMAILADDRESS.EMAILADDRESSTYPECODEID,
                            @EMAILADDRESS = EMAILADDRESS.EMAILADDRESS,
                            @PRIMARY = EMAILADDRESS.ISPRIMARY,
                            @DONOTEMAIL = EMAILADDRESS.DONOTEMAIL,
                            @SPOUSEID = SPOUSE.ID,
                            @SPOUSENAME = SPOUSE.NAME,
                            @TSLONG = EMAILADDRESS.TSLONG
                        from 
                            dbo.EMAILADDRESS
                            left join dbo.RELATIONSHIP on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = EMAILADDRESS.CONSTITUENTID and RELATIONSHIP.ISSPOUSE = 1
                            left join dbo.CONSTITUENT as SPOUSE on SPOUSE.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID
                        where 
                            EMAILADDRESS.ID = @ID;

                        if exists (
                            select EMAILADDRESS.ID
                            from dbo.EMAILADDRESS
                            where
                                EMAILADDRESS.CONSTITUENTID = @SPOUSEID and
                                EMAILADDRESS.EMAILADDRESS = @EMAILADDRESS
                            ) begin
                                set @SPOUSEHASMATCHINGEMAILADDRESS = 1;    
                                set @UPDATEMATCHINGSPOUSEEMAILADDRESS = 1;
                        end
                    end
                    else begin
                        select
                            @DATALOADED = 1,
                            @EMAILADDRESSTYPECODEID = EMAILADDRESS.EMAILADDRESSTYPECODEID,
                            @EMAILADDRESS = EMAILADDRESS.EMAILADDRESS,
                            @PRIMARY = EMAILADDRESS.ISPRIMARY,
                            @DONOTEMAIL = EMAILADDRESS.DONOTEMAIL,
                            @TSLONG = EMAILADDRESS.TSLONG
                        from
                            dbo.EMAILADDRESS
                        where
                            EMAILADDRESS.ID = @ID;
                    end

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

                    declare @CONSTITUENTID uniqueidentifier;
                    select @CONSTITUENTID = CONSTITUENTID from dbo.EMAILADDRESS where ID = @ID;

                    set @ISHOUSEHOLD = dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID);
                    set @ISHOUSEHOLDMEMBER = case when exists (
                        select 1 
                        from dbo.GROUPMEMBER GM 
                        left outer join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
                        left outer join dbo.GROUPDATA GD on GD.ID = GM.GROUPID
                        where GM.MEMBERID = @CONSTITUENTID 
                        and GD.GROUPTYPECODE = 0
                        and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                            or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
                    ) then 1 else 0 end;                                

                    set @MATCHINGHOUSEHOLDMEMBERS = (
                        select
                            CONSTITUENTID,
                            NAME,
                            RELATIONSHIPTOPRIMARY
                        from
                            dbo.UFN_EMAILADDRESS_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @EMAILADDRESS, @EMAILADDRESSTYPECODEID)
                        for xml raw('ITEM'), type, elements, root('MATCHINGHOUSEHOLDMEMBERS'), binary base64
                    );

                    return 0;