USP_DATALIST_ITINERARYITEMEVENTCONFLICTBYDATETIME
Returns all of the event conflicts for a given start datetime, end datetime, locations, and resources for itinerary items and extended times for itineraries.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | Start date |
@STARTTIME | UDT_HOURMINUTE | IN | Start time |
@ENDDATE | datetime | IN | End date |
@ENDTIME | UDT_HOURMINUTE | IN | End time |
@LOCATIONS | xml | IN | Locations |
@RESOURCES | xml | IN | Supplies/Equipment resources |
@STAFFRESOURCES | xml | IN | Staff resources |
@ITINERARYID | uniqueidentifier | IN | Itinerary ID |
@ITINERARYITEMID | uniqueidentifier | IN | Itinerary Item ID |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_ITINERARYITEMEVENTCONFLICTBYDATETIME
(
@STARTDATE datetime,
@STARTTIME UDT_HOURMINUTE,
@ENDDATE datetime,
@ENDTIME UDT_HOURMINUTE,
@LOCATIONS xml,
@RESOURCES xml,
@STAFFRESOURCES xml,
@ITINERARYID uniqueidentifier = null,
@ITINERARYITEMID uniqueidentifier = null
)
as
set nocount on;
declare @OLDITINERARYSTART datetime;
declare @OLDITINERARYEND datetime;
declare @ITINERARYSTART datetime;
declare @ITINERARYEND datetime;
declare @ITINERARYITEMSTART datetime;
declare @ITINERARYITEMEND datetime;
declare @CHECKITINERARYCONFLICTS bit = 0;
set @ITINERARYITEMSTART = dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),@STARTTIME);
set @ITINERARYITEMEND = dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(@ENDDATE),@ENDTIME);
select
@OLDITINERARYSTART = ITINERARY.STARTDATETIME,
@OLDITINERARYEND = ITINERARY.ENDDATETIME
from dbo.ITINERARY
where ID = @ITINERARYID
select
@ITINERARYSTART = min(STARTDATETIME),
@ITINERARYEND = max(ENDDATETIME)
from
(
select
@ITINERARYITEMSTART as STARTDATETIME,
@ITINERARYITEMEND as ENDDATETIME
union all
select
ITINERARYITEM.STARTDATETIME as STARTDATETIME,
ITINERARYITEM.ENDDATETIME as ENDDATETIME
from dbo.ITINERARYITEM
where
ITINERARYID = @ITINERARYID and
ID <> @ITINERARYITEMID
) T
if @OLDITINERARYSTART is null or @OLDITINERARYSTART <> @ITINERARYSTART or
@OLDITINERARYEND is null or @OLDITINERARYEND <> @ITINERARYEND
set @CHECKITINERARYCONFLICTS = 1
declare @CONFLICTITEMS table
(
EVENTID uniqueidentifier,
ITINERARYITEMID uniqueidentifier,
ITINERARYID uniqueidentifier,
LOCATIONID uniqueidentifier,
RESOURCEID uniqueidentifier,
VOLUNTEERTYPEID uniqueidentifier,
QUANTITYNEEDED int
)
insert into @CONFLICTITEMS
select
EVENTID,
ITINERARYITEMID,
ITINERARYID,
LOCATIONID,
RESOURCEID,
VOLUNTEERTYPEID,
QUANTITYNEEDED
from dbo.UFN_CONFLICTCHECK_GETCONFLICTITEMS(
@ITINERARYITEMSTART, @ITINERARYITEMEND,
@LOCATIONS, @RESOURCES, @STAFFRESOURCES,
null, @ITINERARYID, @ITINERARYITEMID,
0, -- Ignore Super Record
0, -- Ignore Record
1, -- Ignore Sub Record
0, -- Ignore All Sub Records of Record
null, null
)
-- If itinerary times changing, need to check on conflicts
if @CHECKITINERARYCONFLICTS = 1
begin
declare @ITINERARYRESOURCES xml
set @ITINERARYRESOURCES = dbo.UFN_ITINERARYRESOURCE_GETRESOURCES_TOITEMLISTXML(@ITINERARYID);
declare @ITINERARYSTAFFRESOURCES xml
set @ITINERARYSTAFFRESOURCES = dbo.UFN_ITINERARY_GETSTAFFRESOURCES_TOITEMLISTXML(@ITINERARYID);
insert into @CONFLICTITEMS
select
EVENTID,
ITINERARYITEMID,
ITINERARYID,
LOCATIONID,
RESOURCEID,
VOLUNTEERTYPEID,
QUANTITYNEEDED
from dbo.UFN_CONFLICTCHECK_GETCONFLICTITEMS(
@ITINERARYSTART, @ITINERARYEND,
null, @ITINERARYRESOURCES, @ITINERARYSTAFFRESOURCES,
null, @ITINERARYID, @ITINERARYITEMID,
0, -- Ignore Super Record
1, -- Ignore Record
1, -- Ignore Sub Record
0, -- Ignore All Sub Records of Record
null, null
);
end
declare @CONFLICTITEMSXML xml
set @CONFLICTITEMSXML =
(
select
EVENTID,
ITINERARYITEMID,
ITINERARYID,
LOCATIONID,
RESOURCEID,
VOLUNTEERTYPEID,
QUANTITYNEEDED
from @CONFLICTITEMS
for xml raw('ITEM'),type,elements,root('CONFLICTITEMS'),binary base64
);
if @CHECKITINERARYCONFLICTS = 1
begin
select distinct
RECORDID,
PAGEID,
PROGRAMID,
NAME,
STARTDATE,
ENDDATE,
STARTTIME,
ENDTIME,
LOCATIONS,
RESOURCES,
STAFFRESOURCES,
ISLOCATIONCONFLICT,
ISRESOURCECONFLICT,
ISSTAFFRESOURCECONFLICT,
SUBRECORDID,
LOCATIONSINCONFLICT,
RESOURCESINCONFLICT,
STAFFRESOURCESINCONFLICT,
RECORDTYPE,
DISTINCTLOCATIONSINCONFLICT,
DISTINCTRESOURCESINCONFLICT,
DISTINCTSTAFFRESOURCESINCONFLICT
from dbo.UFN_CONFLICTCHECK_GETCONFLICTINFOFROMITEMSWITHNEWITINERARYTIME
(
@CONFLICTITEMSXML,
@ITINERARYSTART,
@ITINERARYEND,
@ITINERARYID,
@ITINERARYITEMID
)
end
else
begin
select distinct
RECORDID,
PAGEID,
PROGRAMID,
NAME,
STARTDATE,
ENDDATE,
STARTTIME,
ENDTIME,
LOCATIONS,
RESOURCES,
STAFFRESOURCES,
ISLOCATIONCONFLICT,
ISRESOURCECONFLICT,
ISSTAFFRESOURCECONFLICT,
SUBRECORDID,
LOCATIONSINCONFLICT,
RESOURCESINCONFLICT,
STAFFRESOURCESINCONFLICT,
RECORDTYPE,
DISTINCTLOCATIONSINCONFLICT,
DISTINCTRESOURCESINCONFLICT,
DISTINCTSTAFFRESOURCESINCONFLICT
from dbo.UFN_CONFLICTCHECK_GETCONFLICTINFOFROMITEMS(@CONFLICTITEMSXML)
end