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