USP_BBACONSTITUENTFILECONSTITUENCIESIMPORT

This procedure is used by the Target Analytics Constituent File Import Record Operation for saving the constituencies from a Target Analytics Constituent Import File to the database.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier INOUT
@CONSTITUENCYCODEID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@DATEFROM datetime IN
@DATETO datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BBACONSTITUENTFILECONSTITUENCIESIMPORT (
                @CONSTITUENTID uniqueidentifier output,
                @CONSTITUENCYCODEID uniqueidentifier output,                
                @CHANGEAGENTID uniqueidentifier,
                @DATEFROM datetime = null,
                @DATETO datetime = null
            ) as
                set nocount on;

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

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

                begin try
                    declare @DATEFROM_UPDATED datetime;
                    declare @DATETO_UPDATED datetime;

                    with  CTE_ALLDATESFORCONSTITUENCY as (
                        select
                            @DATEFROM DATEFROM,
                            @DATETO DATETO
                        union
                        select
                            DATEFROM,
                            DATETO
                        from
                            dbo.CONSTITUENCY
                        where
                            CONSTITUENTID = @CONSTITUENTID and
                            CONSTITUENCYCODEID = @CONSTITUENCYCODEID and
                            (
                                ( DATETO   between @DATEFROM and @DATETO) or
                                (@DATETO   between  DATEFROM and  DATETO) or
                                ( DATEFROM between @DATEFROM and @DATETO) or
                                (@DATEFROM between  DATEFROM and  DATETO) or

                                ( DATEFROM is null and @DATEFROM <=  DATETO)   or
                                (@DATEFROM is null and  DATEFROM <= @DATETO)   or
                                ( DATETO   is null and @DATETO   >=  DATEFROM) or
                                (@DATETO   is null and  DATETO   >= @DATEFROM) or

                                (@DATEFROM is null and  DATEFROM is null) or
                                (@DATETO   is null and  DATETO   is null) or
                                (@DATEFROM is null and @DATETO   is null) or
                                ( DATEFROM is null and  DATETO   is null)
                            ))
                    select
                        @DATEFROM_UPDATED = nullif(min(isnull(DATEFROM,'1/1/1753')),'1/1/1753'),
                        @DATETO_UPDATED = nullif(max(isnull(DATETO,'12/31/9999')),'12/31/9999')
                    from
                        CTE_ALLDATESFORCONSTITUENCY;

                    delete
                        dbo.CONSTITUENCY
                    where
                        CONSTITUENTID = @CONSTITUENTID and
                        CONSTITUENCYCODEID = @CONSTITUENCYCODEID and
                        (
                            ( DATETO   between @DATEFROM and @DATETO) or
                            (@DATETO   between  DATEFROM and  DATETO) or
                            ( DATEFROM between @DATEFROM and @DATETO) or
                            (@DATEFROM between  DATEFROM and  DATETO) or

                            ( DATEFROM is null and @DATEFROM <=  DATETO)   or
                            (@DATEFROM is null and  DATEFROM <= @DATETO)   or
                            ( DATETO   is null and @DATETO   >=  DATEFROM) or
                            (@DATETO   is null and  DATETO   >= @DATEFROM) or

                            (@DATEFROM is null and  DATEFROM is null) or
                            (@DATETO   is null and  DATETO   is null) or
                            (@DATEFROM is null and @DATETO   is null) or
                            ( DATEFROM is null and  DATETO   is null)
                        );

                    insert into dbo.CONSTITUENCY (
                        CONSTITUENTID,
                        CONSTITUENCYCODEID,
                        DATEFROM,
                        DATETO,
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    values (
                        @CONSTITUENTID,
                        @CONSTITUENCYCODEID,
                        @DATEFROM_UPDATED,
                        @DATETO_UPDATED,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    );
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;