USP_SEARCHLIST_AUCTIONITEM

Provides search functionality for the auction item search list.

Parameters

Parameter Parameter Type Mode Description
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN
@NAME nvarchar(100) IN Name
@AUCTIONITEMCATEGORYID uniqueidentifier IN Category
@AUCTIONITEMSUBCATEGORYID uniqueidentifier IN Subcategory
@SITEID uniqueidentifier IN Site
@AUCTIONID uniqueidentifier IN Auction
@ONLYSHOWUNSOLD bit IN Only show unsold items
@ONLYSHOWAVAILABLEFORAUCTION uniqueidentifier IN Only show valid items for this auction

Definition

Copy


            CREATE procedure dbo.USP_SEARCHLIST_AUCTIONITEM
                (
                    @MAXROWS smallint = 500,
                    @CURRENTAPPUSERID uniqueidentifier,
                    @SECURITYFEATUREID uniqueidentifier = null,
                    @SECURITYFEATURETYPE tinyint = null,
                    @NAME nvarchar(100) = null,
                    @AUCTIONITEMCATEGORYID uniqueidentifier = null,
                    @AUCTIONITEMSUBCATEGORYID uniqueidentifier = null,
                    @SITEID uniqueidentifier = null,
                    @AUCTIONID uniqueidentifier = null,
                    @ONLYSHOWUNSOLD bit = 0,
                    @ONLYSHOWAVAILABLEFORAUCTION uniqueidentifier = null
                )
                as
                    set @NAME = COALESCE(@NAME,'') + '%' ;

                    declare @SITESFORAUCTION table
                    (
                        SITEID uniqueidentifier
                    )
                    declare @SITESFORAUCTIONCOUNT int = 0;
                    declare @EVENTAUCTIONBASECURRENCYID uniqueidentifier = null;

                    if @ONLYSHOWAVAILABLEFORAUCTION is not null
                    begin
                        insert into @SITESFORAUCTION(SITEID) (select SITEID from dbo.EVENTSITE where EVENTSITE.EVENTID = @ONLYSHOWAVAILABLEFORAUCTION);
                        select @SITESFORAUCTIONCOUNT = count(SITEID) from @SITESFORAUCTION;

                        select @EVENTAUCTIONBASECURRENCYID = EVENT.BASECURRENCYID
                        from dbo.EVENT
                        where EVENT.ID = @ONLYSHOWAVAILABLEFORAUCTION

                    end;

                    with AUCTIONITEM_SITE_CTE(AUCTIONITEMID, SITENAME) as
                    (
                        select
                            AUCTIONITEM.ID,
                            SITE.NAME
                        from
                            dbo.AUCTIONITEM
                            left join dbo.REVENUESPLIT on AUCTIONITEM.REVENUEAUCTIONDONATIONID = REVENUESPLIT.REVENUEID
                            left join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
                            left join dbo.DESIGNATIONLEVEL DL1 on DL1.ID = DESIGNATION.DESIGNATIONLEVEL1ID
                            left join dbo.DESIGNATIONLEVEL DL2 on DL2.ID = DESIGNATION.DESIGNATIONLEVEL2ID
                            left join dbo.DESIGNATIONLEVEL DL3 on DL3.ID = DESIGNATION.DESIGNATIONLEVEL3ID
                            left join dbo.DESIGNATIONLEVEL DL4 on DL4.ID = DESIGNATION.DESIGNATIONLEVEL4ID
                            left join dbo.DESIGNATIONLEVEL DL5 on DL5.ID = DESIGNATION.DESIGNATIONLEVEL5ID
                            left join dbo.SITE on coalesce(DL5.SITEID, DL4.SITEID, DL3.SITEID, DL2.SITEID, DL1.SITEID) = SITE.ID
                        where
                            AUCTIONITEM.TYPECODE = 0
                            and
                            (@SITEID is null or @SITEID = coalesce(DL5.SITEID, DL4.SITEID, DL3.SITEID, DL2.SITEID, DL1.SITEID))
                            and
                            (@ONLYSHOWAVAILABLEFORAUCTION is null or (@ONLYSHOWAVAILABLEFORAUCTION is not null and SITE.ID is null and @SITESFORAUCTIONCOUNT = 0) or (exists(select 1 from @SITESFORAUCTION where SITEID = SITE.ID)))
                            and
                            (
                                dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
                                or
                                exists(
                                        select 1 
                                        from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE
                                        where 
                                            SITEID=SITE.ID
                                            or
                                     (
                                                SITEID is null and SITE.ID is null
                                            )
                                      )
                            )
                            and (@EVENTAUCTIONBASECURRENCYID is null or AUCTIONITEM.TRANSACTIONCURRENCYID = @EVENTAUCTIONBASECURRENCYID)
                        union all

                        select distinct
                            AUCTIONITEM.ID,
                            dbo.UFN_AUCTIONPACKAGE_GETSITELIST(AUCTIONITEM.ID) as SITELIST
                        from
                            dbo.AUCTIONITEM
                            left join dbo.EVENTSITE on AUCTIONITEM.EVENTAUCTIONID = EVENTSITE.EVENTID
                            left join dbo.SITE on EVENTSITE.SITEID = SITE.ID
                        where
                            AUCTIONITEM.TYPECODE = 1
                            and
                            (@SITEID is null or @SITEID = EVENTSITE.SITEID)
                            and
                            (@ONLYSHOWAVAILABLEFORAUCTION is null or (@ONLYSHOWAVAILABLEFORAUCTION is not null and SITE.ID is null and @SITESFORAUCTIONCOUNT = 0) or (exists(select 1 from @SITESFORAUCTION where SITEID = SITE.ID)))
                            and
                            (
                                dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
                                or
                                exists(
                                        select 1
                                        from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE)
                                        where
                                            SITEID=EVENTSITE.SITEID
                                            or
                                            (
                                                SITEID is null and EVENTSITE.SITEID is null
                                            )
                                      )
                            )
                    )
                    select distinct top(@MAXROWS)
                        AUCTIONITEM.ID,
                        AUCTIONITEM.NAME as NAME,
                        AUCTIONITEM_SITE_CTE.SITENAME as SITE,
                        EVENT.NAME as AUCTIONNAME,
                        AUCTIONITEMCATEGORY.NAME as CATEGORY,
                        AUCTIONITEMSUBCATEGORY.NAME as SUBCATEGORY,
                        case
                            when AUCTIONITEM.TYPECODE = 0 then AUCTIONITEM.TRANSACTIONVALUE
                            else coalesce((select sum(TRANSACTIONVALUE) from dbo.AUCTIONITEM [ITEM] where [ITEM].PACKAGEID = AUCTIONITEM.ID),0)
                        end as VALUE,
                        AUCTIONITEM.TRANSACTIONCURRENCYID
                    from 
                        dbo.AUCTIONITEM
                        inner join AUCTIONITEM_SITE_CTE on AUCTIONITEM.ID = AUCTIONITEM_SITE_CTE.AUCTIONITEMID
                        left join dbo.AUCTIONITEMCATEGORY on AUCTIONITEM.AUCTIONITEMCATEGORYID = AUCTIONITEMCATEGORY.ID
                        left join dbo.AUCTIONITEMSUBCATEGORY on AUCTIONITEM.AUCTIONITEMSUBCATEGORYID = AUCTIONITEMSUBCATEGORY.ID
                        left join dbo.EVENT on AUCTIONITEM.EVENTAUCTIONID = EVENT.ID
                        left join dbo.AUCTIONITEMRESERVATION on AUCTIONITEM.ID = AUCTIONITEMRESERVATION.AUCTIONITEMID
                        left join dbo.AUCTIONITEMRESERVATION [RESERVEDPACKAGEITEM] on AUCTIONITEM.PACKAGEID = [RESERVEDPACKAGEITEM].AUCTIONITEMID
                        left join dbo.AUCTIONITEMREVENUEPURCHASE on AUCTIONITEM.ID = AUCTIONITEMREVENUEPURCHASE.AUCTIONITEMID
                        left join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.PARENTID = AUCTIONITEM.REVENUEAUCTIONDONATIONID 
                            and FINANCIALTRANSACTION.DELETEDON is null 
                            and FINANCIALTRANSACTION.TYPECODE = 20 --code for write-off

                    where
                        (@AUCTIONID is null or AUCTIONITEM.EVENTAUCTIONID = @AUCTIONID)
                        and
                        (AUCTIONITEM.NAME like @NAME + '%')
                        and 
                        (@AUCTIONITEMCATEGORYID is null or AUCTIONITEM.AUCTIONITEMCATEGORYID = @AUCTIONITEMCATEGORYID)
                        and
                        (@AUCTIONITEMSUBCATEGORYID is null or AUCTIONITEM.AUCTIONITEMSUBCATEGORYID = @AUCTIONITEMSUBCATEGORYID)
                        and
                        (@ONLYSHOWAVAILABLEFORAUCTION is null or AUCTIONITEM.EVENTAUCTIONID is null)
                        and
                        (@ONLYSHOWAVAILABLEFORAUCTION is null or FINANCIALTRANSACTION.ID is null)  --not written off

                        and
                        (@ONLYSHOWUNSOLD = 0 or (AUCTIONITEMREVENUEPURCHASE.REVENUEPURCHASEID is null and [RESERVEDPACKAGEITEM].ID is null and AUCTIONITEMRESERVATION.ID is null)) 
                    order by 
                        AUCTIONITEM.NAME asc