diff options
Diffstat (limited to 'Handler')
-rw-r--r-- | Handler/Home.hs | 1 | ||||
-rw-r--r-- | Handler/Journal.hs | 45 |
2 files changed, 46 insertions, 0 deletions
diff --git a/Handler/Home.hs b/Handler/Home.hs index 94b206e..7e8d79d 100644 --- a/Handler/Home.hs +++ b/Handler/Home.hs @@ -19,6 +19,7 @@ module Handler.Home where import Import import Data.Map (keys) +import Hledger.JournalCSVs (JReportType(..)) getHomeR :: Handler RepHtml getHomeR = do diff --git a/Handler/Journal.hs b/Handler/Journal.hs new file mode 100644 index 0000000..dc68fa5 --- /dev/null +++ b/Handler/Journal.hs @@ -0,0 +1,45 @@ +-- 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.Journal where + +import Import +import qualified Data.Text as T +import Hledger.JournalCSVs +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) + +getJournalR :: JReportType -> Text -> Handler RepCsv +getJournalR jrt ledger = do + ledgers <- fmap hledgerConfig getYesod + case Map.lookup ledger ledgers of + Nothing -> notFound + Just fn -> do + csv <- liftIO $ (jReport jrt) fn + setHeader "Content-Disposition" (T.concat ["attachment; filename=", ledger, "-", (T.pack . show) jrt, ".csv"]) + return $ RepCsv $ toContent csv + where + jReport PandL = pAndL + jReport Assets = assets + jReport Liabilities = liabilities + jReport Everything = everything |