From 08b357fb640c3088c5dee928017b84198ca06ecd Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Fri, 20 Oct 2017 10:00:03 +0200 Subject: [PATCH] filter achievements --- Handler/Achievements.hs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Handler/Achievements.hs b/Handler/Achievements.hs index d65e06f..153906a 100644 --- a/Handler/Achievements.hs +++ b/Handler/Achievements.hs @@ -45,8 +45,17 @@ postAchievementsR = do doAchievements mUser formWidget formEnctype = do achievements <- runDB $ selectList [] [Asc AchievementName] mUser <- maybeAuth - achievementInfos' <- runDB $ mapM (getAchievementInfo mUser) achievements - let achievementInfos = Import.filter (not . courseClosed . entityVal . achievementInfoCourse) achievementInfos' + achievementInfos'' <- runDB $ mapM (getAchievementInfo mUser) achievements + let achievementInfos' = Import.filter (not . courseClosed . entityVal . achievementInfoCourse) achievementInfos'' + + courses <- case mUser of + Just (Entity userId _) -> do + ents <- runDB $ selectList [ParticipantUser ==. userId] [] + return $ Import.map (participantCourse . entityVal) ents + Nothing -> do + return [] + + let achievementInfos = Import.filter (isParticipant courses) achievementInfos' tagsAvailableAsJSON <- runDB $ getAvailableTagsAsJSON @@ -54,6 +63,10 @@ doAchievements mUser formWidget formEnctype = do setTitle "Achievements" $(widgetFile "achievements") +isParticipant :: [CourseId] -> AchievementInfo -> Bool +isParticipant [] _ = True +isParticipant courses info = (entityKey $ achievementInfoCourse info) `elem` courses + achievementsTable :: Bool -> Table.Table App (AchievementInfo) achievementsTable canEdit = mempty ++ achievementNameEntry canEdit