feat(workflows): delete definitions
This commit is contained in:
parent
ff370c68c7
commit
bda4f81702
@ -2801,4 +2801,8 @@ WorkflowDefinitionEditTitle: Workflow-Definition Bearbeiten
|
||||
|
||||
WorkflowDefinitionListTitle: Workflow-Definitionen
|
||||
WorkflowDefinitionInstanceCount: Instanzen
|
||||
WorkflowDefinitionWorkflowCount: Workflows
|
||||
WorkflowDefinitionWorkflowCount: Workflows
|
||||
WorkflowDefinitionConcreteInstanceCount num@Int64: #{num} Instanzen
|
||||
WorkflowDefinitionConcreteWorkflowCount num@Int64: #{num} Workflows
|
||||
WorkflowDefinitionDeleteQuestion: Wollen Sie die unten aufgeführte Workflow-Definition wirklich löschen?
|
||||
WorkflowDefinitionDeleted: Workflow-Definition gelöscht
|
||||
@ -4,6 +4,49 @@ module Handler.Workflow.Definition.Delete
|
||||
|
||||
import Import
|
||||
|
||||
import Handler.Utils.Delete
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
|
||||
import qualified Data.Set as Set
|
||||
|
||||
|
||||
getAWDDeleteR, postAWDDeleteR :: WorkflowInstanceScope' -> WorkflowDefinitionName -> Handler Html
|
||||
getAWDDeleteR = postAWDDeleteR
|
||||
postAWDDeleteR = error "not implemented"
|
||||
postAWDDeleteR wds' wdn = do
|
||||
wdId <- runDB . getKeyBy404 $ UniqueWorkflowDefinition wdn wds'
|
||||
deleteR DeleteRoute
|
||||
{ drRecords = Set.singleton wdId
|
||||
, drGetInfo = \workflowDefinition -> do
|
||||
let instanceCount = E.subSelectCount . E.from $ \workflowInstance ->
|
||||
E.where_ $ workflowInstance E.^. WorkflowInstanceDefinition E.==. E.just (workflowDefinition E.^. WorkflowDefinitionId)
|
||||
workflowCount = E.subSelectCount . E.from $ \(workflowInstance `E.InnerJoin` workflow) -> do
|
||||
E.on $ workflow E.^. WorkflowWorkflowInstance E.==. E.just (workflowInstance E.^. WorkflowInstanceId)
|
||||
E.where_ $ workflowInstance E.^. WorkflowInstanceDefinition E.==. E.just (workflowDefinition E.^. WorkflowDefinitionId)
|
||||
return ( workflowDefinition E.^. WorkflowDefinitionScope
|
||||
, workflowDefinition E.^. WorkflowDefinitionName
|
||||
, instanceCount, workflowCount
|
||||
)
|
||||
, drUnjoin = id
|
||||
, drRenderRecord = \(E.Value scope, E.Value name, E.Value instanceCount, E.Value workflowCount) ->
|
||||
return [whamlet|
|
||||
$newline never
|
||||
#{name}
|
||||
\ (_{scope}
|
||||
$if instanceCount > 0
|
||||
; _{MsgWorkflowDefinitionConcreteInstanceCount instanceCount}
|
||||
$if workflowCount > 0
|
||||
; _{MsgWorkflowDefinitionConcreteWorkflowCount workflowCount}
|
||||
)
|
||||
|]
|
||||
, drRecordConfirmString = \(E.Value scope, E.Value name, _, _) ->
|
||||
return [st|#{toPathPiece scope}.#{name}|]
|
||||
, drCaption = SomeMessage MsgWorkflowDefinitionDeleteQuestion
|
||||
, drSuccessMessage = SomeMessage MsgWorkflowDefinitionDeleted
|
||||
, drFormMessage = const $ return Nothing
|
||||
, drAbort = SomeRoute AdminWorkflowDefinitionListR
|
||||
, drSuccess = SomeRoute AdminWorkflowDefinitionListR
|
||||
, drDelete = \k cascade -> do
|
||||
updateWhere [WorkflowInstanceDefinition ==. Just k] [WorkflowInstanceDefinition =. Nothing]
|
||||
cascade
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user