fix(lms): sorting and filtering lms status works throughout now

This commit is contained in:
Steffen Jost 2023-09-27 09:31:50 +00:00
parent f48862efbc
commit ae4470333e
3 changed files with 9 additions and 8 deletions

View File

@ -314,13 +314,14 @@ mkExactFilterMaybeLast lenslike row criterias
| otherwise = true
-- | like `mkExactFilterMaybeLast` but for doubly wrapped Maybes
mkExactFilterMaybeLast' :: PersistField a
=> (t -> E.SqlExpr (E.Value (Maybe (Maybe a)))) -- ^ getter from query to searched element
-> t -- ^ query row
-> Last (Maybe a) -- ^ needle
mkExactFilterMaybeLast' :: (PersistField a, PersistField b)
=> (t -> E.SqlExpr (E.Value (Maybe b))) -- ^ getter from query ensure entity exists at all
-> (t -> E.SqlExpr (E.Value (Maybe (Maybe a)))) -- ^ getter from query to searched element
-> t -- ^ query row
-> Last (Maybe a) -- ^ needle
-> E.SqlExpr (E.Value Bool)
mkExactFilterMaybeLast' lenslike row criterias
| Last (Just Nothing) <- criterias = lenslike row E.==. E.val (Just Nothing)
mkExactFilterMaybeLast' lensexists lenslike row criterias
| Last (Just Nothing) <- criterias = isJust (lensexists row) E.&&. E.isNothing (E.joinV $ lenslike row)
| Last (Just crit) <- criterias = lenslike row E.==. E.val (Just crit)
| otherwise = true

View File

@ -468,7 +468,7 @@ mkLmsTable isAdmin (Entity qid quali) acts cols psValidator = do
-- , single ("status" , SortColumnNullsInv $ views (to queryLmsUser) (E.^. LmsUserStatusDay))
, single ("status" , SortColumnNeverNull $ \row -> E.coalesceDefault [ queryLmsUser row E.^. LmsUserStatusDay
, queryLmsUser row E.^. LmsUserNotified
](queryLmsUser row E.?. LmsUserStarted))
](queryLmsUser row E.^. LmsUserStarted))
, single ("started" , SortColumnNullsInv $ queryLmsUser >>> (E.^. LmsUserStarted))
, single ("datepin" , SortColumnNullsInv $ queryLmsUser >>> (E.^. LmsUserDatePin))

View File

@ -441,7 +441,7 @@ mkQualificationTable isAdmin (Entity qid quali) acts cols psValidator = do
if | Just True <- getLast criterion -> quser `quserToNotify` now
| otherwise -> E.true
)
, single ("status" , FilterColumn . E.mkExactFilterMaybeLast' $ views (to queryLmsUser) (E.?. LmsUserStatus))
, single ("status" , FilterColumn . E.mkExactFilterMaybeLast' (views (to queryLmsUser) (E.?. LmsUserId)) $ views (to queryLmsUser) (E.?. LmsUserStatus))
]
dbtFilterUI mPrev = mconcat
[ fltrUserNameEmailHdrUI MsgLmsUser mPrev