USP_DATAFORMTEMPLATE_EDIT_COMBINATIONCONSTITUENCY

The save procedure used by the edit dataform template "Combination Constituency Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@COMBINATIONCONSTITUENCYCODES xml IN Restrict combination to these constituencies

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_COMBINATIONCONSTITUENCY
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @COMBINATIONCONSTITUENCYCODES xml
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime = getdate();

    declare @COMBINATIONCONSTITUENCYCODESTABLE table (
        ID uniqueidentifier,
        CONSTITUENCYCODEID uniqueidentifier,
        SEQUENCE int
    );

    insert into @COMBINATIONCONSTITUENCYCODESTABLE
    select
        T.c.value('(ID)[1]','uniqueidentifier') as 'ID',
        T.c.value('(CONSTITUENCYCODEID)[1]','uniqueidentifier') as 'CONSTITUENCYCODEID',
        T.c.value('(SEQUENCE)[1]','int') as 'SEQUENCE'
    from @COMBINATIONCONSTITUENCYCODES.nodes('/COMBINATIONCONSTITUENCYCODES/ITEM') T(c);

    if @@rowcount > 0 and dbo.UFN_COMBINATION_HASONLINEAVAILABILITY(@ID) = 1 begin
        raiserror('BBERR_COMBINATIONCONSTITUENCY_NOTALLOWEDFORONLINE', 13, 1);
    end

    declare @XML xml = (
        select
            USERDEFINEDCONSTITUENCYDEFINITION.ID as CONSTITUENCYCODEID,
            SYSTEMCONSTITUENCYDEFINITION.ID as CONSTITUENCYSYSTEMNAMEID,
            NEWTABLE.ID,
            NEWTABLE.SEQUENCE
        from
            @COMBINATIONCONSTITUENCYCODESTABLE as NEWTABLE
        left join dbo.CONSTITUENCYDEFINITION as SYSTEMCONSTITUENCYDEFINITION
            on SYSTEMCONSTITUENCYDEFINITION.ID = NEWTABLE.CONSTITUENCYCODEID
            and SYSTEMCONSTITUENCYDEFINITION.ISSYSTEM = 1
        left join dbo.CONSTITUENCYDEFINITION as USERDEFINEDCONSTITUENCYDEFINITION
            on USERDEFINEDCONSTITUENCYDEFINITION.ID = NEWTABLE.CONSTITUENCYCODEID
            and USERDEFINEDCONSTITUENCYDEFINITION.ISSYSTEM = 0
        where
            NEWTABLE.CONSTITUENCYCODEID is not null
            and (
                SYSTEMCONSTITUENCYDEFINITION.ISACTIVE = 1
                or USERDEFINEDCONSTITUENCYDEFINITION.ISACTIVE = 1
            )
        for xml raw('ITEM'),type,elements,root('COMBINATIONCONSTITUENCYCODES'),BINARY BASE64
    );

    begin try
        exec dbo.USP_COMBINATION_GETCONSTITUENCYCODES_UPDATEFROMXML @ID, @XML, @CHANGEAGENTID, @CURRENTDATE;
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;