summaryrefslogtreecommitdiff
path: root/Handler
diff options
context:
space:
mode:
Diffstat (limited to 'Handler')
-rw-r--r--Handler/Home.hs29
-rw-r--r--Handler/Register.hs40
2 files changed, 69 insertions, 0 deletions
diff --git a/Handler/Home.hs b/Handler/Home.hs
new file mode 100644
index 0000000..94b206e
--- /dev/null
+++ b/Handler/Home.hs
@@ -0,0 +1,29 @@
+-- sflc-ledger-reports: web interface to hledger-based reports
+-- Copyright (C) 2013 Clint Adams
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as
+-- published by the Free Software Foundation, either version 3 of the
+-- License, or (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+{-# LANGUAGE OverloadedStrings #-}
+module Handler.Home where
+
+import Import
+import Data.Map (keys)
+
+getHomeR :: Handler RepHtml
+getHomeR = do
+ ledgernames <- fmap (keys . hledgerConfig) getYesod
+ defaultLayout $ do
+ setTitle "Ledger reports"
+ $(widgetFile "homepage")
+
diff --git a/Handler/Register.hs b/Handler/Register.hs
new file mode 100644
index 0000000..26e38a2
--- /dev/null
+++ b/Handler/Register.hs
@@ -0,0 +1,40 @@
+-- sflc-ledger-reports: web interface to hledger-based reports
+-- Copyright (C) 2013 Clint Adams
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as
+-- published by the Free Software Foundation, either version 3 of the
+-- License, or (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+{-# LANGUAGE OverloadedStrings #-}
+module Handler.Register where
+
+import Import
+import qualified Data.Text as T
+import Hledger.RegisterCSV
+import qualified Data.Map as Map
+
+typeCsv :: ContentType
+typeCsv = "text/csv; charset=utf-8"
+
+newtype RepCsv = RepCsv Content
+instance HasReps RepCsv where
+ chooseRep (RepCsv c) _ = return (typeCsv, c)
+
+getRegisterR :: Text -> Handler RepCsv
+getRegisterR ledger = do
+ ledgers <- fmap hledgerConfig getYesod
+ case Map.lookup ledger ledgers of
+ Nothing -> notFound
+ Just fn -> do
+ csv <- liftIO $ convertJournalToRegisterCSV fn
+ setHeader "Content-Disposition" (T.concat ["attachment; filename=", ledger, ".csv"])
+ return $ RepCsv $ toContent csv