TR_ITINERARYITEMSTAFFRESOURCE_INSERT_JOBOCCURRENCE

Definition

Copy


                    CREATE trigger [dbo].[TR_ITINERARYITEMSTAFFRESOURCE_INSERT_JOBOCCURRENCE] 
                        on [dbo].[ITINERARYITEMSTAFFRESOURCE] 
                        after insert not for replication
                    as begin
                        /* Before a row is inserted here the job needs to exist.
                          This trigger merely makes sure that there are proper job occurences for this job. */

                        /* We need some data for the inserts that are going to follow. */
                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = GetDate();

                        /* Create a map of JOBOCCURRENCEIDs to ITINERARYITEMSTAFFRESOURCEIDs 
                            so we can set the JOBOCCURRENCEID on the ITINERARYITEMSTAFFRESOURCE. */
                        declare @JOBMAP TABLE
                        (
                            ITINERARYITEMSTAFFRESOURCEID uniqueidentifier,
                            JOBOCCURRENCEID uniqueidentifier,
                            CHANGEAGENTID uniqueidentifier
                        )

                        insert into @JOBMAP
                            (ITINERARYITEMSTAFFRESOURCEID, JOBOCCURRENCEID, CHANGEAGENTID)
                        select ID, newid(), inserted.CHANGEDBYID
                        from inserted
                        where (inserted.JOBOCCURRENCEID is null) and
                                (inserted.FILLEDBYCODE = 0) and
                                (not inserted.JOBID is null)

                        /* Now insert some new job occurences */
                        insert into dbo.JOBOCCURRENCE (ID, JOBID, DESCRIPTION, VOLUNTEERSNEEDED,
                                            TYPECODE, STARTDATE, ENDDATE, 
                                            STARTMONTHDAY, ENDMONTHDAY, STARTTIME, ENDTIME, 
                                            ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        select
                            JOBMAP.JOBOCCURRENCEID,
                            NEWITINERARYITEMSTAFFRESOURCE.JOBID,
                            left(JOB.NAME, 30),
                            NEWITINERARYITEMSTAFFRESOURCE.QUANTITYNEEDED,
                            0 as TYPECODE,
                            ITINERARYITEM.STARTDATE,
                            ITINERARYITEM.ENDDATE,
                            '0000' as STARTMONTHDAY,
                            '0000' as ENDMONTHDAY,
                            ITINERARYITEM.STARTTIME,
                            ITINERARYITEM.ENDTIME,
                            NEWITINERARYITEMSTAFFRESOURCE.ADDEDBYID,
                            NEWITINERARYITEMSTAFFRESOURCE.CHANGEDBYID,
                            @CURRENTDATE as DATEADDED,
                            @CURRENTDATE as DATECHANGED
                        from inserted as NEWITINERARYITEMSTAFFRESOURCE
                            inner join dbo.JOB
                                on NEWITINERARYITEMSTAFFRESOURCE.JOBID = JOB.ID
                            inner join dbo.ITINERARYITEM
                                on ITINERARYITEM.ID = NEWITINERARYITEMSTAFFRESOURCE.ITINERARYITEMID
                            inner join @JOBMAP as JOBMAP
                                on JOBMAP.ITINERARYITEMSTAFFRESOURCEID = NEWITINERARYITEMSTAFFRESOURCE.ID

                        /* Now update the ITINERARYITEMSTAFFRESOURCE table with the correct JOBOCCURRENCEIDs */
                        update dbo.ITINERARYITEMSTAFFRESOURCE
                            set ITINERARYITEMSTAFFRESOURCE.JOBOCCURRENCEID = JOBMAP.JOBOCCURRENCEID,
                                ITINERARYITEMSTAFFRESOURCE.CHANGEDBYID = JOBMAP.CHANGEAGENTID,
                                ITINERARYITEMSTAFFRESOURCE.DATECHANGED = @CURRENTDATE
                        from dbo.ITINERARYITEMSTAFFRESOURCE
                            inner join @JOBMAP as JOBMAP
                                on JOBMAP.ITINERARYITEMSTAFFRESOURCEID = ITINERARYITEMSTAFFRESOURCE.ID
                    end