blob: 271d9704fd6d730b2ee9d8d04a428041b8c5396d (
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
52
53
54
55
56
57
58
59
60
61
62
63
64
|
module Controller.Payment
( getPaymentsAction
, createPaymentAction
, deletePaymentAction
, getTotalPaymentsAction
, getPaymentsCountAction
) where
import Web.Scotty
import Network.HTTP.Types.Status (ok200, badRequest400)
import Database.Persist
import Control.Monad.IO.Class (liftIO)
import Data.Text (Text)
import qualified Secure
import Model.Database
import Model.Payment
import Model.Json.Message
import Model.Json.Number
import Model.Message
import Model.Message.Key (Key(PaymentNotDeleted))
getPaymentsAction :: Int -> Int -> ActionM ()
getPaymentsAction page perPage =
Secure.loggedAction (\_ -> do
payments <- liftIO $ runDb (getPayments page perPage)
json payments
)
createPaymentAction :: Text -> Int -> ActionM ()
createPaymentAction name cost =
Secure.loggedAction (\user -> do
paymentKey <- liftIO . runDb $ createPayment (entityKey user) name cost
json . Message . paymentKeyToText $ paymentKey
)
deletePaymentAction :: Text -> ActionM ()
deletePaymentAction paymentId =
Secure.loggedAction (\user -> do
deleted <- liftIO . runDb $ deleteOwnPayment user (textToKey paymentId)
if deleted
then
status ok200
else do
status badRequest400
json . Message . getMessage $ PaymentNotDeleted
)
getTotalPaymentsAction :: ActionM ()
getTotalPaymentsAction =
Secure.loggedAction (\_ -> do
(liftIO . runDb $ getTotalPayments) >>= json
)
getPaymentsCountAction :: ActionM ()
getPaymentsCountAction =
Secure.loggedAction (\_ -> do
Number <$> (liftIO . runDb $ getPaymentsCount) >>= json
)
|