26 lines
935 B
Haskell
26 lines
935 B
Haskell
|
|
module Web.Controller.Requirements where
|
||
|
|
|
||
|
|
import Web.Types
|
||
|
|
import Web.View.Requirements.Index
|
||
|
|
import Web.View.Requirements.Show
|
||
|
|
import Generated.Types
|
||
|
|
import IHP.Prelude
|
||
|
|
import IHP.ControllerPrelude
|
||
|
|
|
||
|
|
instance Controller RequirementsController where
|
||
|
|
beforeAction = ensureIsUser
|
||
|
|
|
||
|
|
action RequirementsAction = do
|
||
|
|
requirements <- query @Requirement |> orderByDesc #createdAt |> fetch
|
||
|
|
candidates <- query @RequirementCandidate |> fetch
|
||
|
|
render IndexView { requirements, candidates }
|
||
|
|
|
||
|
|
action ShowRequirementAction { requirementId } = do
|
||
|
|
requirement <- fetch requirementId
|
||
|
|
candidate <- fetch requirement.sourceCandidateId
|
||
|
|
widget <- fetch candidate.sourceWidgetId
|
||
|
|
mDecision <- query @DecisionRecord
|
||
|
|
|> filterWhere (#requirementId, Just requirementId)
|
||
|
|
|> fetchOneOrNothing
|
||
|
|
render ShowView { requirement, candidate, widget, mDecision }
|