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