USP_EXCHANGECALENDARITEMBATCH_VALIDATEEXPECTEDTIMERANGE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECORDID | uniqueidentifier | IN | |
@RECORDTYPECODE | int | IN | |
@EXPECTEDDATEUTC | datetime | IN | |
@EXPECTEDENDDATEUTC | datetime | IN | |
@ISALLDAYEVENT | bit | IN | |
@TIMEZONEENTRYID | uniqueidentifier | INOUT | |
@EXPECTEDDATEINRECORDTIMEZONE | datetime | INOUT | |
@EXPECTEDENDDATEINRECORDTIMEZONE | datetime | INOUT | |
@EXPECTEDTIMERANGESPANSMULTIPLEDAYS | bit | INOUT | |
@EXPECTEDTIMERANGEISVALID | bit | INOUT |
Definition
Copy
create procedure dbo.USP_EXCHANGECALENDARITEMBATCH_VALIDATEEXPECTEDTIMERANGE
(
@RECORDID uniqueidentifier,
@RECORDTYPECODE integer,
@EXPECTEDDATEUTC datetime,
@EXPECTEDENDDATEUTC datetime,
@ISALLDAYEVENT bit,
@TIMEZONEENTRYID uniqueidentifier = null output,
@EXPECTEDDATEINRECORDTIMEZONE datetime = null output,
@EXPECTEDENDDATEINRECORDTIMEZONE datetime = null output,
@EXPECTEDTIMERANGESPANSMULTIPLEDAYS bit = null output,
@EXPECTEDTIMERANGEISVALID bit = null output
)
as
declare @STARTDATENOTIME date;
declare @ENDDATENOTIME date;
if @ISALLDAYEVENT = 1
begin
set @TIMEZONEENTRYID = null;
--Clear the time because all day events come in with UTC times that are equivalent
-- to the midnight-to-midnight time range in the Outlook user's time zone. E.g. Mountain
-- time all day events come in as 5:00 AM to 5:00 AM. Clearing the time here matters
-- if we need to generate an error message based on this output.
set @EXPECTEDDATEINRECORDTIMEZONE = cast(@EXPECTEDDATEUTC as date);
set @EXPECTEDENDDATEINRECORDTIMEZONE = cast(@EXPECTEDENDDATEUTC as date);
set @STARTDATENOTIME = @EXPECTEDDATEUTC;
set @ENDDATENOTIME = @EXPECTEDENDDATEUTC;
set @EXPECTEDTIMERANGESPANSMULTIPLEDAYS = case when (@STARTDATENOTIME <> dateadd(day, -1, @ENDDATENOTIME)) then 1 else 0 end;
set @EXPECTEDTIMERANGEISVALID = 1;
end
else
begin
if @RECORDTYPECODE < 2
select
@TIMEZONEENTRYID = INTERACTION.TIMEZONEENTRYID
from
dbo.INTERACTION
where
INTERACTION.ID = @RECORDID;
else if @RECORDTYPECODE = 2
select
@TIMEZONEENTRYID = STEWARDSHIPPLANSTEP.TIMEZONEENTRYID
from
dbo.STEWARDSHIPPLANSTEP
where
STEWARDSHIPPLANSTEP.ID = @RECORDID;
-- When going from an all-day event to an event with a start and end time, use the system default time zone.
if @TIMEZONEENTRYID is null
set @TIMEZONEENTRYID = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULT();
set @EXPECTEDDATEINRECORDTIMEZONE = dbo.UFN_EXCHANGEINTEGRATION_CONVERTDATETOSYSTEMTIMEZONE(@TIMEZONEENTRYID, @EXPECTEDDATEUTC);
set @EXPECTEDENDDATEINRECORDTIMEZONE = dbo.UFN_EXCHANGEINTEGRATION_CONVERTDATETOSYSTEMTIMEZONE(@TIMEZONEENTRYID, @EXPECTEDENDDATEUTC);
set @STARTDATENOTIME = @EXPECTEDDATEINRECORDTIMEZONE;
set @ENDDATENOTIME = @EXPECTEDENDDATEINRECORDTIMEZONE;
set @EXPECTEDTIMERANGESPANSMULTIPLEDAYS = case when (@STARTDATENOTIME <> @ENDDATENOTIME) then 1 else 0 end;
set @EXPECTEDTIMERANGEISVALID = case when (@EXPECTEDDATEINRECORDTIMEZONE > @EXPECTEDENDDATEINRECORDTIMEZONE) then 0 else 1 end;
end