Compile function React_Mode_NG_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_Mode_NG_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 Metadata : History : (Date, Initials, Notes) 07/19/2022 djs Original programmer. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler $insert APP_INSERTS $insert SERVICE_SETUP $Insert REACT_MODE_NG_EQUATES $insert RLIST_EQUATES Declare function SRP_JSON, Database_Services, Reactor_Modes_Services, Get_Status Declare subroutine SRP_JSON, Set_Status, RList, Errmsg GoToService Return Response or "" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Services //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Service ConvertRecordToJSON(ReactModeNGKey, ItemURL, CurrUser) ErrorMsg = '' JSON = '' If ReactModeNGKey then @Record = Database_Services('ReadDataRow', 'REACT_MODE_NG', ReactModeNGKey) @Dict = Database_Services('GetTableHandle', 'DICT.REACT_MODE_NG') @ID = ReactModeNGKey If Error_Services('NoError') then objJSON = '' If SRP_JSON(objJSON, 'New', 'Object') then // Create reactor mode object objReactMode = '' If SRP_JSON(objReactMode, 'New', 'Object') then CurrMode = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_MODE$, 'X') ServiceDesc = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_SERVICE_DESC$, 'X') If (CurrUser NE '') then AvailModes = Reactor_Modes_Services('AvailableModes', CurrMode, CurrUser) CurrRLKey = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_START_RL_ID$ , 'X') StartDTM = Field(Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_START_DTM$, 'X'),'*',2) StartUser = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_START_USER$, 'X') StartNote = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_START_NOTE$, 'X') E10State = Xlate('REACTOR_MODES', CurrMode, 'E10_STATE', 'X') StopDTM = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_STOP_DTM$, 'X') StopUser = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_STOP_USER$, 'X') StopNote = Xlate('REACT_MODE_NG', ReactModeNGKey, REACT_MODE_NG_STOP_NOTE$, 'X') SRP_JSON(objReactMode, 'SetValue', 'reactModeKey', ReactModeNGKey, 'String') SRP_JSON(objReactMode, 'SetValue', 'currMode', CurrMode, 'String') SRP_JSON(objReactMode, 'SetValue', 'e10State', E10State, 'String') SRP_JSON(objReactMode, 'SetValue', 'serviceDesc', ServiceDesc, 'String') SRP_JSON(objReactMode, 'SetValue', 'reactLogKey', CurrRLKey, 'Number') SRP_JSON(objReactMode, 'SetValue', 'startDate', OCONV(StartDTM, 'DT/^S'), 'DateTime') SRP_JSON(objReactMode, 'SetValue', 'startUser', StartUser, 'String') SRP_JSON(objReactMode, 'SetValue', 'startNote', StartNote, 'String') SRP_JSON(objReactMode, 'SetValue', 'stopDTM', OCONV(StopDTM, 'DT/^S'), 'DateTime') SRP_JSON(objReactMode, 'SetValue', 'stopUser', StopUser, 'String') SRP_JSON(objReactMode, 'SetValue', 'stopNote', StopNote, 'String') objModesArray = '' If SRP_JSON(objModesArray, 'New', 'Array') then If Assigned(AvailModes) then For each AvailMode in AvailModes using @FM setting fPos objMode = '' If SRP_JSON(objMode, 'New', 'Object') then SRP_JSON(objMode, 'SetValue', 'mode', AvailMode, 'String') SubCats = Xlate('REACTOR_MODES', AvailMode, 'SERVICE_CATEGORIES', 'X') SRP_JSON(objMode, 'SetValueArray', 'subCategories', SubCats, @VM) SRP_JSON(objModesArray, 'Add', objMode) SRP_JSON(objMode, 'Release') end Next AvailMode // Add modes array object to reactor object SRP_JSON(objReactMode, 'Set', 'availableModes', objModesArray) SRP_JSON(objModesArray, 'Release') end 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. objLinks = '' If SRP_JSON(objLinks, 'New', 'Object') then // Create a self link. objLink = '' 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(objReactMode, 'Set', '_links', objLinks) SRP_JSON(objLinks, 'Release') end // Create the _class property for this resource. SRP_JSON(objReactMode, 'SetValue', '_class', 'resource') end SRP_JSON(objJSON, 'Set', 'reactorMode', objReactMode) SRP_JSON(objReactMode, 'Release') end JSON = SRP_JSON(objJSON, 'Stringify', 'Styled') SRP_JSON(objJSON, 'Release') end else ErrorMsg = 'Error in ':Service:' service. Error creating JSON object.' end end else ErrorMsg = Error_Services('GetMessage') end end else ErrorMsg = 'Error in ':Service:' service. Null ReactModeNGKey passed in.' end If ErrorMsg EQ '' then Response = JSON end else Error_Services('Add', ErrorMsg) end End Service Service GetReactModeHistoryKeys(ReactNo, DaysToReport) StartDt = OCONV(Date() - DaysToReport, 'D4/') Response = '' SelectSent = 'SELECT REACT_MODE_NG WITH REACT_NO = ':QUOTE(ReactNo):' AND WITH START_DT GE ':QUOTE(StartDt):' BY-DSND START_DTM ' Set_Status(0) RList(SelectSent, TARGET_ACTIVELIST$, "", "", "") errCode = '' IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END IF @RecCount then EoF = 0 NumKeys = @RecCount Cnt = 0 Loop ReadNext Mode Else EoF = 1 until EoF Response<-1> = Mode Repeat end end service //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ClearCursors: For counter = 0 to 8 ClearSelect counter Next counter return