{-# LANGUAGE OverloadedStrings #-}

module Data.Aviation.Casr.Logbook.Reports.Meta.Html(
  htmlExpenseReport
, htmlReports
) where

import Control.Category((.))
import Data.Aviation.Casr.Logbook.Reports(getFlightTimeReport, getSimulatorTimeReport)
import Data.Aviation.Casr.Logbook.Reports.Html(htmlFlightTimeReport, htmlSimulatorTimeReport, htmlTakeOffLanding90, takeoffslandings90)
import Data.Aviation.Casr.Logbook.Reports.Meta(ExpenseReport(ExpenseReport), logbookExpenseReport)
import Data.Aviation.Casr.Logbook.Meta(AircraftFlightMeta, SimulatorFlightMeta, ExamMeta, BriefingMeta)
import Data.Aviation.Casr.Logbook.Meta.Html(showThousandCentsAsDollars, showHundredCentsAsDollars)
import Data.Aviation.Casr.Logbook(Logbook)
import Data.Function(($))
import Data.String(fromString)
import qualified Data.Text as Text(pack)
import Lucid(
    hr_
  , class_
  , ul_
  , li_
  , span_
  , h3_
  , div_
  , a_
  , id_
  , href_
  , Html
  )
import Prelude((+))

htmlExpenseReport ::
  Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta
  -> ExpenseReport
  -> Html ()
htmlExpenseReport _ (ExpenseReport ag al b e s) =
  div_ [class_ "expensereport"] $
    do  a_ [id_ "RPT_Expense"] ""
        a_ [href_ (Text.pack ("#RPT_Expense"))] . span_ [class_ "entrytag"] $ "RPT"
        h3_ [class_ "expensereportname"] "Expense Report"     
        do  ul_ [] $
              do  li_ [] $
                    do  span_ [class_ "key"] "Aircraft: "
                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ ag + al
                        ul_ [] $
                          do  li_ [] $
                                do  span_ [class_ "key"] "Usage: "
                                    span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ ag
                              li_ [] $
                                do  span_ [class_ "key"] "Landing: "
                                    span_ [class_ "value"] . fromString . ('$':) . showHundredCentsAsDollars $ al
                  li_ [] $
                    do  span_ [class_ "key"] "Briefing: "
                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ b
                  li_ [] $
                    do  span_ [class_ "key"] "Exam: "
                        span_ [class_ "value"] . fromString . ('$':) . showHundredCentsAsDollars $ e
                  li_ [] $
                    do  span_ [class_ "key"] "Simulator: "
                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ s
                  li_ [] $
                    do  span_ [class_ "key"] "TOTAL: "
                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ (ag + al + b + e + s)

htmlReports ::
  Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta
  -> Html ()
htmlReports b =
  do  htmlFlightTimeReport b (getFlightTimeReport b)
      hr_ [] 
      htmlSimulatorTimeReport b (getSimulatorTimeReport b)
      hr_ [] 
      htmlTakeOffLanding90 b (takeoffslandings90 b)
      hr_ [] 
      htmlExpenseReport b (logbookExpenseReport b)