UFN_EVENTLODGING_GETROOMCOUNTS

Retrieves various counts for rooms at the given event lodging.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@EVENTLODGINGID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_EVENTLODGING_GETROOMCOUNTS
(
    @EVENTLODGINGID uniqueidentifier
)
returns table
as
    return
    (
        with TOTALS(EVENTLODGINGROOMID,ASSIGNED)
        as
        (
            select
                EVENTLODGINGROOMINSTANCE.EVENTLODGINGROOMID as EVENTLODGINGROOMID,
                COUNT(EVENTLODGINGROOMINSTANCE.ID) as ASSIGNED
            from
                dbo.EVENTLODGINGROOMINSTANCE
            where
                EVENTLODGINGROOMINSTANCE.EVENTLODGINGID = @EVENTLODGINGID
                and EVENTLODGINGROOMINSTANCE.ID in (select EVENTLODGINGROOMINSTANCEID from dbo.REGISTRANTLODGING)
            group by
                EVENTLODGINGROOMID
        )
        select
            EVENTLODGINGROOM.ID,
            EVENTLODGINGROOMTYPECODE.DESCRIPTION as ROOMTYPE,
            EVENTLODGINGROOM.ALLOCATED as ALLOCATED,
            coalesce(TOTALS.ASSIGNED, 0) as ASSIGNED,
            case when EVENTLODGINGROOM.ALLOCATED < coalesce(TOTALS.ASSIGNED, 0) then 0
                else EVENTLODGINGROOM.ALLOCATED - coalesce(TOTALS.ASSIGNED, 0
                end as REMAINING,
            case when coalesce(TOTALS.ASSIGNED, 0) < EVENTLODGINGROOM.ALLOCATED then 0
                else coalesce(TOTALS.ASSIGNED, 0) - EVENTLODGINGROOM.ALLOCATED
                end as OVERASSIGNED
        from
            dbo.EVENTLODGINGROOM
        inner join    
            dbo.EVENTLODGINGROOMTYPECODE on EVENTLODGINGROOMTYPECODE.ID = EVENTLODGINGROOM.ROOMTYPECODEID
        left join
            TOTALS on TOTALS.EVENTLODGINGROOMID = EVENTLODGINGROOM.ID
        where 
            EVENTLODGINGROOM.EVENTLODGINGID = @EVENTLODGINGID
    )