USP_ITINERARY_CALENDARITEMS

Returns a list of itinerary calendar items.

Parameters

Parameter Parameter Type Mode Description
@ITINERARYID uniqueidentifier IN
@TYPECODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_ITINERARY_CALENDARITEMS
(
  @ITINERARYID uniqueidentifier,
  @TYPECODE tinyint
)
as
begin
    set nocount on;

                select ID,
             ITEMNAME +
             case when INVALIDREASONCODE <> 0
              then '; NOT ADDED: '
              else ''
             end +
             case 
              when INVALIDREASONCODE = 0
              then ''
              when INVALIDREASONCODE <> 10
              then INVALIDREASON
              else 'Conflict exists - '
             end +
             case when LOCATIONSINCONFLICT is not null and len(LOCATIONSINCONFLICT) > 0
              then LOCATIONSINCONFLICT
              else ''
             end +
             case when RESOURCESINCONFLICT is not null and len(RESOURCESINCONFLICT) > 0 and LOCATIONSINCONFLICT is not null and len(LOCATIONSINCONFLICT) > 0
              then '; ' + RESOURCESINCONFLICT 
              when RESOURCESINCONFLICT is not null and len(RESOURCESINCONFLICT) > 0
              then RESOURCESINCONFLICT
              else ''
             end +
             case when STAFFRESOURCESINCONFLICT is not null and len(STAFFRESOURCESINCONFLICT) > 0 and LOCATIONSINCONFLICT is not null and len(LOCATIONSINCONFLICT) > 0
              then '; ' + STAFFRESOURCESINCONFLICT 
              when STAFFRESOURCESINCONFLICT is not null and len(STAFFRESOURCESINCONFLICT) > 0
              then STAFFRESOURCESINCONFLICT
              else ''
             end as NAME,
                       STARTTIME,
                       ENDTIME,
                       STARTDATE,
                       ENDDATE,
             case when LOCATION is not null and len(LOCATION) > 0
                    then LOCATION + char(10)
                    else ''
               end +
               case when RESOURCES is not null and len(RESOURCES) > 0
                    then RESOURCES + char(10)
                    else ''
               end +
               case when STAFFRESOURCES is not null and len(STAFFRESOURCES) > 0
                    then STAFFRESOURCES
                    else ''
               end as DESCRIPTION,
             INVALIDREASONCODE
          from
          (select
             ITINERARYITEM.ID,
                       ITINERARYITEM.NAME as ITEMNAME,
                       ITINERARYITEM.STARTTIME,
                       ITINERARYITEM.ENDTIME,
                       ITINERARYITEM.STARTDATE,
                       ITINERARYITEM.ENDDATE,
                       COALESCE(EVENTLOCATION.NAME, dbo.UFN_EVENT_GETLOCATIONNAME(ITINERARYITEM.EVENTID)) as LOCATION,
                       dbo.UFN_ITINERARYITEMRESOURCE_GETRESOURCESTRING(ITINERARYITEM.ID) as RESOURCES,
                       dbo.UFN_ITINERARYITEMSTAFFRESOURCE_GETSTAFFRESOURCESTRING(ITINERARYITEM.ID) as STAFFRESOURCES,
             ITINERARYITEM.INVALIDREASONCODE,
             ITINERARYITEM.INVALIDREASON,
                       case ITINERARYITEM.INVALIDREASONCODE 
                        when 10 then
                            coalesce(stuff((select '; ' + RESOURCE.NAME + ': ' + cast(CONFLICTRESOURCES.QUANTITYNEEDED as nvarchar(50))
                                               from dbo.UFN_EVENTCONFLICT_GETRESOURCESINCONFLICT(ITINERARYITEM.STARTDATETIME,
                                                                                                 ITINERARYITEM.ENDDATETIME,
                                                                                                 dbo.UFN_ITINERARYITEMRESOURCE_GETRESOURCES_TOITEMLISTXML(ITINERARYITEM.ID),
                                                                                                 ITINERARYITEM.ITINERARYID,
                                                                                                 ITINERARYITEM.ID) as CONFLICTRESOURCES 
                                               inner join RESOURCE
                                                   on CONFLICTRESOURCES.RESOURCEID = RESOURCE.ID
                                               for XML PATH('')),1, 2, ''), '')
                        else
                         ''
                       end as RESOURCESINCONFLICT,
                       case  
                        when (ITINERARYITEM.INVALIDREASONCODE = 10) and (not ITINERARYITEM.EVENTLOCATIONID is null) then
                            coalesce(stuff((select ', ' + EVENTLOCATION.NAME 
                                               from dbo.UFN_EVENTCONFLICT_GETLOCATIONSINCONFLICT(ITINERARYITEM.STARTDATETIME,
                                                                                                 ITINERARYITEM.ENDDATETIME,
                                                                                                 '<LOCATIONS><ITEM><LOCATIONID>' + cast(ITINERARYITEM.EVENTLOCATIONID as nvarchar(36)) + '</LOCATIONID></ITEM></LOCATIONS>',
                                                                                                 ITINERARYITEM.ITINERARYID,
                                                                                                 ITINERARYITEM.ID) as CONFLICTLOCATIONS
                                               inner join EVENTLOCATION
                                                   on CONFLICTLOCATIONS.LOCATIONID = EVENTLOCATION.ID
                                               for XML PATH('')),1, 2, ''), '')
                        else
                         ''
                       end as LOCATIONSINCONFLICT,
                       case ITINERARYITEM.INVALIDREASONCODE
                        when 10 then
                            coalesce(stuff((select '; ' + VOLUNTEERTYPE.NAME + ': ' + cast(CONFLICTSTAFFRESOURCES.QUANTITYNEEDED as nvarchar(50))
                                               from dbo.UFN_EVENTCONFLICT_GETSTAFFRESOURCESINCONFLICT(ITINERARYITEM.STARTDATETIME,
                                                                                                        ITINERARYITEM.ENDDATETIME,
                                                                                                        dbo.UFN_ITINERARYITEM_GETSTAFFRESOURCES_TOITEMLISTXML(ITINERARYITEM.ID),
                                                                                                        ITINERARYITEM.ITINERARYID,
                                                                                                        ITINERARYITEM.ID) as CONFLICTSTAFFRESOURCES 
                                               inner join dbo.VOLUNTEERTYPE
                                                   on CONFLICTSTAFFRESOURCES.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                                               for XML PATH('')),1, 2, ''), '')
                        else
                         ''
                       end as STAFFRESOURCESINCONFLICT
                from dbo.ITINERARYITEM
                    left join dbo.EVENTLOCATION on ITINERARYITEM.EVENTLOCATIONID = EVENTLOCATION.ID
                where ITINERARYID = @ITINERARYID and
              ITEMTYPECODE = @TYPECODE) T 
    end