diff --git a/src/Control/User.hs b/src/Control/User.hs index 76adc56..0bf3848 100644 --- a/src/Control/User.hs +++ b/src/Control/User.hs @@ -13,6 +13,8 @@ import Data.Time (getCurrentTime, utctDay) import Data.ByteString.Random (random) +import Data.Maybe (fromMaybe) + import qualified Data.Text as T -- internal imports @@ -61,7 +63,7 @@ userUpdate (Just aid) uid uds = userList :: Maybe UserRefine -> MateHandler [UserSummary] userList ref = do conn <- rsConnection <$> ask - userSelect ref conn + userSelect (fromMaybe ActiveUsers ref) conn userRecharge :: Maybe Int -> UserRecharge -> MateHandler () userRecharge (Just auid) (UserRecharge amount) = @@ -96,7 +98,7 @@ userTransfer (Just auid) (UserTransfer target amount) = user <- userDetailsSelect auid conn if amount < userDetailsBalance user then do - mtarget <- filter (\u -> userSummaryId u == target) <$> userSelect (Just AllUsers) conn + mtarget <- filter (\u -> userSummaryId u == target) <$> userSelect AllUsers conn if not (null mtarget) then do void $ addToUserBalance auid (-amount) conn diff --git a/src/Model/User.hs b/src/Model/User.hs index 74f9a92..a6af46f 100644 --- a/src/Model/User.hs +++ b/src/Model/User.hs @@ -78,17 +78,17 @@ userTable = table "user" ( ) userSelect - :: Maybe UserRefine + :: UserRefine -> PGS.Connection -> MateHandler [UserSummary] userSelect ref conn = do today <- utctDay <$> (liftIO $ getCurrentTime) users <- liftIO $ runSelect conn (case ref of - Nothing -> keepWhen (\(_, _, _, ts, _, _, _, _, _) -> + AllUsers -> selectTable userTable + ActiveUsers -> keepWhen (\(_, _, _, ts, _, _, _, _, _) -> ts .>= C.constant (addDays (-30) today) ) <<< queryTable userTable - Just AllUsers -> selectTable userTable - Just OldUsers -> keepWhen (\(_, _, _, ts, _, _, _, _, _) -> + OldUsers -> keepWhen (\(_, _, _, ts, _, _, _, _, _) -> ts .<= C.constant (addDays (-30) today) ) <<< queryTable userTable ) :: MateHandler diff --git a/src/Types/Refine.hs b/src/Types/Refine.hs index d636f2e..17d1316 100644 --- a/src/Types/Refine.hs +++ b/src/Types/Refine.hs @@ -7,20 +7,22 @@ import GHC.Generics import Web.HttpApiData -data UserRefine = AllUsers | OldUsers +data UserRefine = AllUsers | ActiveUsers | OldUsers deriving (Generic, Show, Enum) instance FromHttpApiData UserRefine where parseQueryParam t = case t of - "all" -> Right AllUsers - "old" -> Right OldUsers - x -> Left ("Error: Unknown refine " <> x) + "all" -> Right AllUsers + "active" -> Right ActiveUsers + "old" -> Right OldUsers + x -> Left ("Error: Unknown refine " <> x) instance ToHttpApiData UserRefine where toUrlPiece x = case x of - AllUsers -> "all" - OldUsers -> "old" + AllUsers -> "all" + ActiveUsers -> "active" + OldUsers -> "old" data ProductRefine = AllProducts | AvailableProducts | DepletedProducts