USP_CONSTITUENCYDATERANGE_REFRESHBOARDMEMBERCONSTITUENCY

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@CONSTITUENCYREFRESHPROCESSID uniqueidentifier IN
@RECORDCOUNT int INOUT

Definition

Copy


CREATE procedure dbo.USP_CONSTITUENCYDATERANGE_REFRESHBOARDMEMBERCONSTITUENCY
(
    @CONSTITUENTID uniqueidentifier = null,
    @CONSTITUENCYREFRESHPROCESSID uniqueidentifier = null,
    @RECORDCOUNT int = 0 output
)
as
begin
    set nocount on;

    set @RECORDCOUNT = 0;

    declare @CURRENTDATE datetime = getdate();

    declare @BOARDMEMBERDEFINITIONID uniqueidentifier = 'F828E957-5F5E-479A-8F23-2FFD6C7C68FF';

    begin try
        if @CONSTITUENTID is not null and @CONSTITUENCYREFRESHPROCESSID is not null
        begin
            raiserror('ERR_REFRESH_CONSTITUENTANDSELECTION : A constituency refresh cannot be run with both a specific constituent and a selection.', 13, 1);
        end

        if @CONSTITUENCYREFRESHPROCESSID is null and @CONSTITUENTID is null
        begin
            insert into dbo.CONSTITUENCYDATERANGE
            (
                ID,
                CONSTITUENTID,
                CONSTITUENCYDEFINITIONID,
                DATEFROM,
                DATETO,
                CONSTITUENCYRECORDIDENTIFIER,
                REFRESHDATE,
                DATEADDED,
                DATECHANGED,
                ADDEDBYAPPLICATIONNAME,
                ADDEDBYUSERNAME,
                CHANGEDBYAPPLICATIONNAME,
                CHANGEDBYUSERNAME,
                CONSTITUENCYTS
            )
            select
                newid(),
                BOARDMEMBERDATERANGE.CONSTITUENTID,
                @BOARDMEMBERDEFINITIONID,
                BOARDMEMBERDATERANGE.DATEFROM,
                BOARDMEMBERDATERANGE.DATETO,
                BOARDMEMBERDATERANGE.ID,
                @CURRENTDATE,
                BOARDMEMBERDATERANGE.DATEADDED,
                BOARDMEMBERDATERANGE.DATECHANGED,
                ADDEDBY.APPLICATIONNAME,
                ADDEDBY.USERNAME,
                CHANGEDBY.APPLICATIONNAME,
                CHANGEDBY.USERNAME,
                BOARDMEMBERDATERANGE.TS
            from
                dbo.BOARDMEMBERDATERANGE
                left join dbo.CONSTITUENCYDATERANGE
                    on CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER = BOARDMEMBERDATERANGE.ID
                inner join dbo.CHANGEAGENT as [ADDEDBY]
                    on ADDEDBY.ID = BOARDMEMBERDATERANGE.ADDEDBYID
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            where
                CONSTITUENCYDATERANGE.ID is null
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            update dbo.CONSTITUENCYDATERANGE
            set
                CONSTITUENCYDATERANGE.CONSTITUENTID = BOARDMEMBERDATERANGE.CONSTITUENTID,
                CONSTITUENCYDATERANGE.DATEFROM = BOARDMEMBERDATERANGE.DATEFROM,
                CONSTITUENCYDATERANGE.DATETO = BOARDMEMBERDATERANGE.DATETO,
                CONSTITUENCYDATERANGE.DATECHANGED = BOARDMEMBERDATERANGE.DATECHANGED,
                CONSTITUENCYDATERANGE.CHANGEDBYAPPLICATIONNAME = CHANGEDBY.APPLICATIONNAME,
                CONSTITUENCYDATERANGE.CHANGEDBYUSERNAME = CHANGEDBY.USERNAME,
                CONSTITUENCYDATERANGE.REFRESHDATE = @CURRENTDATE,
                CONSTITUENCYDATERANGE.CONSTITUENCYTS = BOARDMEMBERDATERANGE.TS
            from
                dbo.CONSTITUENCYDATERANGE
                inner join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                left join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
            where
                BOARDMEMBERDATERANGE.ID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @BOARDMEMBERDEFINITIONID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end
        else if @CONSTITUENCYREFRESHPROCESSID is null
        begin
            insert into dbo.CONSTITUENCYDATERANGE
            (
                ID,
                CONSTITUENTID,
                CONSTITUENCYDEFINITIONID,
                DATEFROM,
                DATETO,
                CONSTITUENCYRECORDIDENTIFIER,
                REFRESHDATE,
                DATEADDED,
                DATECHANGED,
                ADDEDBYAPPLICATIONNAME,
                ADDEDBYUSERNAME,
                CHANGEDBYAPPLICATIONNAME,
                CHANGEDBYUSERNAME,
                CONSTITUENCYTS
            )
            select
                newid(),
                BOARDMEMBERDATERANGE.CONSTITUENTID,
                @BOARDMEMBERDEFINITIONID,
                BOARDMEMBERDATERANGE.DATEFROM,
                BOARDMEMBERDATERANGE.DATETO,
                BOARDMEMBERDATERANGE.ID,
                @CURRENTDATE,
                BOARDMEMBERDATERANGE.DATEADDED,
                BOARDMEMBERDATERANGE.DATECHANGED,
                ADDEDBY.APPLICATIONNAME,
                ADDEDBY.USERNAME,
                CHANGEDBY.APPLICATIONNAME,
                CHANGEDBY.USERNAME,
                BOARDMEMBERDATERANGE.TS
            from
                dbo.BOARDMEMBERDATERANGE
                left join dbo.CONSTITUENCYDATERANGE
                    on CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER = BOARDMEMBERDATERANGE.ID
                inner join dbo.CHANGEAGENT as [ADDEDBY]
                    on ADDEDBY.ID = BOARDMEMBERDATERANGE.ADDEDBYID
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            where
                CONSTITUENCYDATERANGE.ID is null
                and BOARDMEMBERDATERANGE.CONSTITUENTID = @CONSTITUENTID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            update dbo.CONSTITUENCYDATERANGE
            set
                CONSTITUENCYDATERANGE.CONSTITUENTID = BOARDMEMBERDATERANGE.CONSTITUENTID,
                CONSTITUENCYDATERANGE.DATEFROM = BOARDMEMBERDATERANGE.DATEFROM,
                CONSTITUENCYDATERANGE.DATETO = BOARDMEMBERDATERANGE.DATETO,
                CONSTITUENCYDATERANGE.DATECHANGED = BOARDMEMBERDATERANGE.DATECHANGED,
                CONSTITUENCYDATERANGE.CHANGEDBYAPPLICATIONNAME = CHANGEDBY.APPLICATIONNAME,
                CONSTITUENCYDATERANGE.CHANGEDBYUSERNAME = CHANGEDBY.USERNAME,
                CONSTITUENCYDATERANGE.REFRESHDATE = @CURRENTDATE,
                CONSTITUENCYDATERANGE.CONSTITUENCYTS = BOARDMEMBERDATERANGE.TS
            from
                dbo.CONSTITUENCYDATERANGE
                inner join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            where
                CONSTITUENCYDATERANGE.CONSTITUENTID = @CONSTITUENTID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                left join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
            where
                BOARDMEMBERDATERANGE.ID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @BOARDMEMBERDEFINITIONID
                and CONSTITUENCYDATERANGE.CONSTITUENTID = @CONSTITUENTID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end
        else
        begin
            insert into dbo.CONSTITUENCYDATERANGE
            (
                ID,
                CONSTITUENTID,
                CONSTITUENCYDEFINITIONID,
                DATEFROM,
                DATETO,
                CONSTITUENCYRECORDIDENTIFIER,
                REFRESHDATE,
                DATEADDED,
                DATECHANGED,
                ADDEDBYAPPLICATIONNAME,
                ADDEDBYUSERNAME,
                CHANGEDBYAPPLICATIONNAME,
                CHANGEDBYUSERNAME,
                CONSTITUENCYTS
            )
            select
                newid(),
                BOARDMEMBERDATERANGE.CONSTITUENTID,
                @BOARDMEMBERDEFINITIONID,
                BOARDMEMBERDATERANGE.DATEFROM,
                BOARDMEMBERDATERANGE.DATETO,
                BOARDMEMBERDATERANGE.ID,
                @CURRENTDATE,
                BOARDMEMBERDATERANGE.DATEADDED,
                BOARDMEMBERDATERANGE.DATECHANGED,
                ADDEDBY.APPLICATIONNAME,
                ADDEDBY.USERNAME,
                CHANGEDBY.APPLICATIONNAME,
                CHANGEDBY.USERNAME,
                BOARDMEMBERDATERANGE.TS
            from
                dbo.BOARDMEMBERDATERANGE
                inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                    on CONSTITUENTS.CONSTITUENTID = BOARDMEMBERDATERANGE.CONSTITUENTID
                    and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                left join dbo.CONSTITUENCYDATERANGE
                    on CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER = BOARDMEMBERDATERANGE.ID
                inner join dbo.CHANGEAGENT as [ADDEDBY]
                    on ADDEDBY.ID = BOARDMEMBERDATERANGE.ADDEDBYID
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            where
                CONSTITUENCYDATERANGE.ID is null
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            update dbo.CONSTITUENCYDATERANGE
            set
                CONSTITUENCYDATERANGE.CONSTITUENTID = BOARDMEMBERDATERANGE.CONSTITUENTID,
                CONSTITUENCYDATERANGE.DATEFROM = BOARDMEMBERDATERANGE.DATEFROM,
                CONSTITUENCYDATERANGE.DATETO = BOARDMEMBERDATERANGE.DATETO,
                CONSTITUENCYDATERANGE.DATECHANGED = BOARDMEMBERDATERANGE.DATECHANGED,
                CONSTITUENCYDATERANGE.CHANGEDBYAPPLICATIONNAME = CHANGEDBY.APPLICATIONNAME,
                CONSTITUENCYDATERANGE.CHANGEDBYUSERNAME = CHANGEDBY.USERNAME,
                CONSTITUENCYDATERANGE.REFRESHDATE = @CURRENTDATE,
                CONSTITUENCYDATERANGE.CONSTITUENCYTS = BOARDMEMBERDATERANGE.TS
            from
                dbo.CONSTITUENCYDATERANGE
                inner join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
                inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                    on CONSTITUENTS.CONSTITUENTID = BOARDMEMBERDATERANGE.CONSTITUENTID
                    and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                inner join dbo.CHANGEAGENT as [CHANGEDBY]
                    on CHANGEDBY.ID = BOARDMEMBERDATERANGE.CHANGEDBYID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                    on CONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
                    and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                left join dbo.BOARDMEMBERDATERANGE
                    on BOARDMEMBERDATERANGE.ID = CONSTITUENCYDATERANGE.CONSTITUENCYRECORDIDENTIFIER
            where
                BOARDMEMBERDATERANGE.ID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @BOARDMEMBERDEFINITIONID
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;
end