USP_CONSTITUENCYCODESELECTION_CREATEORUPDATE

Creates or updates the Selection for the specified Constituency Code.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENCYCODEID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_CONSTITUENCYCODESELECTION_CREATEORUPDATE
(
    @CONSTITUENCYCODEID uniqueidentifier
)
as
    set nocount on;

    declare @FUNCTIONNAME nvarchar(256) = N'UFN_CONSTITUENCYCODESELECTION_' + replace(convert(nvarchar(36), @CONSTITUENCYCODEID), '-', '_');

    declare @IDSETREGISTERID uniqueidentifier = null;
    declare @SQL nvarchar(max);

    if (object_id(@FUNCTIONNAME) > 0)
    begin
        set @SQL = N'alter ';
        select
            @IDSETREGISTERID = ID
        from
            dbo.IDSETREGISTER
        where
            DBOBJECTNAME = @FUNCTIONNAME;
    end
    else
        set @SQL = N'create ';

    set @SQL = 
        @SQL + N' function dbo.' + @FUNCTIONNAME + N'() ' + nchar(13) +
        N'returns table ' + nchar(13) +
        N'as return ' + nchar(13) +
            N'/* This code was auto-generated by calling dbo.USP_CONSTITUENCYCODESELECTION_CREATEORUPDATE on ' + convert(nvarchar, getdate()) + N' */' + nchar(13) +
            N'select ID from dbo.UFN_CONSTITUENT_GETCONSTITUENTSBYCONSTITUENCYCODEID(''' + convert(nvarchar(36), @CONSTITUENCYCODEID) + N''');';

    exec sp_executesql @SQL;

    declare @CONSTITUENCYDESCRIPTION nvarchar(200) = dbo.UFN_CONSTITUENCY_GETDESCRIPTION(@CONSTITUENCYCODEID);
    declare @SELECTIONNAME nvarchar(600) = N'''' + @CONSTITUENCYDESCRIPTION + N''' Constituents';
    declare @DESCRIPTION nvarchar(2048) = N'All constituents who have the ''' + @CONSTITUENCYDESCRIPTION + N''' constituency.';

    declare @RECORDTYPEID uniqueidentifier;
    select
        @RECORDTYPEID = ID
    from
        dbo.RECORDTYPE
    where
        NAME = 'Constituent'

    if exists (select 1 from dbo.IDSETREGISTER where NAME = @SELECTIONNAME)
        set @SELECTIONNAME = @SELECTIONNAME + N' (User defined)';

    exec dbo.USP_IDSETREGISTER_CREATEORUPDATE @IDSETREGISTERID output, @SELECTIONNAME, @DESCRIPTION, @FUNCTIONNAME, 1, @RECORDTYPEID, 0, 0, null, null, null, 'Active constituencies';