open-insight/LSL2/STPROC/REACTOR_MODES_SERVICES.txt
2024-03-25 14:46:21 -07:00

179 lines
7.8 KiB
Plaintext

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<REACTOR_MODES_NOTIFY_CLASS$> using @VM setting dummy then
Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Notifcation already exists')
end else
ReactorModesRec<REACTOR_MODES_NOTIFY_CLASS$, -1> = 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<REACTOR_MODES_NOTIFY_CLASS$> 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<REACTOR_MODES_GROUPS_ENTER$> using @VM setting dummy then
Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Group permission already exists')
end else
ReactorModesRec<REACTOR_MODES_GROUPS_ENTER$, -1> = 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<REACTOR_MODES_GROUPS_RELEASE$> using @VM setting dummy then
Error_Services('Add', 'Error in REACTOR_MODES_SERVICES ' : Service : ': Group permission already exists')
end else
ReactorModesRec<REACTOR_MODES_GROUPS_RELEASE$, -1> = 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<REACTOR_MODES_SERVICE_CATEGORIES$, -1> = NewServiceName
ReactorModesRec<REACTOR_MODES_SERVICE_CATEGORY_ID$, -1> = 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<REACTOR_MODES_SERVICE_CATEGORY_ID$> 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<REACTOR_MODES_GROUPS_ENTER$> 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<REACTOR_MODES_GROUPS_RELEASE$> 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