diff --git a/Handler/Achievements.hs b/Handler/Achievements.hs index 99ab872..1dd0f50 100644 --- a/Handler/Achievements.hs +++ b/Handler/Achievements.hs @@ -121,6 +121,21 @@ $if canGiveUpWorkingOn canStartWorkingOn = determineWhetherCanStartWorkingOn (achievementInfoCurrentUser ainfo) (achievementInfoWorkingOn ainfo) (achievementInfoMaxWinners ainfo) canGiveUpWorkingOn = determineWhetherCanGiveUpWorkingOn (achievementInfoCurrentUser ainfo) (achievementInfoWorkingOn ainfo) +getSubmissionForAchievementR :: SubmissionId -> WorkingOnId -> Handler Html +getSubmissionForAchievementR submissionId workingOnId = do + (Entity userId user) <- requireAuth + submission <- runDB $ get404 submissionId + workingOn <- runDB $ get404 workingOnId + if submissionSubmitter submission == userId && workingOnUser workingOn == userId + then + do + runDB $ update workingOnId [WorkingOnFinalSubmission =. Just submissionId] + setMessage $ toHtml ("OK! Your submission now awaits being accepted by a human reviewer" :: Text) + else + do + setMessage $ toHtml ("Not your submission" :: Text) + redirect $ EditSubmissionR submissionId + getStartWorkingOnR :: AchievementId -> Handler Html getStartWorkingOnR achievementId = do (Entity userId user) <- requireAuth diff --git a/Handler/EditSubmission.hs b/Handler/EditSubmission.hs index 17ecf65..d4715ef 100644 --- a/Handler/EditSubmission.hs +++ b/Handler/EditSubmission.hs @@ -45,6 +45,14 @@ postEditSubmissionR submissionId = do getEditSubmissionR submissionId +getPossibleAchievements userId submissionId = do + (Just submission) <- get submissionId + let challengeId = submissionChallenge submission + achievements <- selectList [AchievementChallenge ==. challengeId] [] + workingOns <- mapM (\a -> getBy $ UniqueWorkingOnAchievementUser (entityKey a) userId) achievements + let rets = Import.zip achievements workingOns + return $ Import.map (\(a, (Just w)) -> (a, entityKey w)) $ Import.filter (\(_, mw) -> isJust mw) $ rets + addTags submissionId tagsAsText existingOnes = do tids <- tagsAsTextToTagIds tagsAsText @@ -62,6 +70,10 @@ doEditSubmission formWidget formEnctype submissionId = do tagsAvailableAsJSON <- runDB $ getAvailableTagsAsJSON + (Entity userId user) <- requireAuth + + achievements <- runDB $ getPossibleAchievements userId submissionId + defaultLayout $ do setTitle "Edit a submission" $(widgetFile "edit-submission") diff --git a/config/routes b/config/routes index 98aa6bd..69b7621 100644 --- a/config/routes +++ b/config/routes @@ -35,6 +35,7 @@ /achievements AchievementsR GET POST /start-working-on/#AchievementId StartWorkingOnR GET /give-up-working-on/#AchievementId GiveUpWorkingOnR GET +/submission-for-achievement/#SubmissionId/#WorkingOnId SubmissionForAchievementR GET /edit-submission/#SubmissionId EditSubmissionR GET POST diff --git a/templates/edit-submission.hamlet b/templates/edit-submission.hamlet index b7354bf..d2c70a5 100644 --- a/templates/edit-submission.hamlet +++ b/templates/edit-submission.hamlet @@ -4,3 +4,9 @@ ^{formWidget}