2021-01-28 13:53:18 +01:00
|
|
|
class SerializerService
|
|
|
|
def self.dossier(dossier)
|
|
|
|
data = execute_query('serializeDossier', { number: dossier.id })
|
|
|
|
data && data['dossier']
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.avis(avis)
|
|
|
|
data = execute_query('serializeAvis', { number: avis.dossier_id, id: avis.to_typed_id })
|
|
|
|
data && data['dossier']['avis'].first
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.champ(champ)
|
|
|
|
if champ.private?
|
|
|
|
data = execute_query('serializeAnnotation', { number: champ.dossier_id, id: champ.to_typed_id })
|
|
|
|
data && data['dossier']['annotations'].first
|
|
|
|
else
|
|
|
|
data = execute_query('serializeChamp', { number: champ.dossier_id, id: champ.to_typed_id })
|
|
|
|
data && data['dossier']['champs'].first
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.execute_query(operation_name, variables)
|
|
|
|
result = API::V2::Schema.execute(QUERY,
|
|
|
|
variables: variables,
|
|
|
|
context: { internal_use: true },
|
|
|
|
operation_name: operation_name)
|
|
|
|
if result['errors'].present?
|
|
|
|
raise result['errors'].first['message']
|
|
|
|
end
|
|
|
|
result['data']
|
|
|
|
end
|
|
|
|
|
|
|
|
QUERY = <<-'GRAPHQL'
|
|
|
|
query serializeDossier($number: Int!) {
|
|
|
|
dossier(number: $number) {
|
|
|
|
...DossierFragment
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
query serializeAvis($number: Int!, $id: ID!) {
|
|
|
|
dossier(number: $number) {
|
|
|
|
avis(id: $id) {
|
|
|
|
...AvisFragment
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
query serializeChamp($number: Int!, $id: ID!) {
|
|
|
|
dossier(number: $number) {
|
|
|
|
champs(id: $id) {
|
2021-05-25 12:59:11 +02:00
|
|
|
...ChampFragment
|
|
|
|
...RepetitionChampFragment
|
|
|
|
...CarteChampFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
query serializeAnnotation($number: Int!, $id: ID!) {
|
|
|
|
dossier(number: $number) {
|
|
|
|
annotations(id: $id) {
|
2021-05-25 12:59:11 +02:00
|
|
|
...ChampFragment
|
|
|
|
...RepetitionChampFragment
|
|
|
|
...CarteChampFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fragment DossierFragment on Dossier {
|
|
|
|
id
|
|
|
|
number
|
|
|
|
archived
|
|
|
|
state
|
|
|
|
dateDerniereModification
|
|
|
|
datePassageEnConstruction
|
|
|
|
datePassageEnInstruction
|
|
|
|
dateTraitement
|
|
|
|
instructeurs {
|
|
|
|
email
|
|
|
|
}
|
|
|
|
groupeInstructeur {
|
|
|
|
label
|
|
|
|
}
|
|
|
|
champs {
|
2021-05-25 12:59:11 +02:00
|
|
|
...ChampFragment
|
|
|
|
...RepetitionChampFragment
|
|
|
|
...CarteChampFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
annotations {
|
2021-05-25 12:59:11 +02:00
|
|
|
...ChampFragment
|
|
|
|
...RepetitionChampFragment
|
|
|
|
...CarteChampFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
avis {
|
|
|
|
...AvisFragment
|
|
|
|
}
|
|
|
|
demandeur {
|
2021-05-25 12:59:11 +02:00
|
|
|
...PersonnePhysiqueFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
...PersonneMoraleFragment
|
|
|
|
}
|
|
|
|
motivation
|
|
|
|
motivationAttachment {
|
2021-05-25 12:59:11 +02:00
|
|
|
...FileFragment
|
|
|
|
}
|
|
|
|
revision {
|
|
|
|
id
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fragment AvisFragment on Avis {
|
|
|
|
id
|
|
|
|
question
|
|
|
|
reponse
|
|
|
|
dateQuestion
|
|
|
|
dateReponse
|
2021-03-22 10:25:47 +01:00
|
|
|
claimant {
|
2021-01-28 13:53:18 +01:00
|
|
|
email
|
|
|
|
}
|
|
|
|
expert {
|
|
|
|
email
|
|
|
|
}
|
|
|
|
attachment {
|
2021-05-25 12:59:11 +02:00
|
|
|
...FileFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fragment ChampFragment on Champ {
|
|
|
|
id
|
|
|
|
label
|
|
|
|
stringValue
|
|
|
|
... on SiretChamp {
|
|
|
|
etablissement {
|
|
|
|
...PersonneMoraleFragment
|
|
|
|
}
|
|
|
|
}
|
|
|
|
... on LinkedDropDownListChamp {
|
|
|
|
primaryValue
|
|
|
|
secondaryValue
|
|
|
|
}
|
|
|
|
... on MultipleDropDownListChamp {
|
|
|
|
values
|
|
|
|
}
|
|
|
|
... on PieceJustificativeChamp {
|
|
|
|
file {
|
2021-05-25 12:59:11 +02:00
|
|
|
...FileFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
... on AddressChamp {
|
|
|
|
address {
|
|
|
|
...AddressFragment
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-25 12:59:11 +02:00
|
|
|
fragment RepetitionChampFragment on RepetitionChamp {
|
|
|
|
champs {
|
|
|
|
...ChampFragment
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
2021-05-25 12:59:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
fragment CarteChampFragment on CarteChamp {
|
|
|
|
geoAreas {
|
|
|
|
source
|
|
|
|
description
|
|
|
|
geometry {
|
|
|
|
type
|
|
|
|
coordinates
|
|
|
|
}
|
|
|
|
... on ParcelleCadastrale {
|
|
|
|
prefixe
|
|
|
|
numero
|
|
|
|
commune
|
|
|
|
section
|
|
|
|
surface
|
2021-01-28 13:53:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-25 12:59:11 +02:00
|
|
|
fragment PersonnePhysiqueFragment on PersonnePhysique {
|
|
|
|
civilite
|
|
|
|
nom
|
|
|
|
prenom
|
|
|
|
dateDeNaissance
|
|
|
|
}
|
|
|
|
|
2021-01-28 13:53:18 +01:00
|
|
|
fragment PersonneMoraleFragment on PersonneMorale {
|
|
|
|
siret
|
|
|
|
siegeSocial
|
|
|
|
naf
|
|
|
|
libelleNaf
|
|
|
|
address {
|
|
|
|
...AddressFragment
|
|
|
|
}
|
|
|
|
entreprise {
|
|
|
|
siren
|
|
|
|
capitalSocial
|
|
|
|
numeroTvaIntracommunautaire
|
|
|
|
formeJuridique
|
|
|
|
formeJuridiqueCode
|
|
|
|
nomCommercial
|
|
|
|
raisonSociale
|
|
|
|
siretSiegeSocial
|
|
|
|
codeEffectifEntreprise
|
|
|
|
dateCreation
|
|
|
|
nom
|
|
|
|
prenom
|
|
|
|
}
|
|
|
|
association {
|
|
|
|
rna
|
|
|
|
titre
|
|
|
|
objet
|
|
|
|
dateCreation
|
|
|
|
dateDeclaration
|
|
|
|
datePublication
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fragment AddressFragment on Address {
|
|
|
|
label
|
|
|
|
type
|
|
|
|
streetAddress
|
|
|
|
streetNumber
|
|
|
|
streetName
|
|
|
|
postalCode
|
|
|
|
cityName
|
|
|
|
cityCode
|
|
|
|
departmentName
|
|
|
|
departmentCode
|
|
|
|
regionName
|
|
|
|
regionCode
|
|
|
|
}
|
2021-05-25 12:59:11 +02:00
|
|
|
|
|
|
|
fragment FileFragment on File {
|
|
|
|
filename
|
|
|
|
checksum
|
|
|
|
byteSize
|
|
|
|
contentType
|
|
|
|
}
|
2021-01-28 13:53:18 +01:00
|
|
|
GRAPHQL
|
|
|
|
end
|