refactor(avs): prioritise card color by choosing among several avs cards
This commit is contained in:
parent
d174f39530
commit
77f76fbe8d
@ -79,7 +79,7 @@ licence2char AvsLicenceVorfeld = 'F'
|
|||||||
licence2char AvsLicenceRollfeld = 'R'
|
licence2char AvsLicenceRollfeld = 'R'
|
||||||
|
|
||||||
|
|
||||||
data AvsDataCardColor = AvsCardColorGrün | AvsCardColorBlau | AvsCardColorRot | AvsCardColorGelb | AvsCardColorMisc Text
|
data AvsDataCardColor = AvsCardColorMisc Text | AvsCardColorGrün | AvsCardColorBlau | AvsCardColorRot | AvsCardColorGelb
|
||||||
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||||
deriving anyclass (NFData)
|
deriving anyclass (NFData)
|
||||||
|
|
||||||
@ -104,12 +104,12 @@ data AvsDataPersonCard = AvsDataPersonCard
|
|||||||
{ avsDataValid :: Bool -- card currently valid? Note that AVS encodes booleans as JSON String "true" and "false" and not as JSON booleans
|
{ avsDataValid :: Bool -- card currently valid? Note that AVS encodes booleans as JSON String "true" and "false" and not as JSON booleans
|
||||||
, avsDataValidTo :: Maybe Day -- always Nothing if returned with AvsResponseStatus
|
, avsDataValidTo :: Maybe Day -- always Nothing if returned with AvsResponseStatus
|
||||||
, avsDataIssueDate :: Maybe Day -- always Nothing if returned with AvsResponseStatus
|
, avsDataIssueDate :: Maybe Day -- always Nothing if returned with AvsResponseStatus
|
||||||
|
, avsDataCardColor :: AvsDataCardColor
|
||||||
, avsDataCardAreas :: Set Char -- logically a set of upper-case letters
|
, avsDataCardAreas :: Set Char -- logically a set of upper-case letters
|
||||||
, avsDataStreet :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
, avsDataStreet :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
||||||
, avsDataPostalCode:: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
, avsDataPostalCode:: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
||||||
, avsDataCity :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
, avsDataCity :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
||||||
, avsDataFirm :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
, avsDataFirm :: Maybe Text -- always Nothing if returned with AvsResponseStatus
|
||||||
, avsDataCardColor :: AvsDataCardColor
|
|
||||||
, avsDataCardNo :: Text -- always 8 digits
|
, avsDataCardNo :: Text -- always 8 digits
|
||||||
, avsDataVersionNo :: Text
|
, avsDataVersionNo :: Text
|
||||||
}
|
}
|
||||||
@ -134,12 +134,12 @@ instance FromJSON AvsDataPersonCard where
|
|||||||
<$> ((v .: "Valid") <&> sloppyBool)
|
<$> ((v .: "Valid") <&> sloppyBool)
|
||||||
<*> v .:? "ValidTo"
|
<*> v .:? "ValidTo"
|
||||||
<*> v .:? "IssueDate"
|
<*> v .:? "IssueDate"
|
||||||
|
<*> v .: "CardColor"
|
||||||
<*> ((v .: "CardAreas") <&> charSet)
|
<*> ((v .: "CardAreas") <&> charSet)
|
||||||
<*> v .:? "Street"
|
<*> v .:? "Street"
|
||||||
<*> v .:? "PostalCode"
|
<*> v .:? "PostalCode"
|
||||||
<*> v .:? "City"
|
<*> v .:? "City"
|
||||||
<*> v .:? "Firm"
|
<*> v .:? "Firm"
|
||||||
<*> v .: "CardColor"
|
|
||||||
<*> v .: "CardNo"
|
<*> v .: "CardNo"
|
||||||
<*> v .: "VersionNo"
|
<*> v .: "VersionNo"
|
||||||
|
|
||||||
@ -298,6 +298,8 @@ pickLicenceAddress a b
|
|||||||
| Just r <- pickBetter' avsDataValid = r -- prefer valid cards
|
| Just r <- pickBetter' avsDataValid = r -- prefer valid cards
|
||||||
| Just r <- pickBetter' (Set.member licenceRollfeld . avsDataCardAreas) = r -- prefer 'R' cards
|
| Just r <- pickBetter' (Set.member licenceRollfeld . avsDataCardAreas) = r -- prefer 'R' cards
|
||||||
| Just r <- pickBetter' (Set.member licenceVorfeld . avsDataCardAreas) = r -- prefer 'F' cards
|
| Just r <- pickBetter' (Set.member licenceVorfeld . avsDataCardAreas) = r -- prefer 'F' cards
|
||||||
|
| avsDataCardColor a > avsDataCardColor b = a -- prefer Yellow over Green, etc.
|
||||||
|
| avsDataCardColor a < avsDataCardColor b = b
|
||||||
| avsDataIssueDate a > avsDataIssueDate b = a -- prefer later issue date
|
| avsDataIssueDate a > avsDataIssueDate b = a -- prefer later issue date
|
||||||
| avsDataIssueDate a < avsDataIssueDate b = b
|
| avsDataIssueDate a < avsDataIssueDate b = b
|
||||||
| avsDataValidTo a > avsDataValidTo b = a -- prefer later validto date
|
| avsDataValidTo a > avsDataValidTo b = a -- prefer later validto date
|
||||||
|
|||||||
Reference in New Issue
Block a user