USP_REPORT_CONFLICTREPORT

Parameters

Parameter Parameter Type Mode Description
@FROMDATE datetime IN
@TODATE datetime IN
@PROGRAMID uniqueidentifier IN
@PROGRAMQUERYID uniqueidentifier IN
@PROGRAMCATEGORYID uniqueidentifier IN
@CONFLICTTYPEFILTER tinyint IN

Definition

Copy

                create procedure dbo.USP_REPORT_CONFLICTREPORT
                (
                    @FROMDATE datetime = null,
                    @TODATE datetime = null,
                    @PROGRAMID uniqueidentifier = null,
                    @PROGRAMQUERYID uniqueidentifier = null,
                    @PROGRAMCATEGORYID uniqueidentifier = null,
                    @CONFLICTTYPEFILTER tinyint = 0
                )
                as
                set nocount on;

                begin

                    if @FROMDATE is not null set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE)
                    if @TODATE is not null set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE);

                    with EVENT_CTE as 
                    (
                    select 
                        EVENT.NAME, 
                        EVENT.STARTTIME,
                        EVENT.ENDTIME,
                        EVENT.STARTDATE,
                        EVENT.ENDDATE,
                        EVENTLOCATION.ID as EVENTLOCATIONID
                    from dbo.EVENT
                    left join dbo.EVENTLOCATION on EVENT.EVENTLOCATIONID = EVENTLOCATION.ID 
                    where EVENT.PROGRAMID is null
                    )

                    -- program event to program event location conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        case when (P2.NAME is null or P2.NAME = ''
                            then E.NAME
                        else
                            P2.NAME
                        end as EVENT2NAME,
                        EL.NAME CONFLICTNAME,
                        0 as QUANTITY,
                        1 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        E.STARTTIME EVENT2TIME
                    from dbo.EVENTCONFLICT EC
                    inner join dbo.PROGRAMEVENTLOCATION PEL on PEL.EVENTCONFLICTID = EC.ID
                    inner join dbo.PROGRAMEVENTLOCATION PEL2 on PEL.EVENTLOCATIONID = PEL2.EVENTLOCATIONID
                    inner join dbo.EVENTLOCATION EL on EL.ID = PEL.EVENTLOCATIONID
                    left join dbo.[EVENT] E on (E.ID = PEL2.EVENTID or E.EVENTLOCATIONID = PEL2.EVENTLOCATIONID)
                    left join dbo.PROGRAM P1 on P1.ID = EC.PROGRAMID
                    left join dbo.PROGRAM P2 on P2.ID = E.PROGRAMID
                    where E.STARTDATE = EC.STARTDATE and E.PROGRAMID is not null -- E is scheduled program event

                    and E.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> E.ENDTIME
                    and (E.STARTTIME = EC.STARTTIME or E.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between E.STARTTIME and E.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (2,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    -- program event to special event location conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        EVENT_CTE.NAME as EVENT2NAME,
                        EL.NAME CONFLICTNAME,
                        0 as QUANTITY,
                        1 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        EVENT_CTE.STARTTIME EVENT2TIME
                    from dbo.EVENTCONFLICT EC
                    inner join dbo.PROGRAMEVENTLOCATION PEL on PEL.EVENTCONFLICTID = EC.ID
                    inner join dbo.EVENTLOCATION EL on EL.ID = PEL.EVENTLOCATIONID
                    inner join EVENT_CTE on PEL.EVENTLOCATIONID = EVENT_CTE.EVENTLOCATIONID
                    left join dbo.PROGRAM P1 on P1.ID = EC.PROGRAMID
                    where (EC.STARTDATE > EVENT_CTE.STARTDATE and EC.STARTDATE < EVENT_CTE.ENDDATE) 
                        or (EC.STARTDATE = EVENT_CTE.STARTDATE and EC.STARTDATE <> EVENT_CTE.ENDDATE and (EVENT_CTE.STARTTIME is null or (EVENT_CTE.STARTTIME is not null and (EC.STARTTIME >= EVENT_CTE.STARTTIME or EC.ENDTIME > EVENT_CTE.STARTTIME))))
                        or (EC.STARTDATE = EVENT_CTE.ENDDATE and EC.STARTDATE <> EVENT_CTE.STARTDATE and (EVENT_CTE.ENDTIME is null or (EVENT_CTE.ENDTIME is not null and (EC.STARTTIME < EVENT_CTE.ENDTIME or EC.ENDTIME <= EVENT_CTE.ENDTIME))))
                        or (EC.STARTDATE = EVENT_CTE.STARTDATE and EC.STARTDATE = EVENT_CTE.ENDDATE and (EVENT_CTE.STARTTIME is null and EVENT_CTE.ENDTIME is null
                            or (EVENT_CTE.STARTTIME is null and EVENT_CTE.ENDTIME is not null and (EC.STARTTIME < EVENT_CTE.ENDTIME or EC.ENDTIME <= EVENT_CTE.ENDTIME))
                            or (EVENT_CTE.STARTTIME is not null and EVENT_CTE.ENDTIME is null) and (EC.STARTTIME >= EVENT_CTE.STARTTIME or EC.ENDTIME > EVENT_CTE.STARTTIME)
                            or (EVENT_CTE.STARTTIME is not null and EVENT_CTE.ENDTIME is not null and (EC.STARTTIME between EVENT_CTE.STARTTIME and EVENT_CTE.ENDTIME or EC.ENDTIME between EVENT_CTE.STARTTIME and EVENT_CTE.ENDTIME) and EVENT_CTE.STARTTIME <> EC.ENDTIME and EC.STARTTIME <> EVENT_CTE.ENDTIME)
                        ))
                    and @CONFLICTTYPEFILTER not in (2,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))


                    union all

                    -- program event to itinerary item event location conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        II.NAME EVENT2NAME,
                        EL.NAME CONFLICTNAME,
                        0 as QUANTITY,
                        1 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        II.STARTTIME EVENT2TIME
                    from dbo.EVENTCONFLICT EC
                    inner join dbo.PROGRAMEVENTLOCATION PEL on PEL.EVENTCONFLICTID = EC.ID
                    inner join dbo.ITINERARYITEM II on PEL.EVENTLOCATIONID = II.EVENTLOCATIONID
                    inner join dbo.EVENTLOCATION EL on EL.ID = PEL.EVENTLOCATIONID
                    inner join dbo.PROGRAM P1 on P1.ID = EC.PROGRAMID
                    left outer join dbo.PROGRAM P2 on P2.ID = II.PROGRAMID
                    where II.STARTDATE = EC.STARTDATE
                    and II.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> II.ENDTIME
                    and (II.STARTTIME = EC.STARTTIME or II.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between II.STARTTIME and II.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (2,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    /* Staff resource conflicts */

                    -- program event to program event staff resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        P2.NAME EVENT2NAME,
                        V.NAME CONFLICTNAME,
                        ESR1.QUANTITYNEEDED QUANTITY,
                        2 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        E.STARTTIME EVENT2TIME
                    from dbo.[EVENTSTAFFRESOURCE] ESR1
                    inner join dbo.[EVENTSTAFFRESOURCE] ESR2 on ESR2.VOLUNTEERTYPEID = ESR1.VOLUNTEERTYPEID
                    inner join dbo.VOLUNTEERTYPE V on ESR1.VOLUNTEERTYPEID = V.ID
                    inner join dbo.[EVENTCONFLICT] EC on ESR1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[EVENT] E on E.ID = ESR2.EVENTID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    inner join dbo.[PROGRAM] P2 on P2.ID = E.PROGRAMID
                    where E.STARTDATE = EC.STARTDATE
                    and E.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> E.ENDTIME
                    and (E.STARTTIME = EC.STARTTIME or E.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between E.STARTTIME and E.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (1,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    -- program event to itinerary item event staff resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        II.NAME EVENT2NAME,
                        V.NAME CONFLICTNAME,
                        ESR1.QUANTITYNEEDED QUANTITY,
                        2 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        II.STARTTIME EVENT2TIME
                    from dbo.[EVENTSTAFFRESOURCE] ESR1
                    inner join dbo.[ITINERARYITEMSTAFFRESOURCE] IISR on IISR.VOLUNTEERTYPEID = ESR1.VOLUNTEERTYPEID
                    inner join dbo.VOLUNTEERTYPE V on ESR1.VOLUNTEERTYPEID = V.ID
                    inner join dbo.[EVENTCONFLICT] EC on ESR1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[ITINERARYITEM] II on II.ID = IISR.ITINERARYITEMID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    left outer join dbo.[PROGRAM] P2 on P2.ID = II.PROGRAMID
                    where II.STARTDATE = EC.STARTDATE
                    and II.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> II.ENDTIME
                    and (II.STARTTIME = EC.STARTTIME or II.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between II.STARTTIME and II.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (1,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    -- program event to itinerary staff resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        I.NAME EVENT2NAME,
                        V.NAME CONFLICTNAME,
                        ESR1.QUANTITYNEEDED QUANTITY,
                        2 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        replace(convert(time,I.STARTDATETIME),':','') EVENT2TIME
                    from dbo.[EVENTSTAFFRESOURCE] ESR1
                    inner join dbo.[ITINERARYSTAFFRESOURCE] ISR on ISR.VOLUNTEERTYPEID = ESR1.VOLUNTEERTYPEID
                    inner join dbo.VOLUNTEERTYPE V on ESR1.VOLUNTEERTYPEID = V.ID
                    inner join dbo.[EVENTCONFLICT] EC on ESR1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[ITINERARY] I on I.ID = ISR.ITINERARYID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    where convert(date,I.STARTDATETIME) = EC.STARTDATE
                    and replace(convert(time,I.STARTDATETIME),':','') <> EC.ENDTIME
                    and EC.STARTTIME <> replace(convert(time,I.ENDDATETIME),':','')
                    and (replace(convert(time,I.STARTDATETIME),':','') = EC.STARTTIME or replace(convert(time,I.STARTDATETIME),':','') between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between replace(convert(time,I.STARTDATETIME),':','') and replace(convert(time,I.ENDDATETIME),':',''))
                    and @CONFLICTTYPEFILTER not in (1,3)
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))


                    union all

                    /* Equipment resource conflicts */

                    -- program event to program event resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        P2.NAME EVENT2NAME,
                        R.NAME CONFLICTNAME,
                        ER1.QUANTITYNEEDED QUANTITY,
                        3 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        E.STARTTIME EVENT2TIME
                    from dbo.[EVENTRESOURCE] ER1
                    inner join dbo.[EVENTRESOURCE] ER2 on ER2.RESOURCEID = ER1.RESOURCEID
                    inner join dbo.[RESOURCE] R on ER1.RESOURCEID = R.ID
                    inner join dbo.[EVENTCONFLICT] EC on ER1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[EVENT] E on E.ID = ER2.EVENTID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    inner join dbo.[PROGRAM] P2 on P2.ID = E.PROGRAMID
                    where E.STARTDATE = EC.STARTDATE
                    and E.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> E.ENDTIME
                    and (E.STARTTIME = EC.STARTTIME or E.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between E.STARTTIME and E.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (1,2)
                    and R.TYPECODE = 0
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    -- program event to itinerary event resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        II.NAME EVENT2NAME,
                        R.NAME CONFLICTNAME,
                        ER1.QUANTITYNEEDED QUANTITY,
                        3 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        II.STARTTIME EVENT2TIME
                    from dbo.[EVENTRESOURCE] ER1
                    inner join dbo.ITINERARYITEMRESOURCE IIR on IIR.RESOURCEID = ER1.RESOURCEID
                    inner join dbo.[RESOURCE] R on ER1.RESOURCEID = R.ID
                    inner join dbo.[EVENTCONFLICT] EC on ER1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[ITINERARYITEM] II on IIR.ITINERARYITEMID = II.ID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    left outer join dbo.[PROGRAM] P2 on P2.ID = II.PROGRAMID
                    where II.STARTDATE = EC.STARTDATE
                    and II.STARTTIME <> EC.ENDTIME
                    and EC.STARTTIME <> II.ENDTIME
                    and (II.STARTTIME = EC.STARTTIME or II.STARTTIME between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between II.STARTTIME and II.ENDTIME)
                    and @CONFLICTTYPEFILTER not in (1,2)
                    and R.TYPECODE = 0
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))

                    union all

                    -- program event to itinerary resource conflicts

                    select distinct
                        'http://www.blackbaud.com/CONFLICTINGPROGRAMID?CONFLICTINGPROGRAMID=' + CONVERT(nvarchar(36), P1.ID) CONFLICTINGPROGRAMID,
                        P1.NAME EVENT1NAME,
                        I.NAME EVENT2NAME,
                        R.NAME CONFLICTNAME,
                        ER1.QUANTITYNEEDED QUANTITY,
                        3 as CONFLICTTYPE,
                        EC.STARTDATE EVENTDATE,
                        EC.STARTTIME EVENT1TIME,
                        replace(convert(time,I.STARTDATETIME),':','') EVENT2TIME
                    from dbo.[EVENTRESOURCE] ER1
                    inner join dbo.ITINERARYRESOURCE IR on IR.RESOURCEID = ER1.RESOURCEID
                    inner join dbo.[RESOURCE] R on ER1.RESOURCEID = R.ID
                    inner join dbo.[EVENTCONFLICT] EC on ER1.EVENTCONFLICTID = EC.ID
                    inner join dbo.[ITINERARY] I on IR.ITINERARYID = I.ID
                    inner join dbo.[PROGRAM] P1 on P1.ID = EC.PROGRAMID
                    where convert(date,I.STARTDATETIME) = EC.STARTDATE
                    and replace(convert(time,I.STARTDATETIME),':','') <> EC.ENDTIME
                    and EC.STARTTIME <> replace(convert(time,I.ENDDATETIME),':','')
                    and (replace(convert(time,I.STARTDATETIME),':','') = EC.STARTTIME or replace(convert(time,I.STARTDATETIME),':','') between EC.STARTTIME and EC.ENDTIME or EC.STARTTIME between replace(convert(time,I.STARTDATETIME),':','') and replace(convert(time,I.ENDDATETIME),':',''))
                    and @CONFLICTTYPEFILTER not in (1,2)
                    and R.TYPECODE = 0
                    and (@PROGRAMID is null or P1.[ID] = @PROGRAMID)
                    and (@PROGRAMCATEGORYID is null or P1.[PROGRAMCATEGORYCODEID] = @PROGRAMCATEGORYID)
                    and (@PROGRAMQUERYID is null or P1.[ID] in (select [ID] from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROGRAMQUERYID)))
                    and ((@FROMDATE is null and @TODATE is null) or (EC.STARTDATE between @FROMDATE and @TODATE))
                end