fix(users): remove users with company post address from list of unreachable users
This commit is contained in:
parent
9a0e8988fa
commit
c813c665ed
@ -195,8 +195,7 @@ mkUnreachableUsersTable = do
|
|||||||
-}
|
-}
|
||||||
|
|
||||||
areAllUsersReachable :: DB Bool
|
areAllUsersReachable :: DB Bool
|
||||||
-- areAllUsersReachable = isNothing <$> E.selectOne retrieveUnreachableUsers'
|
-- areAllUsersReachable = E.selectNotExists retrieveUnreachableUsers' -- works and would be more efficient, but we cannot check proper email validity within DB alone
|
||||||
-- areAllUsersReachable = E.selectNotExists retrieveUnreachableUsers'
|
|
||||||
areAllUsersReachable = null <$> retrieveUnreachableUsers
|
areAllUsersReachable = null <$> retrieveUnreachableUsers
|
||||||
|
|
||||||
-- retrieveUnreachableUsers' :: E.SqlQuery (E.SqlExpr (Entity User))
|
-- retrieveUnreachableUsers' :: E.SqlQuery (E.SqlExpr (Entity User))
|
||||||
@ -214,8 +213,16 @@ retrieveUnreachableUsers = do
|
|||||||
user <- E.from $ E.table @User
|
user <- E.from $ E.table @User
|
||||||
E.where_ $ E.isNothing (user E.^. UserPostAddress)
|
E.where_ $ E.isNothing (user E.^. UserPostAddress)
|
||||||
E.&&. (E.isNothing (user E.^. UserCompanyDepartment) E.||. user E.^. UserCompanyPersonalNumber `E.ilike` E.justVal "E%")
|
E.&&. (E.isNothing (user E.^. UserCompanyDepartment) E.||. user E.^. UserCompanyPersonalNumber `E.ilike` E.justVal "E%")
|
||||||
|
E.&&. E.notExists (do
|
||||||
|
(cmp :& usrCmp) <- E.from $ E.table @Company `E.innerJoin` E.table @UserCompany
|
||||||
|
`E.on` (\(cmp :& usrCmp) -> cmp E.^. CompanyId E.==. usrCmp E.^. UserCompanyCompany)
|
||||||
|
E.where_ $ user E.^. UserId E.==. usrCmp E.^. UserCompanyUser
|
||||||
|
E.&&. usrCmp E.^. UserCompanyUseCompanyAddress
|
||||||
|
E.&&. E.isJust (cmp E.^. CompanyPostAddress)
|
||||||
|
)
|
||||||
return user
|
return user
|
||||||
filterM hasInvalidEmail emailOnlyUsers
|
filterM hasInvalidEmail emailOnlyUsers
|
||||||
|
-- filterM hasInvalifPostal -- probably not worth it, since Utils.Postal.validPostAddress is pretty weak anyway
|
||||||
where
|
where
|
||||||
hasInvalidEmail = fmap isNothing . getUserEmail
|
hasInvalidEmail = fmap isNothing . getUserEmail
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user