lamassu-server/lamassu-admin-elm/src/Common/Customer/Decoder.elm
2018-10-08 21:29:06 +02:00

77 lines
2.8 KiB
Elm

module Common.Customer.Decoder exposing (..)
import Json.Decode exposing (..)
import Json.Decode.Extra exposing (date, fromResult)
import Json.Decode.Pipeline exposing (decode, required, optional, hardcoded)
import Common.Customer.Types exposing (..)
customersDecoder : Decoder (List Customer)
customersDecoder =
field "customers" (list customerDecoder)
mapAuthorizedTypes : String -> Decoder Authorized
mapAuthorizedTypes s =
case s of
"blocked" ->
succeed Blocked
"verified" ->
succeed Verified
"automatic" ->
succeed Automatic
_ ->
fail ("No such type " ++ s)
authorizedDecoder : Decoder Authorized
authorizedDecoder =
string
|> andThen mapAuthorizedTypes
idCardDataDecoder : Decoder IdCardData
idCardDataDecoder =
decode IdCardData
|> required "uid" string
customerDecoder : Decoder Customer
customerDecoder =
decode Customer
|> required "id" string
|> required "name" (nullable string)
|> required "phone" (nullable string)
|> required "phoneAt" (nullable date)
|> required "smsOverride" authorizedDecoder
|> required "smsOverrideByName" (nullable string)
|> required "smsOverrideAt" (nullable date)
|> required "created" date
|> required "status" (nullable string)
|> required "authorizedOverride" authorizedDecoder
|> required "authorizedOverrideByName" (nullable string)
|> required "authorizedOverrideAt" (nullable date)
|> required "authorizedAt" (nullable date)
|> required "idCardData" (nullable idCardDataDecoder)
|> required "idCardDataOverride" authorizedDecoder
|> required "idCardDataOverrideByName" (nullable string)
|> required "idCardDataOverrideAt" (nullable date)
|> required "idCardDataAt" (nullable date)
|> required "idCardPhotoPath" (nullable string)
|> required "idCardPhotoOverride" authorizedDecoder
|> required "idCardPhotoOverrideByName" (nullable string)
|> required "idCardPhotoOverrideAt" (nullable date)
|> required "idCardPhotoAt" (nullable date)
|> required "sanctions" (nullable bool)
|> required "sanctionsOverride" authorizedDecoder
|> required "sanctionsOverrideByName" (nullable string)
|> required "sanctionsOverrideAt" (nullable date)
|> required "sanctionsAt" (nullable date)
|> required "frontCameraPath" (nullable string)
|> required "frontCameraOverride" authorizedDecoder
|> required "frontCameraOverrideByName" (nullable string)
|> required "frontCameraOverrideAt" (nullable date)
|> required "frontCameraAt" (nullable date)
|> required "dailyVolume" (nullable string)