USP_EVENTPREFERENCE_VALIDATEPREFERENCES

Checks that each choice in the collection of choices for a given event preference group is unique.

Parameters

Parameter Parameter Type Mode Description
@PREFERENCES xml IN
@PREFERENCEGROUPID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_EVENTPREFERENCE_VALIDATEPREFERENCES(@PREFERENCES xml, @PREFERENCEGROUPID uniqueidentifier = null)
            with execute as caller
            as            
                declare @NAME nvarchar(100)
                declare @ERROR nvarchar(200)
                declare @PREFERENCESTABLE table
                        (
                            ID uniqueidentifier null,
                            NAME nvarchar(100)
                        )

                --insert into @PREFERENCESTABLE(ID, NAME) select ROW_NUMBER() OVER (Order by ID, SEQUENCE), NAME from dbo.UFN_EVENTPREFERENCE_GETPREFERENCES_FROMITEMLISTXML(@PREFERENCES);

                insert into @PREFERENCESTABLE(ID, NAME) select ID, NAME from dbo.UFN_EVENTPREFERENCE_GETPREFERENCES_FROMITEMLISTXML(@PREFERENCES);                                                                

                set @NAME = '';

                if @PREFERENCEGROUPID is not null begin
                    select top 1
                        @NAME = EVENTPREFERENCE.NAME
                    from 
                        dbo.EVENTPREFERENCE
                        inner join dbo.REGISTRANTPREFERENCE on REGISTRANTPREFERENCE.EVENTPREFERENCEID = EVENTPREFERENCE.ID
                    where
                        not exists(select 
                                        EDITTED.ID 
                                    from 
                                        @PREFERENCESTABLE as EDITTED
                                    where
                                        EDITTED.ID = EVENTPREFERENCE.ID and coalesce(EDITTED.NAME,'') <> '')
                        and
                        EVENTPREFERENCE.EVENTPREFERENCEGROUPID = @PREFERENCEGROUPID
                    order by
                        EVENTPREFERENCE.ID;

                    if @NAME <> '' begin
                        set @ERROR = @NAME + ' cannot be deleted because it exists on a registrant record.';
                        raiserror(@ERROR, 13, 1);
                    end;                    
                end

                set @NAME = '';

                select 
                    top 1 @NAME = NAME
                from 
                    @PREFERENCESTABLE as PREFERENCES 
                group by 
                    NAME
                having 
                    count(NAME) > 1;

                if @NAME <> '' begin
                    set @ERROR = @NAME + ' is listed more than once.';
                    raiserror(@ERROR, 13, 1);
                end;