diff --git a/messages/uniworx/categories/avs/de-de-formal.msg b/messages/uniworx/categories/avs/de-de-formal.msg index 5a3270182..fd790cef2 100644 --- a/messages/uniworx/categories/avs/de-de-formal.msg +++ b/messages/uniworx/categories/avs/de-de-formal.msg @@ -46,6 +46,7 @@ AvsCardColorBlue: Blau AvsCardColorRed: Rot AvsCardColorYellow: Gelb LastAvsSynchronisation: Letzte AVS-Synchronisation +LastAvsSyncedBefore: Letzte AVS-Synchronisation vor LastAvsSynchError: Letzte AVS-Fehlermeldung AvsInterfaceUnavailable: AVS Schnittstelle nicht richtig konfiguriert oder antwortet nicht diff --git a/messages/uniworx/categories/avs/en-eu.msg b/messages/uniworx/categories/avs/en-eu.msg index 1b3a7b5a0..787d38a16 100644 --- a/messages/uniworx/categories/avs/en-eu.msg +++ b/messages/uniworx/categories/avs/en-eu.msg @@ -47,6 +47,7 @@ AvsCardColorBlue: Blue AvsCardColorRed: Red AvsCardColorYellow: Yellow LastAvsSynchronisation: Last AVS synchronisation +LastAvsSyncedBefore: Last AVS synchronisation before LastAvsSynchError: Last AVS Error AvsInterfaceUnavailable: AVS interface was not configured correctly or does not respond diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 515deaac3..991006030 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -299,6 +299,12 @@ postUsersR = do in E.maybe E.true (E.<=. E.val minTime) $ user E.^. UserLastLdapSynchronisation | otherwise -> E.val True :: E.SqlExpr (E.Value Bool) ) + , ( "avs-sync", FilterColumn . E.mkExistsFilter $ \user criterion -> + E.from $ \usrAvs -> do + let minTime = (E.val criterion :: E.SqlExpr (E.Value UTCTime)) + E.where_ $ usrAvs E.^. UserAvsUser E.==. user E.^. UserId + E.&&. usrAvs E.^. UserAvsLastSynch E.<=. minTime + ) , ( "user-company", FilterColumn . E.mkExistsFilter $ \user criterion -> E.from $ \(usrComp `E.InnerJoin` comp) -> do let testname = (E.val criterion :: E.SqlExpr (E.Value (CI Text))) `E.isInfixOf` @@ -343,6 +349,7 @@ postUsersR = do , prismAForm (singletonFilter "is-supervisor" . maybePrism _PathPiece) mPrev $ aopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgUserIsSupervisor) , prismAForm (singletonFilter "auth-ldap" . maybePrism _PathPiece) mPrev $ aopt (lift `hoistField` selectFieldList [(MsgAuthPWHash "", False), (MsgAuthLDAP, True)]) (fslI MsgAuthMode) , prismAForm (singletonFilter "ldap-sync" . maybePrism _PathPiece) mPrev $ aopt utcTimeField (fslI MsgLdapSyncedBefore) + , prismAForm (singletonFilter "avs-sync" . maybePrism _PathPiece) mPrev $ aopt utcTimeField (fslI MsgLastAvsSyncedBefore) ] , dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout } , dbtParams = DBParamsForm