feat(workflows): delete definitions

This commit is contained in:
Gregor Kleen 2020-06-15 14:52:00 +02:00
parent ff370c68c7
commit bda4f81702
2 changed files with 49 additions and 2 deletions

View File

@ -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

View File

@ -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
}