fix(avs): deal gracefully with empty card status results
This commit is contained in:
parent
32a79ee2c9
commit
ccf9340449
@ -51,10 +51,11 @@ AvsInterfaceUnavailable: AVS Schnittstelle nicht richtig konfiguriert oder antwo
|
|||||||
AvsUserUnassociated user@UserDisplayName: AVS Id unbekannt für Nutzer #{user}
|
AvsUserUnassociated user@UserDisplayName: AVS Id unbekannt für Nutzer #{user}
|
||||||
AvsUserUnknownByAvs api@AvsPersonId: AVS kennt Id #{tshow api} nicht (mehr)
|
AvsUserUnknownByAvs api@AvsPersonId: AVS kennt Id #{tshow api} nicht (mehr)
|
||||||
AvsUserAmbiguous api@AvsPersonId: AVS Id #{tshow api} ist nicht eindeutig
|
AvsUserAmbiguous api@AvsPersonId: AVS Id #{tshow api} ist nicht eindeutig
|
||||||
|
AvsSatusSearchEmpty: AVS lieferte keine Ausweisinformationen
|
||||||
AvsPersonSearchEmpty: AVS Suche lieferte leeres Ergebnis
|
AvsPersonSearchEmpty: AVS Suche lieferte leeres Ergebnis
|
||||||
AvsPersonSearchAmbiguous: AVS Suche lieferte mehrere uneindeutige Ergebnisse
|
AvsPersonSearchAmbiguous: AVS Suche lieferte mehrere uneindeutige Ergebnisse
|
||||||
AvsSetLicencesFailed reason@Text: Setzen der Fahrlizenz im AVS fehlgeschlagen. Grund: #{reason}
|
AvsSetLicencesFailed reason@Text: Setzen der Fahrlizenz im AVS fehlgeschlagen. Grund: #{reason}
|
||||||
AvsIdMismatch api1@AvsPersonId api2@AvsPersonId: AVS Suche für Id #{tshow api1} lieferte stattdessen Id #{tshow api2}
|
AvsIdMismatch api1@AvsPersonId api2@AvsPersonId: AVS Suche für Id #{tshow api1} lieferte stattdessen Id #{tshow api2}
|
||||||
AvsUserCreationFailed api@AvsPersonId: Für AVS Id #{tshow api} konnte kein neuer Benutzer angelegt werden, da es eine gemeinsame Id (z.B. Personalnummer) mit einem existierenden, aber verschiedenen Nutzer gibt.
|
AvsUserCreationFailed api@AvsPersonId: Für AVS Id #{tshow api} konnte kein neuer Benutzer angelegt werden, da es eine gemeinsame Id (z.B. Personalnummer) mit einem existierenden, aber verschiedenen Nutzer gibt.
|
||||||
AvsCardsEmpty: AVS Suche lieferte keinerlei Ausweiskarten
|
AvsCardsEmpty: AVS Suche lieferte keinerlei Ausweiskarten
|
||||||
AvsCurrentData: Diese angezeigten Daten wurden kürzlich über die AVS Schnittstelle abgerufen.
|
AvsCurrentData: Alle angezeigte Daten wurden kürzlich direkt über die AVS Schnittstelle abgerufen.
|
||||||
@ -51,10 +51,11 @@ AvsInterfaceUnavailable: AVS interface was not configured correctly or does not
|
|||||||
AvsUserUnassociated user: AVS id unknown for user #{user}
|
AvsUserUnassociated user: AVS id unknown for user #{user}
|
||||||
AvsUserUnknownByAvs api: AVS reports id #{tshow api} as unknown (or no longer known)
|
AvsUserUnknownByAvs api: AVS reports id #{tshow api} as unknown (or no longer known)
|
||||||
AvsUserAmbiguous api: Multiple matching users found for #{tshow api}
|
AvsUserAmbiguous api: Multiple matching users found for #{tshow api}
|
||||||
|
AvsStatusSearchEmpty: AVS returned no card information
|
||||||
AvsPersonSearchEmpty: AVS search returned empty result
|
AvsPersonSearchEmpty: AVS search returned empty result
|
||||||
AvsPersonSearchAmbiguous: AVS search returned more than one result
|
AvsPersonSearchAmbiguous: AVS search returned more than one result
|
||||||
AvsSetLicencesFailed reason: Set driving licence within AVS failed. Reason: #{reason}
|
AvsSetLicencesFailed reason: Set driving licence within AVS failed. Reason: #{reason}
|
||||||
AvsIdMismatch api1 api2: AVS search for id #{tshow api1} returned id #{tshow api2} instead
|
AvsIdMismatch api1 api2: AVS search for id #{tshow api1} returned id #{tshow api2} instead
|
||||||
AvsUserCreationFailed api@AvsPersonId: No new user could be created for AVS Id #{tshow api}, since an existing user shares at least one id presumed as unique
|
AvsUserCreationFailed api@AvsPersonId: No new user could be created for AVS Id #{tshow api}, since an existing user shares at least one id presumed as unique
|
||||||
AvsCardsEmpty: AVS search returned no id cards
|
AvsCardsEmpty: AVS search returned no id cards
|
||||||
AvsCurrentData: This data has been recently received via the AVS interface.
|
AvsCurrentData: All shown data has been recently received via the AVS interface.
|
||||||
@ -696,10 +696,10 @@ postAdminAvsUserR uuid = do
|
|||||||
Entity{entityVal=UserAvs{..}} <- runDB $ getBy404 $ UniqueUserAvsUser uid
|
Entity{entityVal=UserAvs{..}} <- runDB $ getBy404 $ UniqueUserAvsUser uid
|
||||||
-- let fltrById prj = over _Wrapped (Set.filter ((== userAvsPersonId) . prj)) -- not sufficiently polymorphic
|
-- let fltrById prj = over _Wrapped (Set.filter ((== userAvsPersonId) . prj)) -- not sufficiently polymorphic
|
||||||
let fltrIdContact = over _Wrapped (Set.filter ((== userAvsPersonId) . avsContactPersonID))
|
let fltrIdContact = over _Wrapped (Set.filter ((== userAvsPersonId) . avsContactPersonID))
|
||||||
fltrIdStatus = over _Wrapped (Set.filter ((== userAvsPersonId) . avsStatusPersonID))
|
-- fltrIdStatus = over _Wrapped (Set.filter ((== userAvsPersonId) . avsStatusPersonID))
|
||||||
mbContact <- try $ fmap fltrIdContact $ avsQuery $ AvsQueryContact $ Set.singleton $ AvsObjPersonId userAvsPersonId
|
mbContact <- try $ fmap fltrIdContact $ avsQuery $ AvsQueryContact $ Set.singleton $ AvsObjPersonId userAvsPersonId
|
||||||
mbStatus <- try $ fmap fltrIdStatus $ avsQuery $ AvsQueryStatus $ Set.singleton userAvsPersonId
|
-- mbStatus <- try $ fmap fltrIdStatus $ avsQuery $ AvsQueryStatus $ Set.singleton userAvsPersonId
|
||||||
-- mbStatus <- try $ queryAvsFullStatus userAvsPersonId -- TODO: delete Handler.Utils.Avs.lookupAvsUser if no longer needed -- NOTE: currently needed to provide card firms that are missing in AVS status query responses
|
mbStatus <- try $ queryAvsFullStatus userAvsPersonId -- TODO: delete Handler.Utils.Avs.lookupAvsUser if no longer needed -- NOTE: currently needed to provide card firms that are missing in AVS status query responses
|
||||||
let compsUsed :: [CompanyName] = stripCI <$> mbStatus ^.. _Right . _Wrapped . folded . _avsStatusPersonCardStatus . folded . _avsDataFirm . _Just
|
let compsUsed :: [CompanyName] = stripCI <$> mbStatus ^.. _Right . _Wrapped . folded . _avsStatusPersonCardStatus . folded . _avsDataFirm . _Just
|
||||||
compDict <- if 1 >= length compsUsed
|
compDict <- if 1 >= length compsUsed
|
||||||
then return mempty -- switch company only sensible if there is more than one company to choose
|
then return mempty -- switch company only sensible if there is more than one company to choose
|
||||||
@ -759,7 +759,7 @@ postAdminAvsUserR uuid = do
|
|||||||
Left err -> exceptionWgt err
|
Left err -> exceptionWgt err
|
||||||
Right (AvsResponseStatus asts) ->
|
Right (AvsResponseStatus asts) ->
|
||||||
if null asts
|
if null asts
|
||||||
then [whamlet|This should not occur|] -- TODO
|
then [whamlet|_{MsgAvsPersonSearchEmpty}|]
|
||||||
else
|
else
|
||||||
let cs = mkCardsWgt compDict . avsStatusPersonCardStatus <$> toList asts
|
let cs = mkCardsWgt compDict . avsStatusPersonCardStatus <$> toList asts
|
||||||
in mconcat cs
|
in mconcat cs
|
||||||
|
|||||||
@ -76,6 +76,7 @@ data AvsException
|
|||||||
| AvsUserUnassociated Text -- Manipulating AVS Data for a user that is not linked to AVS yet
|
| AvsUserUnassociated Text -- Manipulating AVS Data for a user that is not linked to AVS yet
|
||||||
| AvsUserUnknownByAvs AvsPersonId -- AvsPersonId not (or no longer) found in AVS
|
| AvsUserUnknownByAvs AvsPersonId -- AvsPersonId not (or no longer) found in AVS
|
||||||
| AvsUserAmbiguous AvsPersonId -- Multiple matching existing users found for a query in AVS or DB
|
| AvsUserAmbiguous AvsPersonId -- Multiple matching existing users found for a query in AVS or DB
|
||||||
|
| AvsStatusSearchEmpty -- AvsStatusSearch returned empty result
|
||||||
| AvsPersonSearchEmpty -- AvsPersonSearch returned empty result
|
| AvsPersonSearchEmpty -- AvsPersonSearch returned empty result
|
||||||
| AvsPersonSearchAmbiguous -- AvsPersonSearch returned more than one result
|
| AvsPersonSearchAmbiguous -- AvsPersonSearch returned more than one result
|
||||||
| AvsSetLicencesFailed Text -- AvsSetLicence total failure
|
| AvsSetLicencesFailed Text -- AvsSetLicence total failure
|
||||||
|
|||||||
Reference in New Issue
Block a user