diff --git a/src/Handler/Admin/Avs.hs b/src/Handler/Admin/Avs.hs
index 916a6158d..038538e2a 100644
--- a/src/Handler/Admin/Avs.hs
+++ b/src/Handler/Admin/Avs.hs
@@ -283,7 +283,7 @@ postAdminAvsR = do
(f_set , fs_size) = showLics AvsLicenceVorfeld
(revoke , rv_size) = showLics AvsNoLicence
return $ Just [whamlet|
-
Licence check differences:
+ Licence check AVS-ID differences:
- Grant R (#{rg_size}):
- #{r_grant}
@@ -308,7 +308,7 @@ postAdminAvsR = do
let showApids apids
| null apids = "[ ]"
| otherwise = Text.intercalate ", " (tshow <$> Set.toList apids)
- procLic :: AvsLicence -> Bool -> Set AvsPersonId -> Html
+ procLic :: (Ord a, Show a) => AvsLicence -> Bool -> Set a -> Html
procLic aLic up apids
| n <- Set.size apids, n > 0 =
let subtype = Text.cons (bool '↧' '↥' up) $ Text.singleton $ licence2char aLic
@@ -349,18 +349,43 @@ postAdminAvsR = do
l2 = guardMonoid (synchLevel >= 2) $ procLic AvsLicenceVorfeld True $ fltrIds avsLicenceDiffGrantVorfeld --grant Vorfeld
l3 = guardMonoid (synchLevel >= 3) $ procLic AvsLicenceVorfeld False $ fltrIds avsLicenceDiffRevokeRollfeld --downgrade Rollfeld -> Vorfeld
l4 = guardMonoid (synchLevel >= 4) $ procLic AvsLicenceRollfeld True $ fltrIds avsLicenceDiffGrantRollfeld --grant Rollfeld
- return $ Just [shamlet|
-
- Next automatic AVS licence synchronisation:
-
- ^{l4}
- ^{l3}
- ^{l2}
- ^{l1}
- $maybe reason <- reasonFilter
- - Filtered "#{reason}" (#{Set.size reasonFltrdIds}):
-
- #{showApids reasonFltrdIds}
- |]
+ avsIdChanges = [shamlet|
+
+ Next automatic AVS-ID licence synchronisation:
+
+ ^{l4}
+ ^{l3}
+ ^{l2}
+ ^{l1}
+ $maybe reason <- reasonFilter
+ - Filtered "#{reason}" (#{Set.size reasonFltrdIds}):
+
- #{showApids reasonFltrdIds}
+ |]
+ ----------------------------------------------------
+ -- translate AVS-IDs to AVS-NOs for convenience only
+ avsidnos <- runDBRead $ E.select $ do
+ ua <- X.from $ E.table @UserAvs
+ E.where_ $ ua E.^. UserAvsPersonId `E.in_` E.vals (Set.unions [avsLicenceDiffRevokeAll, avsLicenceDiffRevokeRollfeld, avsLicenceDiffGrantVorfeld, avsLicenceDiffGrantRollfeld]) -- , reasonFltrdIds])
+ return (ua E.^. UserAvsPersonId, ua E.^. UserAvsNoPerson)
+ let id2no = Map.fromList $ $(E.unValueN 2) <$> avsidnos
+ translate = setMapMaybe (`Map.lookup` id2no)
+ l1' = guardMonoid (synchLevel >= 1) $ procLic AvsNoLicence False $ translate $ fltrIds avsLicenceDiffRevokeAll --revoke Vorfeld and maybe also Rollfeld
+ l2' = guardMonoid (synchLevel >= 2) $ procLic AvsLicenceVorfeld True $ translate $ fltrIds avsLicenceDiffGrantVorfeld --grant Vorfeld
+ l3' = guardMonoid (synchLevel >= 3) $ procLic AvsLicenceVorfeld False $ translate $ fltrIds avsLicenceDiffRevokeRollfeld --downgrade Rollfeld -> Vorfeld
+ l4' = guardMonoid (synchLevel >= 4) $ procLic AvsLicenceRollfeld True $ translate $ fltrIds avsLicenceDiffGrantRollfeld --grant Rollfeld
+ autoNoDiffs = [shamlet|
+
+ Next automatic licence changes translated to human readable AVS-Numbers, if known:
+
+ ^{l4'}
+ ^{l3'}
+ ^{l2'}
+ ^{l1'}
+ $maybe reason <- reasonFilter
+ - Filtered "#{reason}" (#{Set.size reasonFltrdIds}):
+
- #{showApids $ translate reasonFltrdIds}
+ |]
+ return $ Just $ avsIdChanges <> autoNoDiffs
return (basediffs, autoDiffs)
-- (Just BtnSynchLicences) -> do