aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Income/Add.hs
blob: 7780d73d5c68f3c80a56b0002f1126682328b81d (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
module View.Income.Add
  ( view
  , In(..)
  ) where

import           Control.Monad.IO.Class (liftIO)
import qualified Data.Maybe             as Maybe
import qualified Data.Text              as T
import qualified Data.Time.Clock        as Time
import           Reflex.Dom             (MonadWidget)

import           Common.Model           (CreateIncomeForm (..), Income (..))
import qualified Common.Msg             as Msg
import qualified Common.Util.Time       as TimeUtil
import qualified Component.Form
import qualified Component.Modal        as Modal
import qualified Util.Ajax              as Ajax
import qualified View.Income.Form       as Form

data In t = In
  { _in_income :: Maybe Income
  }

view :: forall t m. MonadWidget t m => In t -> Modal.Content t m Income
view input cancel = do

  currentDay <- liftIO $ Time.getCurrentTime >>= TimeUtil.timeToDay

  let amount =
        Maybe.fromMaybe "" ((T.pack . show . _income_amount) <$> (_in_income input))

  form <-
    Component.Form.view $ Form.view $ Form.In
      { Form._in_cancel = cancel
      , Form._in_headerLabel = Msg.get Msg.Income_AddLong
      , Form._in_amount = amount
      , Form._in_date = currentDay
      , Form._in_mkPayload = CreateIncomeForm
      , Form._in_ajax = Ajax.post
      }

  return (Form._out_hide form, Form._out_addIncome form)