Compile function REACTOR_MODES_Services(@Service, @Params) Declare function Database_Services, React_Prob_Cat_Services, Reactor_Modes_Services, Memberof, Error_Services Declare subroutine Error_Services, Database_Services, delete, RList #pragma precomp SRP_PreCompiler $insert LOGICAL $insert REACTOR_MODES_EQUATES $insert rlist_equates GoToService Return Response or "" //----------------------------------------------------------------------------- // SERVICES //----------------------------------------------------------------------------- Service AddNotificationGroup(ReactorModesKey, Class) If ReactorModesKey NE '' AND Class NE '' then ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey) Locate Class in ReactorModesRec using @VM setting dummy then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Notifcation already exists') end else ReactorModesRec = Class Database_Services('WriteDataRow','REACTOR_MODES',ReactorModesKey,ReactorModesRec,1,0,1) if Error_Services('HasError') then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': ' : Error_Services('GetMessage')) end end end else Error_Services('Add', 'Error in REACTOR_MODES_SERVICES: Null parameter ReactorModesKey or Class ID.') Return end end service Service DeleteNotificationGroup(ReactorModesKey, Class) If ReactorModesKey NE '' AND Class NE '' then ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey,1,0,1) Locate Class in ReactorModesRec using @VM setting classPos then ReactorModesRec = Delete(ReactorModesRec,REACTOR_MODES_NOTIFY_CLASS$,classPos,0) Database_Services('WriteDataRow', 'REACTOR_MODES',ReactorModesKey,ReactorModesRec) end else Error_Services('Add', 'Error in REACTOR_MODES_SERVICES: Null parameter ReactorModesKey or Class ID.') end end end service Service AddEnterPermission(ReactorModesKey, Group) If ReactorModesKey NE '' AND Group NE '' then ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey) Locate Group in ReactorModesRec using @VM setting dummy then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Group permission already exists') end else ReactorModesRec = Group Database_Services('WriteDataRow','REACTOR_MODES',ReactorModesKey,ReactorModesRec,1,0,1) if Error_Services('HasError') then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': ' : Error_Services('GetMessage')) end end end else Error_Services('Add', 'Error in REACTOR_MODES_SERVICES: Null parameter ReactorModesKey or Group ID.') Return end end service Service AddReleasePermission(ReactorModesKey, Group) If ReactorModesKey NE '' AND Group NE '' then ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey) Locate Group in ReactorModesRec using @VM setting dummy then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Group permission already exists') end else ReactorModesRec = Group Database_Services('WriteDataRow','REACTOR_MODES',ReactorModesKey,ReactorModesRec,1,0,1) if Error_Services('HasError') then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': ' : Error_Services('GetMessage')) end end end else Error_Services('Add', 'Error in REACTOR_MODES_SERVICES: Null parameter ReactorModesKey or Group ID.') Return end end service Service AddServiceCategory(ReactorModesKey, NewServiceName, NewServiceCategory) If ReactorModesKey EQ '' then Error_Services('Add', 'Error in REACTOR_MODES_SERVICES: Null parameter ReactorModesKey.') Return end ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey) NewCatKey = React_Prob_Cat_Services('Create',NewServiceName,NewServiceCategory) ReactorModesRec = NewServiceName ReactorModesRec = NewCatKey Database_Services('WriteDataRow','REACTOR_MODES',ReactorModesKey,ReactorModesRec,1,0,1) End Service Service DeleteServiceCategory(ReactorModesKey, CatId) ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey,1,0,1) Locate CatId in ReactorModesRec using @VM setting catPos then ReactorModesRec = Delete(ReactorModesRec,REACTOR_MODES_SERVICE_CATEGORY_ID$,catPos,0) ReactorModesRec = Delete(ReactorModesRec,REACTOR_MODES_SERVICE_CATEGORIES$,catPos,0) end Database_Services('WriteDataRow', 'REACTOR_MODES',ReactorModesKey,ReactorModesRec) end service Service DeleteEnterPermission(ReactorModesKey, Group) ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey,1,0,1) Locate Group in ReactorModesRec using @VM setting groupPos then ReactorModesRec = Delete(ReactorModesRec,REACTOR_MODES_GROUPS_ENTER$,groupPos,0) end Database_Services('WriteDataRow', 'REACTOR_MODES',ReactorModesKey,ReactorModesRec) end service Service DeleteReleasePermission(ReactorModesKey, Group) ReactorModesRec = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModesKey,1,0,1) Locate Group in ReactorModesRec using @VM setting groupPos then ReactorModesRec = Delete(ReactorModesRec,REACTOR_MODES_GROUPS_RELEASE$,groupPos,0) end Database_Services('WriteDataRow', 'REACTOR_MODES',ReactorModesKey,ReactorModesRec) end service Service GetAllModes() Statement = 'SELECT REACTOR_MODES BY DESCRIPTION' rlist( Statement, target_activelist$, '', '', '' ) ModeList = '' IF @RecCount then EoF = 0 NumKeys = @RecCount Cnt = 0 Loop ReadNext ReactorModeID Else EoF = 1 until EoF ModeList<-1> = ReactorModeID Repeat end Response = ModeList end service Service AvailableModes(ReactorModesKey, CurrUser) CurrMode = ReactorModesKey AllModes = Reactor_Modes_Services('GetAllModes') AllowedModes = '' curModeReleasePerms = XLATE('REACTOR_MODES', ReactorModesKey, REACTOR_MODES_GROUPS_RELEASE$, 'X') canRelease = 0 //Check can release from current mode for each releaseMode in curModeReleasePerms using @VM if Memberof(currUser, releaseMode) then canRelease = 1 end Next releaseMode if canRelease then for each mode in AllModes using @FM modeEnterPerms = XLATE('REACTOR_MODES', mode, REACTOR_MODES_GROUPS_ENTER$, 'X') x = 1 loop while x LE DCount(modeEnterPerms, @VM) If Memberof(currUser, modeEnterPerms<1,x>) then Locate mode in AllowedModes using @FM setting DUMMY else AllowedModes<-1> = mode end end x += 1 repeat Next mode end Response = AllowedModes end service