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)