blob: 5565b43243207fc69381d3d914e2390d0ba38b94 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
module Controller.Category
( create
, edit
, delete
) where
import Control.Monad.IO.Class (liftIO)
import qualified Data.Text.Lazy as TL
import Network.HTTP.Types.Status (badRequest400, ok200)
import Web.Scotty hiding (delete)
import Common.Model (CategoryId, CreateCategory (..),
EditCategory (..))
import qualified Common.Msg as Msg
import Json (jsonId)
import qualified Model.Category as Category
import qualified Model.PaymentCategory as PaymentCategory
import qualified Model.Query as Query
import qualified Secure
create :: CreateCategory -> ActionM ()
create (CreateCategory name color) =
Secure.loggedAction (\_ ->
(liftIO . Query.run $ Category.create name color) >>= jsonId
)
edit :: EditCategory -> ActionM ()
edit (EditCategory categoryId name color) =
Secure.loggedAction (\_ -> do
updated <- liftIO . Query.run $ Category.edit categoryId name color
if updated
then status ok200
else status badRequest400
)
delete :: CategoryId -> ActionM ()
delete categoryId =
Secure.loggedAction (\_ -> do
deleted <- liftIO . Query.run $ do
paymentCategories <- PaymentCategory.listByCategory categoryId
if null paymentCategories
then Category.delete categoryId
else return False
if deleted
then
status ok200
else do
status badRequest400
text . TL.fromStrict $ Msg.get Msg.Category_NotDeleted
)
|