From 8cd63a64abafe21378c35c2489d49f24c9ece3c9 Mon Sep 17 00:00:00 2001 From: Joris Date: Mon, 4 Apr 2016 01:27:36 +0200 Subject: Add income list CRUD in user page --- src/server/Model/Income.hs | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'src/server/Model/Income.hs') diff --git a/src/server/Model/Income.hs b/src/server/Model/Income.hs index 2177617..c0cac45 100644 --- a/src/server/Model/Income.hs +++ b/src/server/Model/Income.hs @@ -1,11 +1,11 @@ module Model.Income ( getJsonIncome - , getFirstIncome , getIncomes - , setIncome + , addIncome + , deleteOwnIncome ) where -import Data.Time.Clock (getCurrentTime) +import Data.Time.Clock (UTCTime, getCurrentTime) import Control.Monad.IO.Class (liftIO) @@ -20,13 +20,23 @@ getJsonIncome incomeEntity = where income = entityVal incomeEntity getIncomes :: Persist [Entity Income] -getIncomes = selectList [] [] - -getFirstIncome :: UserId -> Persist (Maybe Income) -getFirstIncome userId = - fmap entityVal <$> selectFirst [IncomeUserId ==. userId] [Asc IncomeCreation] - -setIncome :: UserId -> Int -> Persist IncomeId -setIncome userId amount = do - now <- liftIO getCurrentTime - insert (Income userId now amount) +getIncomes = selectList [IncomeDeletedAt ==. Nothing] [] + +addIncome :: UserId -> UTCTime -> Int -> Persist IncomeId +addIncome userId creation amount = do + insert (Income userId creation amount Nothing) + +deleteOwnIncome :: Entity User -> IncomeId -> Persist Bool +deleteOwnIncome user incomeId = do + mbIncome <- get incomeId + case mbIncome of + Just income -> + if incomeUserId income == entityKey user + then do + now <- liftIO getCurrentTime + update incomeId [IncomeDeletedAt =. Just now] + return True + else + return False + Nothing -> + return False -- cgit v1.2.3