fix(letter): update receiver postal address before sending
This commit is contained in:
parent
3f759614b4
commit
7d5c4bff25
@ -531,9 +531,13 @@ lookupAvsUsers apis = do
|
|||||||
-- | Like `Handler.Utils.getReceivers`, but calls upsertAvsUserById on each user to ensure that postal address is up-to-date
|
-- | Like `Handler.Utils.getReceivers`, but calls upsertAvsUserById on each user to ensure that postal address is up-to-date
|
||||||
updateReceivers :: UserId -> Handler (Entity User, [Entity User], Bool)
|
updateReceivers :: UserId -> Handler (Entity User, [Entity User], Bool)
|
||||||
updateReceivers uid = do
|
updateReceivers uid = do
|
||||||
(underling :: Entity User, avsUnderling :: Maybe (Entity UserAvs), avsSupers :: [(E.Value UserId, E.Value (Maybe AvsPersonId))]) <- runDB $ (,,)
|
-- First perform AVS update for receiver
|
||||||
<$> getJustEntity uid
|
runDB (getBy (UniqueUserAvsUser uid)) >>= \case
|
||||||
<*> getBy (UniqueUserAvsUser uid)
|
Just Entity{entityVal=UserAvs{userAvsPersonId = apid}} -> void . maybeCatchAll $ upsertAvsUserById apid
|
||||||
|
Nothing -> return ()
|
||||||
|
-- Retrieve updated user and supervisors now
|
||||||
|
(underling :: Entity User, avsSupers :: [(E.Value UserId, E.Value (Maybe AvsPersonId))]) <- runDB $ (,)
|
||||||
|
<$> getJustEntity uid
|
||||||
<*> (E.select $ do
|
<*> (E.select $ do
|
||||||
(usrSuper :& usrAvs) <-
|
(usrSuper :& usrAvs) <-
|
||||||
E.from $ E.table @UserSupervisor
|
E.from $ E.table @UserSupervisor
|
||||||
@ -544,10 +548,9 @@ updateReceivers uid = do
|
|||||||
pure (usrSuper E.^. UserSupervisorSupervisor, usrAvs E.?. UserAvsPersonId)
|
pure (usrSuper E.^. UserSupervisorSupervisor, usrAvs E.?. UserAvsPersonId)
|
||||||
)
|
)
|
||||||
let (superVs, avsIds) = unzip avsSupers
|
let (superVs, avsIds) = unzip avsSupers
|
||||||
receiverIDs :: [UserId] = E.unValue <$> superVs
|
receiverIDs :: [UserId] = E.unValue <$> superVs
|
||||||
underlingAvsId = userAvsPersonId . entityVal <$> avsUnderling
|
toUpdate = Set.fromList $ mapMaybe E.unValue avsIds
|
||||||
toUpdate = Set.fromList $ catMaybes (underlingAvsId : (E.unValue <$> avsIds))
|
directResult = return (underling, pure underling, True) -- already contains updated address
|
||||||
directResult = return (underling, pure underling, True)
|
|
||||||
forM_ toUpdate (void . maybeCatchAll . upsertAvsUserById) -- attempt to update postaddress from AVS
|
forM_ toUpdate (void . maybeCatchAll . upsertAvsUserById) -- attempt to update postaddress from AVS
|
||||||
if null receiverIDs
|
if null receiverIDs
|
||||||
then directResult
|
then directResult
|
||||||
|
|||||||
Reference in New Issue
Block a user