aboutsummaryrefslogtreecommitdiff
path: root/server/src/Main.hs
diff options
context:
space:
mode:
authorJoris2018-01-03 17:31:20 +0100
committerJoris2018-01-03 17:31:22 +0100
commita4acc2e84158fa822f88a1d0bdddb470708b5809 (patch)
tree3faeb0128a51b437501470bd38be62e6e871e9f3 /server/src/Main.hs
parent49426740e8e0c59040f4f3721a658f225572582b (diff)
downloadbudget-a4acc2e84158fa822f88a1d0bdddb470708b5809.tar.gz
budget-a4acc2e84158fa822f88a1d0bdddb470708b5809.tar.bz2
budget-a4acc2e84158fa822f88a1d0bdddb470708b5809.zip
Modify weelky report and payment search interface
- Add payment balance in weekly report - Show a message and hide pages when the search results in no results - Go to page 1 when the search is updated / erased
Diffstat (limited to 'server/src/Main.hs')
-rw-r--r--server/src/Main.hs81
1 files changed, 30 insertions, 51 deletions
diff --git a/server/src/Main.hs b/server/src/Main.hs
index c8080dc..e298a06 100644
--- a/server/src/Main.hs
+++ b/server/src/Main.hs
@@ -1,83 +1,62 @@
-import Control.Applicative (liftA3)
-import Control.Monad.IO.Class (liftIO)
-
-import qualified Data.Text.Lazy as LT
import Network.Wai.Middleware.Gzip (GzipFiles (GzipCompress))
import qualified Network.Wai.Middleware.Gzip as W
import Network.Wai.Middleware.Static
-import Web.Scotty
-
-import Common.Model (Frequency (..), Payment (..))
-import qualified Common.Model as CM
+import qualified Web.Scotty as S
import qualified Conf
import qualified Controller.Category as Category
import qualified Controller.Income as Income
import qualified Controller.Index as Index
import qualified Controller.Payment as Payment
-import qualified Controller.SignIn as SignIn
-import qualified Data.Time as Time
import Job.Daemon (runDaemons)
-import qualified Model.Income as IncomeM
-import qualified Model.Payment as PaymentM
-import qualified Model.Query as Query
-import qualified Model.User as UserM
main :: IO ()
main = do
conf <- Conf.get "application.conf"
_ <- runDaemons conf
- scotty (Conf.port conf) $ do
- middleware $ W.gzip $ W.def { W.gzipFiles = GzipCompress }
- middleware . staticPolicy $ noDots >-> addBase "public"
+ S.scotty (Conf.port conf) $ do
+ S.middleware $ W.gzip $ W.def { W.gzipFiles = GzipCompress }
+ S.middleware . staticPolicy $ noDots >-> addBase "public"
- get "/exceedingPayer" $ do
- time <- liftIO Time.getCurrentTime
- (users, incomes, payments) <- liftIO . Query.run $
- liftA3 (,,) UserM.list IncomeM.list PaymentM.list
- let punctualPayments = filter ((==) Punctual . _payment_frequency) payments
- exceedingPayers = CM.getExceedingPayers time users incomes punctualPayments
- text . LT.pack . show $ exceedingPayers
+ S.get "/" $ do
+ Index.get conf
- get "/" $ do
- signInToken <- mbParam "signInToken"
- Index.get conf signInToken
+ S.post "/askSignIn" $ do
+ S.jsonData >>= Index.askSignIn conf
- post "/signIn" $ do
- jsonData >>= SignIn.signIn conf
+ S.get "/signIn/:signInToken" $ do
+ signInToken <- S.param "signInToken"
+ Index.trySignIn conf signInToken
- post "/signOut" $
+ S.post "/signOut" $
Index.signOut conf
- post "/payment" $
- jsonData >>= Payment.create
+ S.post "/payment" $
+ S.jsonData >>= Payment.create
- put "/payment" $
- jsonData >>= Payment.editOwn
+ S.put "/payment" $
+ S.jsonData >>= Payment.editOwn
- delete "/payment" $ do
- paymentId <- param "id"
+ S.delete "/payment" $ do
+ paymentId <- S.param "id"
Payment.deleteOwn paymentId
- post "/income" $
- jsonData >>= Income.create
+ S.post "/income" $
+ S.jsonData >>= Income.create
- put "/income" $
- jsonData >>= Income.editOwn
+ S.put "/income" $
+ S.jsonData >>= Income.editOwn
- delete "/income" $ do
- incomeId <- param "id"
+ S.delete "/income" $ do
+ incomeId <- S.param "id"
Income.deleteOwn incomeId
- post "/category" $
- jsonData >>= Category.create
+ S.post "/category" $
+ S.jsonData >>= Category.create
- put "/category" $
- jsonData >>= Category.edit
+ S.put "/category" $
+ S.jsonData >>= Category.edit
- delete "/category" $ do
- categoryId <- param "id"
+ S.delete "/category" $ do
+ categoryId <- S.param "id"
Category.delete categoryId
-
-mbParam :: Parsable a => LT.Text -> ActionM (Maybe a)
-mbParam key = (Just <$> param key) `rescue` (const . return $ Nothing)