77 lines
2.8 KiB
Elm
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)
|