fradrive/src/Handler/Submission.hs

51 lines
1.8 KiB
Haskell

module Handler.Submission
( getSubmissionOwnR
, module Handler.Submission.New
, module Handler.Submission.Show
, module Handler.Submission.Download
, module Handler.Submission.Delete
, module Handler.Submission.Assign
, module Handler.Submission.SubmissionUserInvite
, module Handler.Submission.List
, module Handler.Submission.Correction
, module Handler.Submission.Create
, module Handler.Submission.Grade
, module Handler.Submission.Upload
) where
import Handler.Submission.New
import Handler.Submission.Show
import Handler.Submission.Download
import Handler.Submission.Delete
import Handler.Submission.Assign
import Handler.Submission.SubmissionUserInvite (getSInviteR, postSInviteR)
import Handler.Submission.List (getCorrectionsR, postCorrectionsR, getCCorrectionsR, postCCorrectionsR, getSSubsR, postSSubsR)
import Handler.Submission.Correction
import Handler.Submission.Create
import Handler.Submission.Grade
import Handler.Submission.Upload
import Import
import Handler.Utils
import qualified Database.Esqueleto as E
getSubmissionOwnR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> Handler Html
getSubmissionOwnR tid ssh csh shn = do
authId <- requireAuthId
sid <- runDB $ do
shid <- fetchSheetId tid ssh csh shn
submissions <- E.select . E.from $ \(submission `E.InnerJoin` submissionUser) -> do
E.on (submission E.^. SubmissionId E.==. submissionUser E.^. SubmissionUserSubmission)
E.where_ $ submissionUser E.^. SubmissionUserUser E.==. E.val authId
E.&&. submission E.^. SubmissionSheet E.==. E.val shid
return $ submission E.^. SubmissionId
case submissions of
(E.Value sid : _) -> return sid
[] -> notFound
cID <- encrypt sid
redirect $ CSubmissionR tid ssh csh shn cID SubShowR