diff --git a/src/Handler/Utils/Avs.hs b/src/Handler/Utils/Avs.hs index 98fc33439..81942cb9c 100644 --- a/src/Handler/Utils/Avs.hs +++ b/src/Handler/Utils/Avs.hs @@ -99,10 +99,10 @@ catchAVS2log :: (MonadHandler m, MonadCatch m, RenderMessage (HandlerSite m) Avs catchAVS2log = catchAVShandler False True False Nothing catchAll2log :: (MonadHandler m, MonadCatch m, RenderMessage (HandlerSite m) AvsException) => m a -> m () -catchAll2log = voidMaybe $ catchAVShandler True True False Nothing +catchAll2log = voidMaybe catchAll2log' --- catchAll2log' :: (MonadHandler m, MonadCatch m, RenderMessage (HandlerSite m) AvsException, Monoid a) => m a -> m () --- catchAll2log' = voidMaybe $ catchAVShandler True True False mempty +catchAll2log' :: (MonadHandler m, MonadCatch m, RenderMessage (HandlerSite m) AvsException) => m (Maybe a) -> m (Maybe a) +catchAll2log' = catchAVShandler True True False Nothing catchAVShandler :: (MonadHandler m, MonadCatch m, RenderMessage (HandlerSite m) AvsException) => Bool -> Bool -> Bool -> a -> m a -> m a catchAVShandler allEx toLog toMsg dft act = act `catches` (avsHandlers <> allHandlers) @@ -493,13 +493,12 @@ createAvsUserById muid api = do -- check for matching existing user let internalPersNo :: Maybe Text = cpi ^? _avsInfoInternalPersonalNo . _Just . _avsInternalPersonalNo -- persMail :: Maybe UserEmail = cpi ^? _avsInfoPersonEMail . _Just . from _CI - oldUsr <- runDBRead $ do - mbUid <- if isJust muid - then return muid - else firstJustM $ catMaybes - [ internalPersNo <&> (\ipn -> getKeyByFilter [UserCompanyPersonalNumber ==. Just ipn]) -- must ensure filter isnt ==. Nothing - -- , persMail <&> guessUserByEmail -- this did not work, as unfortunately, superiors are sometimes listed under _avsInfoPersonEMail! + oldUsr <- runDB $ do + mbUid <- firstJustM $ return muid : maybe [] (\ipn -> + [ getKeyByFilter [UserCompanyPersonalNumber ==. Just ipn] -- must ensure filter isnt ==. Nothing + , catchAll2log' (Just . entityKey <$> ldapLookupAndUpsert ipn) -- attempt to insert by LDAP first ] + ) internalPersNo mbUAvs <- (getBy . UniqueUserAvsUser) `traverseJoin` mbUid return (mbUid, mbUAvs) usrCardNo <- queryAvsFullCardNo api