{-# LANGUAGE DeriveGeneric #-} module ChatWork.Types.IncomingRequests ( IncomingRequests , IncomingRequest(..) , AcceptedIncomingRequest(..) ) where import ChatWork.Utils (strLength) import Data.Aeson (FromJSON (..), ToJSON (..), genericParseJSON, genericToJSON) import Data.Aeson.Casing (aesonDrop, snakeCase) import Data.Text (Text) import GHC.Generics (Generic) type IncomingRequests = [IncomingRequest] data IncomingRequest = IncomingRequest { incomingRequestToRequestId :: Int , incomingRequestToAccountId :: Int , incomingRequestToMessage :: Text , incomingRequestToName :: Text , incomingRequestToChatworkId :: Text , incomingRequestToOrganizationId :: Int , incomingRequestToOrganizationName :: Text , incomingRequestToDepartment :: Text , incomingRequestToAvatarImageUrl :: Text } deriving (Eq, Show, Generic) instance ToJSON IncomingRequest where toJSON = genericToJSON $ aesonDrop (strLength "incomingRequestTo") snakeCase instance FromJSON IncomingRequest where parseJSON = genericParseJSON $ aesonDrop (strLength "incomingRequestTo") snakeCase data AcceptedIncomingRequest = AcceptedIncomingRequest { acceptedIncomingRequestToAccountId :: Int , acceptedIncomingRequestToRoomId :: Int , acceptedIncomingRequestToName :: Text , acceptedIncomingRequestToChatworkId :: Text , acceptedIncomingRequestToOrganizationId :: Int , acceptedIncomingRequestToOrganizationName :: Text , acceptedIncomingRequestToDepartment :: Text , acceptedIncomingRequestToAvatarImageUrl :: Text } deriving (Eq, Show, Generic) instance ToJSON AcceptedIncomingRequest where toJSON = genericToJSON $ aesonDrop (strLength "acceptedIncomingRequestTo") snakeCase instance FromJSON AcceptedIncomingRequest where parseJSON = genericParseJSON $ aesonDrop (strLength "acceptedIncomingRequestTo") snakeCase