blob: 148b71395d87befdf1a84f4c3a74177310bcf269 (
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
|
{-# LANGUAGE OverloadedStrings #-}
module Controller.Income
( create
, editOwn
, deleteOwn
) where
import Control.Monad.IO.Class (liftIO)
import Network.HTTP.Types.Status (ok200, badRequest400)
import qualified Data.Text.Lazy as TL
import Web.Scotty
import qualified Common.Message as Message
import qualified Common.Message.Key as Key
import Common.Model (CreateIncome(..), EditIncome(..), IncomeId, User(..))
import Json (jsonId)
import qualified Model.Income as Income
import qualified Model.Query as Query
import qualified Secure
create :: CreateIncome -> ActionM ()
create (CreateIncome date amount) =
Secure.loggedAction (\user ->
(liftIO . Query.run $ Income.create (_user_id user) date amount) >>= jsonId
)
editOwn :: EditIncome -> ActionM ()
editOwn (EditIncome incomeId date amount) =
Secure.loggedAction (\user -> do
updated <- liftIO . Query.run $ Income.editOwn (_user_id user) incomeId date amount
if updated
then status ok200
else status badRequest400
)
deleteOwn :: IncomeId -> ActionM ()
deleteOwn incomeId =
Secure.loggedAction (\user -> do
deleted <- liftIO . Query.run $ Income.deleteOwn user incomeId
if deleted
then
status ok200
else do
status badRequest400
text . TL.fromStrict $ Message.get Key.Income_NotDeleted
)
|