chore(exams): allow email for exam result entry as well
This commit is contained in:
parent
89b0d87bde
commit
515eddc032
@ -1,4 +1,4 @@
|
||||
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>
|
||||
-- SPDX-FileCopyrightText: 2022-25 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Steffen Jost <s.jost@fraport.de>
|
||||
--
|
||||
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@ -20,6 +20,7 @@ import Handler.Utils.Exam (fetchExam)
|
||||
|
||||
import Utils.Exam.Correct
|
||||
|
||||
{-# ANN module ("HLint: ignore Functor law" :: String) #-}
|
||||
|
||||
-- | Minimum length of a participant identifier. Identifiers that are shorter would result in too many query results and are therefor rejected.
|
||||
minNeedleLength :: Int
|
||||
@ -72,7 +73,7 @@ postECorrectR tid ssh csh examn = do
|
||||
Entity eId Exam{} <- lift $ fetchExam tid ssh csh examn
|
||||
euid <- traverse decrypt ciqUser
|
||||
|
||||
guardMExceptT (maybe True ((>= minNeedleLength) . length) $ euid ^? _Left) $
|
||||
guardMExceptT (maybe True ((>= minNeedleLength) . length) $ euid ^? _Left) $
|
||||
CorrectInterfaceResponseFailure Nothing <$> (getMessageRender <*> pure MsgExamCorrectErrorNeedleTooShort)
|
||||
|
||||
participantMatches <- lift . E.select . E.from $ \(examRegistration `E.InnerJoin` user) -> do
|
||||
@ -84,14 +85,16 @@ postECorrectR tid ssh csh examn = do
|
||||
mUserIdent = euid ^? _Left
|
||||
E.where_ $ uidMatch
|
||||
E.||. (case mUserIdent of
|
||||
Just userIdent -> user E.^. UserSurname E.==. E.val userIdent
|
||||
E.||. user E.^. UserSurname `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserFirstName E.==. E.val userIdent
|
||||
E.||. user E.^. UserFirstName `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserDisplayName E.==. E.val userIdent
|
||||
E.||. user E.^. UserDisplayName `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserMatrikelnummer E.==. E.val mUserIdent
|
||||
E.||. user E.^. UserMatrikelnummer `E.hasInfix` E.val mUserIdent
|
||||
Just userIdent -> user E.^. UserSurname E.==. E.val userIdent
|
||||
E.||. user E.^. UserSurname `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserFirstName E.==. E.val userIdent
|
||||
E.||. user E.^. UserFirstName `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserDisplayName E.==. E.val userIdent
|
||||
E.||. user E.^. UserDisplayName `E.hasInfix` E.val userIdent
|
||||
E.||. user E.^. UserMatrikelnummer E.==. E.val mUserIdent
|
||||
E.||. user E.^. UserMatrikelnummer `E.hasInfix` E.val mUserIdent
|
||||
E.||. user E.^. UserEmail E.==. E.val (userIdent & CI.mk)
|
||||
E.||. user E.^. UserDisplayEmail E.==. E.val (userIdent & CI.mk)
|
||||
Nothing -> E.val False)
|
||||
E.limit $ succ maxCountUserMatches
|
||||
return user
|
||||
@ -200,8 +203,8 @@ postECorrectR tid ssh csh examn = do
|
||||
, ciraHasMore = length participantMatches > maxCountUserMatches
|
||||
, ciraUsers = Set.fromList users
|
||||
}
|
||||
|
||||
|
||||
whenM acceptsJson $
|
||||
sendResponseStatus (ciResponseStatus response) $ toJSON response
|
||||
|
||||
|
||||
redirect $ CExamR tid ssh csh examn EShowR
|
||||
|
||||
Loading…
Reference in New Issue
Block a user