diff --git a/src/Utils/Avs.hs b/src/Utils/Avs.hs index 1976ea25f..c9cf80ace 100644 --- a/src/Utils/Avs.hs +++ b/src/Utils/Avs.hs @@ -63,13 +63,6 @@ instance FromJSON AvsDataCardColor where _ -> pure $ AvsCardColorMisc t parseJSON invalid = prependFailure "parsing AvsDataCardColor failed, " (typeMismatch "String" invalid) - -data AvsStatusPerson = AvsStatusPerson - { avsStatusPersonID :: AvsPersonId - , avsStatusPersonCardStatus :: Set AvsDataPersonCard - } - deriving (Eq, Ord, Read, Show, Generic, Typeable) - data AvsDataPersonCard = AvsDataPersonCard { avsDataCardAreas :: Set Char -- logically a set of upper-case letters , avsDataCardColor :: AvsDataCardColor @@ -117,8 +110,15 @@ instance ToJSON AvsDataPersonCard where , "PostalCode" .= avsDataPostalCode ] +data AvsStatusPerson = AvsStatusPerson + { avsStatusPersonID :: AvsPersonId + , avsStatusPersonCardStatus :: Set AvsDataPersonCard + } + deriving (Eq, Ord, Read, Show, Generic, Typeable) + + deriveJSON defaultOptions - { fieldLabelModifier = \case { "avsDataPersonCardStatus" -> "personCardStatus"; others -> dropCamel 2 others } + { fieldLabelModifier = \case { "avsStatusPersonCardStatus" -> "personCardStatus"; others -> dropCamel 2 others } , omitNothingFields = True , tagSingleConstructors = False , rejectUnknownFields = False diff --git a/testdata/avs_json.hs b/testdata/avs_json.hs index 4c71d4844..8930c87f7 100644 --- a/testdata/avs_json.hs +++ b/testdata/avs_json.hs @@ -10,7 +10,19 @@ import Utils.Avs status1 :: B.ByteString -status1 = fromString "[{\"PersonID\":10233,\"personCardStatus\":[{\"CardNo\":\"01234567\",\"VersionNo\":\"4\",\"CardColor\":\"Gelb\",\"CardAreas\":\"LY\",\"Valid\":\"true\"},{\"CardNo\":\"00001111\",\"VersionNo\":\"4\",\"CardColor\":\"Rot\",\"CardAreas\":\"F\",\"Valid\":\"true\"}]},{\"PersonID\":10444,\"personCardStatus\":[{\"CardNo\":\"11111111\",\"VersionNo\":\"4\",\"CardColor\":\"Gelb\",\"CardAreas\":\"LF\",\"Valid\":\"false\"}]}]" +status1 = fromString "[{\"PersonID\":10233,\"personCardStatus\":[{\"CardNo\":\"01234567\",\"VersionNo\":\"4\",\"CardColor\":\"Rot\",\"CardAreas\":\"LY\",\"Valid\":\"true\"},{\"CardNo\":\"00001111\",\"VersionNo\":\"4\",\"CardColor\":\"Rot\",\"CardAreas\":\"F\",\"Valid\":\"true\"}]},{\"PersonID\":10444,\"personCardStatus\":[{\"CardNo\":\"11111111\",\"VersionNo\":\"4\",\"CardColor\":\"Gelb\",\"CardAreas\":\"LF\",\"Valid\":\"false\"}]}]" test1 :: Either String AvsResponseStatus -test1 = eitherDecode status1 \ No newline at end of file +test1 = eitherDecode status1 + +person1 :: B.ByteString +person1 = fromString "[{\"PersonID\":518870,\"PersonNo\":508870,\"InternalPersonalNo\":\"00057138\",\"LastName\":\"Jost\",\"FirstName\":\"Steffen\",\"personCards\":[{\"Firm\":\"AVN-AR2\",\"City\":null,\"Street\":null,\"PostalCode\":null,\"CardNo\":\"00158446\",\"VersionNo\":\"4\",\"CardColor\":\"Gelb\",\"CardAreas\":\"\",\"Valid\":\"true\",\"ValidTo\":\"2024-05-20\",\"IssueDate\":\"2019-09-02\"}]}]" + +test2 :: Either String AvsResponsePerson +test2 = eitherDecode person1 + +person2 :: B.ByteString +person2 = fromString "[{\"PersonID\":4026895,\"PersonNo\":1200216,\"InternalPersonalNo\":\"00056057\",\"LastName\":\"Zatschker\",\"FirstName\":\"Laura\",\"personCards\":[{\"Firm\":\"AVN-SR1\",\"City\":null,\"Street\":null,\"PostalCode\":null,\"CardNo\":\"00048614\",\"VersionNo\":\"4\",\"CardColor\":\"Gelb\",\"CardAreas\":\"F\",\"Valid\":\"true\",\"ValidTo\":\"2024-01-15\",\"IssueDate\":\"2020-03-18\"}]}]" + +test3 :: Either String AvsResponsePerson +test3 = eitherDecode person2