Löschen von festen Abgabegruppen implementiert.
This commit is contained in:
parent
832c007027
commit
2634774eef
@ -163,7 +163,7 @@ postProfileDataR = do
|
||||
case btnResult of
|
||||
(FormSuccess BtnDelete) -> do
|
||||
(uid, User{..}) <- requireAuthPair
|
||||
(deletedSubmissions,groupSubmissions) <- runDB $ deleteUser uid
|
||||
((deletedSubmissions,groupSubmissions),deletedSubmissionGroups) <- runDB $ deleteUser uid
|
||||
-- addMessageI Success $ MsgDeleteUser deletedSubmissions
|
||||
-- when (groupSubmissions > 0) $ addMessageI Info $ MsgDeleteUserGroupSubmissions groupSubmissions
|
||||
--TODO: LogOut user
|
||||
@ -177,7 +177,7 @@ postProfileDataR = do
|
||||
|
||||
|
||||
|
||||
deleteUser :: UserId -> DB (Int,Int) -- TODO: Restrict deletions for lecturers, tutors and students in course that won't allow deregistration
|
||||
deleteUser :: UserId -> DB ((Int,Int),Int64) -- TODO: Restrict deletions for lecturers, tutors and students in course that won't allow deregistration
|
||||
deleteUser duid = do
|
||||
-- E.deleteCount for submissions is not cascading, hence we first select and then delete manually
|
||||
-- Submissions / SubmissionUser
|
||||
@ -187,7 +187,8 @@ deleteUser duid = do
|
||||
singleSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.==. E.val (0::Int64))
|
||||
deleteCascade duid
|
||||
forM_ singleSubmissions $ \(E.Value submissionId) -> deleteCascade submissionId
|
||||
return (length singleSubmissions, length groupSubmissions)
|
||||
deletedSubmissionGroups <- deleteSingleSubmissionGroups
|
||||
return ((length singleSubmissions, length groupSubmissions),deletedSubmissionGroups)
|
||||
where
|
||||
selectSubmissionsWhere :: (E.SqlExpr (E.Value Int64) -> E.SqlExpr (E.Value Bool))
|
||||
-> ReaderT SqlBackend (HandlerT UniWorX IO) [E.Value (Key Submission)]
|
||||
@ -202,6 +203,17 @@ deleteUser duid = do
|
||||
E.&&. (whereBuddies numBuddies)
|
||||
return $ submission E.^. SubmissionId
|
||||
|
||||
deleteSingleSubmissionGroups = E.deleteCount $ E.from $ \submissionGroup -> do
|
||||
E.where_ $ E.exists $ E.from $ \subGroupUser -> do
|
||||
E.where_ $ subGroupUser E.^. SubmissionGroupUserSubmissionGroup E.==. submissionGroup E.^. SubmissionGroupId
|
||||
E.&&. subGroupUser E.^. SubmissionGroupUserUser E.==. E.val duid
|
||||
E.where_ $ E.notExists $ E.from $ \subGroupUser -> do
|
||||
E.where_ $ subGroupUser E.^. SubmissionGroupUserSubmissionGroup E.==. submissionGroup E.^. SubmissionGroupId
|
||||
E.&&. subGroupUser E.^. SubmissionGroupUserUser E.!=. E.val duid
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
getProfileDataR :: Handler Html
|
||||
|
||||
@ -8,4 +8,7 @@
|
||||
aber die Zuordnung zum Benutzer wurden gelöscht.
|
||||
Gruppenabgaben können dadurch zu Einzelabgaben werden,
|
||||
welche dann vom letzten Benutzer gelöscht werden können.
|
||||
$if deletedSubmissionGroups > 0
|
||||
<div .container>
|
||||
#{display deletedSubmissionGroups} benannte Abgabengruppen wurden gelöscht, da diese dadurch leer wurden.
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user