USP_TRACK_STAFFRESOURCES_PROCESS

Updates a set of track resources to become itinerary resources and creates jobs as needed.

Parameters

Parameter Parameter Type Mode Description
@STAFFRESOURCES xml INOUT
@CHANGEAGENTID uniqueidentifier IN
@CAPACITY int IN

Definition

Copy


            create procedure dbo.USP_TRACK_STAFFRESOURCES_PROCESS
            (
                @STAFFRESOURCES xml output,
                @CHANGEAGENTID uniqueidentifier = null,
                @CAPACITY int = 0
            )
            as
            begin
                set nocount on;

                /*
                    What we are passed is a set of track staff resources possibly without jobs.
                    what we want to produce is a set of itinerary staff resources all with jobs,
                        also we update the track staff resources to have the new jobs. 
                */

                /* Setup save information */
                if @CHANGEAGENTID is null  
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;    

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getdate();            

                /* We have an existing function for processing a set of staff resources and creating jobs */
                exec dbo.USP_STAFFRESOURCE_PROCESS @STAFFRESOURCES output, @CHANGEAGENTID, 1, 1, @CAPACITY;

                /* DESERIALIZE */
                declare @STAFFRESOURCESTABLE table
                (
                    FILLEDBYCODE tinyint,
                    ID uniqueidentifier,
                    JOBDESCRIPTION nvarchar(255),
                    JOBID uniqueidentifier,
                    JOBNAME nvarchar(100)
                );

                insert into @STAFFRESOURCESTABLE
                    (FILLEDBYCODE, ID, JOBDESCRIPTION, JOBID, JOBNAME)
                select T.c.value('(FILLEDBYCODE)[1]','tinyint') AS 'FILLEDBYCODE',
                        T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
                        T.c.value('(JOBDESCRIPTION)[1]','nvarchar(255)') AS 'JOBDESCRIPTION',
                        T.c.value('(JOBID)[1]','uniqueidentifier') AS 'JOBID',
                        T.c.value('(JOBNAME)[1]','nvarchar(100)') AS 'JOBNAME'
                from @STAFFRESOURCES.nodes('/STAFFRESOURCES/ITEM') T(c);

                /* Update the TRACKSTAFFRESOURCE table with the new job information. */
                update dbo.TRACKSTAFFRESOURCE
                    set JOBID = STAFFRESOURCESTABLE.JOBID,
                        JOBNAME = STAFFRESOURCESTABLE.JOBNAME,
                        JOBDESCRIPTION = STAFFRESOURCESTABLE.JOBDESCRIPTION,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                from dbo.TRACKSTAFFRESOURCE
                    inner join @STAFFRESOURCESTABLE as STAFFRESOURCESTABLE
                        on STAFFRESOURCESTABLE.ID = TRACKSTAFFRESOURCE.ID
                where (not STAFFRESOURCESTABLE.JOBID is null) and (STAFFRESOURCESTABLE.FILLEDBYCODE = 0); /* Filled by = Volunteer */
            end