USP_SEARCHLIST_PROGRAM

Simple way to select a program

Parameters

Parameter Parameter Type Mode Description
@NAME nvarchar(50) IN Name
@EVENTLOCATION uniqueidentifier IN Location
@PROGRAMCATEGORYCODEID uniqueidentifier IN Category
@INCLUDEINACTIVE bit IN Include inactive
@INCLUDEDAILYADMISSION bit IN Include daily admission
@SALESMETHODTYPECODE tinyint IN Sales method
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@INCLUDEPREREGISTEREDPROGRAMS bit IN Include preregistered programs

Definition

Copy


              CREATE procedure dbo.USP_SEARCHLIST_PROGRAM
              (
                @NAME nvarchar(50) = null,
                @EVENTLOCATION uniqueidentifier = null,
                @PROGRAMCATEGORYCODEID uniqueidentifier = null,
                @INCLUDEINACTIVE bit = null,
                @INCLUDEDAILYADMISSION bit = null,
                @SALESMETHODTYPECODE tinyint = null,
                @MAXROWS smallint = 500,
                @INCLUDEPREREGISTEREDPROGRAMS bit = 1
              )
              as
                 set @NAME = REPLACE(@NAME,'*','%');
                 set @NAME = COALESCE(@NAME,'') + '%' ;

                select distinct top(@MAXROWS)
                    PROGRAM.ID,
                    PROGRAM.NAME,
                    PROGRAM.DESCRIPTION,
                    case when ISDAILYADMISSION = 1 then 'Daily admission' else 'Scheduled program' end,
                    dbo.UFN_PROGRAMCATEGORYCODE_GETDESCRIPTION(PROGRAM.PROGRAMCATEGORYCODEID) as PROGRAMCATEGORYCODEID
                from dbo.PROGRAM
                left join dbo.PROGRAMLOCATION on PROGRAMLOCATION.PROGRAMID = PROGRAM.ID
                where 
                    (@NAME is null or NAME LIKE @NAME) and 
                    (@EVENTLOCATION is null or PROGRAMLOCATION.EVENTLOCATIONID = @EVENTLOCATION) and
                    (@PROGRAMCATEGORYCODEID is null or PROGRAM.PROGRAMCATEGORYCODEID = @PROGRAMCATEGORYCODEID) and
                    (ISACTIVE = 1 or @INCLUDEINACTIVE = 1) and
                    (ISDAILYADMISSION = 0 or @INCLUDEDAILYADMISSION = 1) and
                    (ISPREREGISTERED = 0 or @INCLUDEPREREGISTEREDPROGRAMS = 1)
                    and
                    (
                        @SALESMETHODTYPECODE is null or
                        exists
                        (
                            select 1 from dbo.PROGRAMSALESMETHOD with (nolock)
                            inner join dbo.SALESMETHOD with (nolock) on
                                PROGRAMSALESMETHOD.SALESMETHODID = SALESMETHOD.ID
                            where
                                PROGRAMSALESMETHOD.PROGRAMID = PROGRAM.ID and
                                SALESMETHOD.TYPECODE = @SALESMETHODTYPECODE
                        )
                    )
                order by NAME asc