Merge pull request #6401 from tchak/feat-graphql-dossier-demarche

feat(graphql): expose demarche descriptor on dossier type
This commit is contained in:
Paul Chavard 2021-08-25 15:36:28 +02:00 committed by GitHub
commit dad9c0473c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 105 additions and 10 deletions

View file

@ -406,7 +406,7 @@ interface Demandeur {
} }
""" """
Une demarche Une démarche
""" """
type Demarche { type Demarche {
annotationDescriptors: [ChampDescriptor!]! annotationDescriptors: [ChampDescriptor!]!
@ -438,7 +438,7 @@ type Demarche {
datePublication: ISO8601DateTime datePublication: ISO8601DateTime
""" """
Létat de dossier pour une démarche déclarative Pour une démarche déclarative, état cible des dossiers à valider automatiquement
""" """
declarative: DossierDeclarativeState declarative: DossierDeclarativeState
@ -551,7 +551,7 @@ type Demarche {
id: ID! id: ID!
""" """
Le numero de la démarche. Numero de la démarche.
""" """
number: Int! number: Int!
publishedRevision: Revision publishedRevision: Revision
@ -559,12 +559,70 @@ type Demarche {
service: Service! service: Service!
""" """
Létat de la démarche. État de la démarche.
""" """
state: DemarcheState! state: DemarcheState!
""" """
Le titre de la démarche. Titre de la démarche.
"""
title: String!
}
"""
Une démarche (métadonnées)
Ceci est une version abrégée du type `Demarche`, qui nexpose que les métadonnées.
Cela évite laccès récursif aux dossiers.
"""
type DemarcheDescriptor {
"""
Date de la création.
"""
dateCreation: ISO8601DateTime!
"""
Date de la dépublication.
"""
dateDepublication: ISO8601DateTime
"""
Date de la dernière modification.
"""
dateDerniereModification: ISO8601DateTime!
"""
Date de la fermeture.
"""
dateFermeture: ISO8601DateTime
"""
Date de la publication.
"""
datePublication: ISO8601DateTime
"""
Pour une démarche déclarative, état cible des dossiers à valider automatiquement
"""
declarative: DossierDeclarativeState
"""
Description de la démarche.
"""
description: String!
id: ID!
"""
Numero de la démarche.
"""
number: Int!
"""
État de la démarche.
"""
state: DemarcheState!
"""
Titre de la démarche.
""" """
title: String! title: String!
} }
@ -650,6 +708,7 @@ type Dossier {
""" """
dateTraitement: ISO8601DateTime dateTraitement: ISO8601DateTime
demandeur: Demandeur! demandeur: Demandeur!
demarche: DemarcheDescriptor!
""" """
LURL du GeoJSON contenant les données cartographiques du dossier. LURL du GeoJSON contenant les données cartographiques du dossier.

View file

@ -0,0 +1,24 @@
module Types
class DemarcheDescriptorType < Types::BaseObject
description "Une démarche (métadonnées)
Ceci est une version abrégée du type `Demarche`, qui nexpose que les métadonnées.
Cela évite laccès récursif aux dossiers."
global_id_field :id
field :number, Int, "Numero de la démarche.", null: false, method: :id
field :title, String, "Titre de la démarche.", null: false, method: :libelle
field :description, String, "Description de la démarche.", null: false
field :state, Types::DemarcheType::DemarcheState, "État de la démarche.", null: false
field :declarative, Types::DemarcheType::DossierDeclarativeState, "Pour une démarche déclarative, état cible des dossiers à valider automatiquement", null: true, method: :declarative_with_state
field :date_creation, GraphQL::Types::ISO8601DateTime, "Date de la création.", null: false, method: :created_at
field :date_publication, GraphQL::Types::ISO8601DateTime, "Date de la publication.", null: true, method: :published_at
field :date_derniere_modification, GraphQL::Types::ISO8601DateTime, "Date de la dernière modification.", null: false, method: :updated_at
field :date_depublication, GraphQL::Types::ISO8601DateTime, "Date de la dépublication.", null: true, method: :unpublished_at
field :date_fermeture, GraphQL::Types::ISO8601DateTime, "Date de la fermeture.", null: true, method: :closed_at
def state
object.aasm.current_state
end
end
end

View file

@ -14,14 +14,14 @@ module Types
end end
end end
description "Une demarche" description "Une démarche"
global_id_field :id global_id_field :id
field :number, Int, "Le numero de la démarche.", null: false, method: :id field :number, Int, "Numero de la démarche.", null: false, method: :id
field :title, String, "Le titre de la démarche.", null: false, method: :libelle field :title, String, "Titre de la démarche.", null: false, method: :libelle
field :description, String, "Description de la démarche.", null: false field :description, String, "Description de la démarche.", null: false
field :state, DemarcheState, "Létat de la démarche.", null: false field :state, DemarcheState, "État de la démarche.", null: false
field :declarative, DossierDeclarativeState, "Létat de dossier pour une démarche déclarative", null: true, method: :declarative_with_state field :declarative, DossierDeclarativeState, "Pour une démarche déclarative, état cible des dossiers à valider automatiquement", null: true, method: :declarative_with_state
field :date_creation, GraphQL::Types::ISO8601DateTime, "Date de la création.", null: false, method: :created_at field :date_creation, GraphQL::Types::ISO8601DateTime, "Date de la création.", null: false, method: :created_at
field :date_publication, GraphQL::Types::ISO8601DateTime, "Date de la publication.", null: true, method: :published_at field :date_publication, GraphQL::Types::ISO8601DateTime, "Date de la publication.", null: true, method: :published_at

View file

@ -12,6 +12,8 @@ module Types
field :number, Int, "Le numero du dossier.", null: false, method: :id field :number, Int, "Le numero du dossier.", null: false, method: :id
field :state, DossierState, "Létat du dossier.", null: false field :state, DossierState, "Létat du dossier.", null: false
field :demarche, Types::DemarcheDescriptorType, null: false, method: :procedure
field :date_passage_en_construction, GraphQL::Types::ISO8601DateTime, "Date de dépôt.", null: false, method: :en_construction_at field :date_passage_en_construction, GraphQL::Types::ISO8601DateTime, "Date de dépôt.", null: false, method: :en_construction_at
field :date_passage_en_instruction, GraphQL::Types::ISO8601DateTime, "Date de passage en instruction.", null: true, method: :en_instruction_at field :date_passage_en_instruction, GraphQL::Types::ISO8601DateTime, "Date de passage en instruction.", null: true, method: :en_instruction_at
field :date_traitement, GraphQL::Types::ISO8601DateTime, "Date de traitement.", null: true, method: :processed_at field :date_traitement, GraphQL::Types::ISO8601DateTime, "Date de traitement.", null: true, method: :processed_at

View file

@ -310,6 +310,11 @@ describe API::V2::GraphqlController do
motivationAttachment { motivationAttachment {
url url
} }
demarche {
number
title
state
}
usager { usager {
id id
email email
@ -382,6 +387,11 @@ describe API::V2::GraphqlController do
dateTraitement: nil, dateTraitement: nil,
motivation: nil, motivation: nil,
motivationAttachment: nil, motivationAttachment: nil,
demarche: {
number: dossier.procedure.id,
title: dossier.procedure.libelle,
state: 'publiee'
},
usager: { usager: {
id: dossier.user.to_typed_id, id: dossier.user.to_typed_id,
email: dossier.user.email email: dossier.user.email