USP_EXCHANGECALENDARITEMBATCH_ADDBATCHROW_2

Adds a new batch row to the Exchange calendar item batch table.

Parameters

Parameter Parameter Type Mode Description
@BATCHID uniqueidentifier IN
@RECORDID uniqueidentifier IN
@RECORDTYPECODE int IN
@CONSTITUENTID uniqueidentifier IN
@OWNERID uniqueidentifier IN
@EXPECTEDDATE datetime IN
@OBJECTIVE nvarchar(256) IN
@CHANGEAGENTID uniqueidentifier IN
@EXPECTEDENDDATE datetime IN
@TIMEZONENAME nvarchar(255) IN
@ISALLDAYEVENT bit IN
@BATCHSYSTEMMESSAGETEXT nvarchar(2000) IN
@INVALIDEXPECTEDENDDATEVALUE nvarchar(100) IN

Definition

Copy


CREATE procedure [dbo].[USP_EXCHANGECALENDARITEMBATCH_ADDBATCHROW_2]
(
    @BATCHID uniqueidentifier = null,
    @RECORDID uniqueidentifier = null,
    @RECORDTYPECODE integer = null,
    @CONSTITUENTID uniqueidentifier = null,
    @OWNERID uniqueidentifier = null,
    @EXPECTEDDATE datetime = null,
    @OBJECTIVE nvarchar(256) = null,
    @CHANGEAGENTID uniqueidentifier = null,
    @EXPECTEDENDDATE datetime = null,
    @TIMEZONENAME nvarchar(255) = null,
    @ISALLDAYEVENT bit = 0,
    @BATCHSYSTEMMESSAGETEXT as nvarchar(2000) = null,
    @INVALIDEXPECTEDENDDATEVALUE as nvarchar(100) = null
)
as        
    declare @CHANGEDATE datetime;
    set @CHANGEDATE = getdate();

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;            

    declare @ID uniqueidentifier;
    set @ID = newid();

    declare @SEQUENCE int
    set @SEQUENCE = coalesce((select max(SEQUENCE) from dbo.EXCHANGECALENDARITEMBATCH where BATCHID = @BATCHID),0) + 1;

    declare @EXPECTEDSTARTTIME UDT_HOURMINUTE;
    declare @EXPECTEDENDTIME UDT_HOURMINUTE;
    declare @TIMEZONEENTRYID uniqueidentifier;
    declare @STARTDATEOFFSET datetime;
    declare @ENDDATEOFFSET datetime;
    declare @DATENOTIME date;
    declare @EXPECTEDTIMERANGESPANSMULTIPLEDAYS bit;
    declare @EXPECTEDTIMERANGEISVALID bit;

    --TommyVe 2012-03-07 Bug 192095, Bug 192102. Use the time zone from the record rather than the

    -- one from the Exchange item. Exchange always provides UTC but the user wants to see the data

    -- in the original time zone.

    exec dbo.USP_EXCHANGECALENDARITEMBATCH_VALIDATEEXPECTEDTIMERANGE
        @RECORDID,
        @RECORDTYPECODE,
        @EXPECTEDDATE,
        @EXPECTEDENDDATE,
        @ISALLDAYEVENT,
        @TIMEZONEENTRYID output,
        @STARTDATEOFFSET output,
        @ENDDATEOFFSET output,
        @EXPECTEDTIMERANGESPANSMULTIPLEDAYS output,
        @EXPECTEDTIMERANGEISVALID output;

    set @DATENOTIME = @STARTDATEOFFSET;

    if @ISALLDAYEVENT = 1
    begin
        set @EXPECTEDSTARTTIME = N'';
        set @EXPECTEDENDTIME = N'';
        set @TIMEZONEENTRYID = null;
    end
    else
    begin
        set @EXPECTEDSTARTTIME = coalesce(dbo.UFN_EXCHANGEINTEGRATION_GETTIMEFROMDATE(@STARTDATEOFFSET), N'');
        set @EXPECTEDENDTIME = coalesce(dbo.UFN_EXCHANGEINTEGRATION_GETTIMEFROMDATE(@ENDDATEOFFSET), N'');
    end

  if @RECORDTYPECODE < 2
    begin
      update 
        dbo.EXCHANGECALENDARITEMBATCH
      set
        PROCESS = 0
      where
        EXCHANGECALENDARITEMBATCH.INTERACTIONID = @RECORDID and
        EXCHANGECALENDARITEMBATCH.OWNERID = @OWNERID and
        EXCHANGECALENDARITEMBATCH.BATCHID = @BATCHID;

      insert into dbo.EXCHANGECALENDARITEMBATCH
        (ID, BATCHID, RECORDTYPECODE, INTERACTIONID, STEWARDSHIPSTEPID, CONSTITUENTID, OWNERID, SEQUENCE, EXPECTEDDATE, OBJECTIVE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, EXPECTEDSTARTTIME, EXPECTEDENDTIME,TIMEZONEENTRYID)
      values
        (@ID, @BATCHID, @RECORDTYPECODE, @RECORDID, null, @CONSTITUENTID, @OWNERID, @SEQUENCE, @DATENOTIME, case when len(@OBJECTIVE) > 0 then replace(@OBJECTIVE, dbo.ufn_constituent_buildname(@CONSTITUENTID) + ': ', '') else '<no subject>' end, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @EXPECTEDSTARTTIME, @EXPECTEDENDTIME, @TIMEZONEENTRYID)

    end
  else if @RECORDTYPECODE = 2
    begin
      update 
        dbo.EXCHANGECALENDARITEMBATCH
      set
        PROCESS = 0
      where
        EXCHANGECALENDARITEMBATCH.STEWARDSHIPSTEPID = @RECORDID and
        EXCHANGECALENDARITEMBATCH.OWNERID = @OWNERID and
        EXCHANGECALENDARITEMBATCH.BATCHID = @BATCHID;

      insert into dbo.EXCHANGECALENDARITEMBATCH
        (ID, BATCHID, RECORDTYPECODE, INTERACTIONID, STEWARDSHIPSTEPID, CONSTITUENTID, OWNERID, SEQUENCE, EXPECTEDDATE, OBJECTIVE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, EXPECTEDSTARTTIME, EXPECTEDENDTIME,TIMEZONEENTRYID)
      values
        (@ID, @BATCHID, @RECORDTYPECODE, null, @RECORDID, @CONSTITUENTID, @OWNERID, @SEQUENCE, @DATENOTIME, case when len(@OBJECTIVE) > 0 then replace(@OBJECTIVE, dbo.ufn_constituent_buildname(@CONSTITUENTID) + ': ', '') else '<no subject>' end, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @EXPECTEDSTARTTIME, @EXPECTEDENDTIME, @TIMEZONEENTRYID)

    end

    if (@BATCHSYSTEMMESSAGETEXT is null) or (len(@BATCHSYSTEMMESSAGETEXT) = 0)
    begin
        --Set the error message here, in case a localized version was not passed in.

        if (@EXPECTEDTIMERANGESPANSMULTIPLEDAYS = 1) and (@EXPECTEDTIMERANGEISVALID = 0)
            set @BATCHSYSTEMMESSAGETEXT = N'The expected start time must be before or the same as the expected end time and both times must be on the same day.';
        else if (@EXPECTEDTIMERANGESPANSMULTIPLEDAYS = 1)
            set @BATCHSYSTEMMESSAGETEXT = N'The expected start time and expected end time must be on the same day.';
        else if (@EXPECTEDTIMERANGEISVALID = 0)
            set @BATCHSYSTEMMESSAGETEXT = N'The expected start time must be before or the same as the expected end time.';
    end

    if len(@BATCHSYSTEMMESSAGETEXT) > 0
    begin
        declare @MESSAGETYPECODE tinyint = 0; --General error

        declare @ORIGINCODE tinyint = 3; --Import


        insert into dbo.EXCHANGECALENDARITEMBATCHBATCHSYSTEMMESSAGES (EXCHANGECALENDARITEMBATCHID, MESSAGETEXT, MESSAGETYPECODE, INVALIDFIELDID, INVALIDFIELDVALUE, ORIGINCODE, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
        values (@ID, @BATCHSYSTEMMESSAGETEXT, @MESSAGETYPECODE, N'EXPECTEDENDTIME', @INVALIDEXPECTEDENDDATEVALUE, @ORIGINCODE, @CHANGEDATE, @CHANGEDATE, @CHANGEAGENTID, @CHANGEAGENTID);

    end