UFN_EVENTCONFLICT_EVENTSINCONFLICT
Gets all the events that a given event conflict is in conflict with
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTCONFLICTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_EVENTCONFLICT_EVENTSINCONFLICT
(
@EVENTCONFLICTID uniqueidentifier
)
returns int
as begin
-- get the information we need about the conflict
declare @START datetime;
declare @END datetime;
declare @LOCATIONS xml;
declare @RESOURCES xml;
declare @STAFFRESOURCES xml;
select @START = EVENTCONFLICT.STARTDATETIME,
@END = EVENTCONFLICT.ENDDATETIME,
@LOCATIONS = dbo.UFN_EVENTCONFLICT_GETLOCATIONS_TOITEMLISTXML(@EVENTCONFLICTID),
@RESOURCES = dbo.UFN_EVENTCONFLICT_GETRESOURCES_TOITEMLISTXML(@EVENTCONFLICTID),
@STAFFRESOURCES = dbo.UFN_EVENTCONFLICT_GETSTAFFRESOURCES_TOITEMLISTXML(@EVENTCONFLICTID)
from dbo.EVENTCONFLICT
where EVENTCONFLICT.ID = @EVENTCONFLICTID
-- First straight event conflicts
declare @EVENTCONFLICTCOUNT int = 0;
select @EVENTCONFLICTCOUNT = count(distinct EVENT.ID)
from dbo.EVENT
left outer join dbo.UFN_EVENTCONFLICT_GETLOCATIONCONFLICTS(@START, @END, @LOCATIONS, null, null, 1, 0) as LOCATIONCONFLICT
on EVENT.ID = LOCATIONCONFLICT.EVENTID
left outer join dbo.UFN_EVENTCONFLICT_GETRESOURCECONFLICTS(@START, @END, @RESOURCES, null, null, 1, 0, 0) as RESOURCECONFLICT
on EVENT.ID = RESOURCECONFLICT.EVENTID
left outer join dbo.UFN_EVENTCONFLICT_GETSTAFFRESOURCECONFLICTS(@START, @END, @STAFFRESOURCES, null, null, 1, 0, 0) as STAFFRESOURCECONFLICT
on EVENT.ID = STAFFRESOURCECONFLICT.EVENTID
where (not LOCATIONCONFLICT.EVENTID is null) or (not RESOURCECONFLICT.EVENTID is null) or (not STAFFRESOURCECONFLICT.EVENTID is null)
-- Second itinerary item conflicts
declare @ITINERARYITEMCONFLICTCOUNT int = 0;
select @ITINERARYITEMCONFLICTCOUNT = count(distinct ITINERARYITEM.ID)
from dbo.ITINERARYITEM
left outer join dbo.UFN_EVENTCONFLICT_GETLOCATIONCONFLICTS(@START, @END, @LOCATIONS, null, null, 0, 1) as LOCATIONCONFLICT
on ITINERARYITEM.ID = LOCATIONCONFLICT.ITINERARYITEMID
left outer join dbo.UFN_EVENTCONFLICT_GETRESOURCECONFLICTS(@START, @END, @RESOURCES, null, null, 0, 1, 0) as RESOURCECONFLICT
on ITINERARYITEM.ID = RESOURCECONFLICT.ITINERARYITEMID
left outer join dbo.UFN_EVENTCONFLICT_GETSTAFFRESOURCECONFLICTS(@START, @END, @STAFFRESOURCES, null, null, 0, 1, 0) as STAFFRESOURCECONFLICT
on ITINERARYITEM.ID = STAFFRESOURCECONFLICT.ITINERARYITEMID
where (not LOCATIONCONFLICT.EVENTID is null) or (not RESOURCECONFLICT.EVENTID is null) or (not STAFFRESOURCECONFLICT.EVENTID is null)
-- Second itinerary conflicts
declare @ITINERARYCONFLICTCOUNT int = 0;
select @ITINERARYCONFLICTCOUNT = count(distinct ITINERARY.ID)
from dbo.ITINERARY
left outer join dbo.UFN_EVENTCONFLICT_GETRESOURCECONFLICTS(@START, @END, @RESOURCES, null, null, 0, 0, 1) as RESOURCECONFLICT
on ITINERARY.ID = RESOURCECONFLICT.ITINERARYID
left outer join dbo.UFN_EVENTCONFLICT_GETSTAFFRESOURCECONFLICTS(@START, @END, @STAFFRESOURCES, null, null, 0, 0, 1) as STAFFRESOURCECONFLICT
on ITINERARY.ID = STAFFRESOURCECONFLICT.ITINERARYID
where (not RESOURCECONFLICT.EVENTID is null) or (not STAFFRESOURCECONFLICT.EVENTID is null)
return @EVENTCONFLICTCOUNT + @ITINERARYITEMCONFLICTCOUNT + @ITINERARYCONFLICTCOUNT;
end