Compile function React_Servs_Services(@Service, @Params)
/***********************************************************************************************************************

    This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
    permission from SRP Computer Solutions, Inc.

    Name        :   React_Servs_Services

    Description :   Handler program for all module related services.

    Notes       :   The generic parameters should contain all the necessary information to process the services. Often
                    this will be information like the data Record and Key ID.

    Parameters  :
        Service         [in] -- Name of the service being requested
        Param1-10   [in/out] -- Additional request parameter holders
        Response       [out] -- Response to be sent back to the Controller (MCP) or requesting procedure

    History     :   (Date, Initials, Notes)
        08/02/22    djs     Original programmer.

***********************************************************************************************************************/

#pragma precomp SRP_PreCompiler

$Insert LOGICAL
$Insert RLIST_EQUATES
$Insert REACT_SERVS_EQUATES

Declare function   Database_Services, Error_Services, SRP_JSON, React_Servs_Services
Declare subroutine SRP_JSON, Error_Services, React_Servs_Services

GoToService

Return Response or ""

//-----------------------------------------------------------------------------
// SERVICES
//-----------------------------------------------------------------------------


Service GetReactMetrics()
    
    Response = ''
    ReactMetrics = Xlate('APP_INFO', 'REACTOR_METRICS', 1, 'X', '')
    Swap @VM with @FM in ReactMetrics
    Response = ReactMetrics
    
end service


Service GetAssociatedMetrics(ServID)
    
    AssocMetrics = Xlate('REACT_SERVS', ServID, REACT_SERVS_ASSOC_METRICS$, 'X', '')
    Response = AssocMetrics
    
end service


Service GetReactServs()
    
    Response = ''
    Query    = 'SELECT REACT_SERVS BY SERV_ID'
    GoSub ClearCursors
    RList(Query, TARGET_ACTIVELIST$, '', '', '')
    If Not(Get_Status(ErrCode)) then
        EOF = False$
        Loop
            ReadNext KeyID else EOF = True$
            Until EOF
                Response<-1> = KeyID
        Repeat
    end
    
End Service


Service ConvertRecordToJSON(KeyID, Record, itemURL)
 
    jsonRecord    = ''

    If KeyID NE '' then

        If Record EQ '' then Record = Database_Services('ReadDataRow', 'REACT_SERVS', KeyID)
        If Error_Services('NoError') then
            @DICT    = Database_Services('GetTableHandle', 'DICT.REACT_SERVS')
            @ID      = KeyID
            @RECORD  = Record
            If SRP_JSON(objJSON, 'New', 'Object') then
                
                If SRP_JSON(objReactServ, 'New', 'Object') then 
                    SRP_JSON(objReactServ, 'SetValue', 'keyId', @ID)
                    SRP_JSON(objReactServ, 'SetValue', 'reactType', {REACT_TYPE})
                    SRP_JSON(objReactServ, 'SetValue', 'action', {ACTION})
                    SRP_JSON(objReactServ, 'SetValue', 'description', {DESCRIPTION})
                    //SRP_JSON(objReactServ, 'SetValue', 'graphiteOrTube', OConv({GRAPHITE_OR_TUBE}, '[GRAPHITE_OR_TUBE_CONV]'))
                    SRP_JSON(objReactServ, 'SetValue', 'graphiteOrTube', {GRAPHITE_OR_TUBE})
                    SRP_JSON(objReactServ, 'SetValue', 'inactiveDate', OConv({INACTIVE_DATE}, 'D4/'))
                    SRP_JSON(objReactServ, 'SetValue', 'injectorChange', {INJECTOR_CHANGE}, 'Boolean')
                    SRP_JSON(objReactServ, 'SetValue', 'noteRequired', {NOTE_REQ}, 'Boolean')
                    SRP_JSON(objReactServ, 'SetValue', 'pmDays', {PM_DAYS})
                    SRP_JSON(objReactServ, 'SetValue', 'reactGas', {REACT_GAS})
                    SRP_JSON(objReactServ, 'SetValue', 'reactItem', {REACT_ITEM})
                    SRP_JSON(objReactServ, 'SetValue', 'reactItemDesc', {REACT_ITEM_DESC})
                    SRP_JSON(objReactServ, 'SetValue', 'reactItemType', {REACT_ITEM_TYPE})
                    SRP_JSON(objReactServ, 'SetValue', 'reactServCatId', {REACT_SERV_CAT_ID})
                    SRP_JSON(objReactServ, 'SetValue', 'reactServCatDesc', {REACT_SERV_CAT_DESC})
                    SRP_JSON(objReactServ, 'SetValue', 'reactSystem', {REACT_SYSTEM})
                    SRP_JSON(objReactServ, 'SetValue', 'requireArmWandData', {REQ_ARM_WAND_DATA})
                    SRP_JSON(objReactServ, 'SetValue', 'status', {STATUS})
                    SRP_JSON(objReactServ, 'SetValue', 'svcDesc', {SVC_DESC})
                    SRP_JSON(objReactServ, 'SetValue', 'sysDesc', {SYS_DESC})
                    SRP_JSON(objReactServ, 'SetValue', 'tcChangeService', {TC_CHANGE_SERVICE})
                    SRP_JSON(objJSON, 'Set', 'reactServ', objReactServ)
                    SRP_JSON(objReactServ, 'Release')
                end
                
                If itemURL NE '' then
                    // The itemURL was passed in so add HAL+JSON properties.

                    // Create the _links property and then all link objects needed for this resource.
                    If SRP_JSON(objLinks, 'New', 'Object') then
                        // Create a self link.
                        If SRP_JSON(objLink, 'New', 'Object') then
                            SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String')
                            SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String')
                            SRP_JSON(objLinks, 'Set', 'self', objLink)
                            SRP_JSON(objLink, 'Release')
                        end
                        SRP_JSON(objJSON, 'Set', '_links', objLinks)
                        SRP_JSON(objLinks, 'Release')
                    end

                    // Create the _class property for this resource.
                    SRP_JSON(objJSON, 'SetValue', '_class', 'resource')
                end
                jsonRecord = SRP_JSON(objJSON, 'Stringify', 'Styled')
                SRP_JSON(objJSON, 'Release')
            end else
                Error_Services('Add', 'Unable to create JSON representation in the ' : Service : ' service.')
            end
        end
    end else
        Error_Services('Add', 'KeyID argument was missing in the ' : Service : ' service.')
    end

    Response    = jsonRecord

end service


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ClearCursors:
    
    For counter = 0 to 8
        ClearSelect counter
    Next counter
    
return

