Expose migrated legacy carto champs on api
This commit is contained in:
parent
fe630847e9
commit
0b017580c5
8 changed files with 70 additions and 45 deletions
|
@ -5,7 +5,7 @@ class UserGeometry
|
||||||
@json_latlngs = json_latlngs
|
@json_latlngs = json_latlngs
|
||||||
end
|
end
|
||||||
|
|
||||||
def value
|
def geometry
|
||||||
to_geo_json(@json_latlngs)
|
to_geo_json(@json_latlngs)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
class CadastreSerializer < ActiveModel::Serializer
|
|
||||||
attributes :value, :type_de_champ
|
|
||||||
|
|
||||||
def value
|
|
||||||
object.geometry
|
|
||||||
end
|
|
||||||
|
|
||||||
def type_de_champ
|
|
||||||
{
|
|
||||||
id: -1,
|
|
||||||
libelle: 'cadastre',
|
|
||||||
type_champ: 'cadastre',
|
|
||||||
order_place: -1,
|
|
||||||
descripton: ''
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -6,10 +6,62 @@ class ChampSerializer < ActiveModel::Serializer
|
||||||
has_one :type_de_champ
|
has_one :type_de_champ
|
||||||
|
|
||||||
def value
|
def value
|
||||||
if object.piece_justificative_file.attached?
|
case object
|
||||||
url_for(object.piece_justificative_file)
|
when GeoArea, UserGeometry, Cadastre, QuartierPrioritaire
|
||||||
|
object.geometry
|
||||||
else
|
else
|
||||||
object.value
|
if object.piece_justificative_file.attached?
|
||||||
|
url_for(object.piece_justificative_file)
|
||||||
|
else
|
||||||
|
object.value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def type_de_champ
|
||||||
|
case object
|
||||||
|
when GeoArea, UserGeometry, Cadastre, QuartierPrioritaire
|
||||||
|
legacy_type_de_champ
|
||||||
|
else
|
||||||
|
object.type_de_champ
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def legacy_type_de_champ
|
||||||
|
{
|
||||||
|
id: -1,
|
||||||
|
libelle: legacy_carto_libelle,
|
||||||
|
type_champ: legacy_carto_type_champ,
|
||||||
|
order_place: -1,
|
||||||
|
descripton: ''
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def legacy_carto_libelle
|
||||||
|
case object
|
||||||
|
when UserGeometry, Cadastre, QuartierPrioritaire
|
||||||
|
object.class.name.underscore.tr('_', ' ')
|
||||||
|
else
|
||||||
|
if object.source == GeoArea.sources.fetch(:selection_utilisateur)
|
||||||
|
'user geometry'
|
||||||
|
else
|
||||||
|
object.source.to_s.tr('_', ' ')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def legacy_carto_type_champ
|
||||||
|
case object
|
||||||
|
when UserGeometry, Cadastre, QuartierPrioritaire
|
||||||
|
object.class.name.underscore
|
||||||
|
else
|
||||||
|
if object.source == GeoArea.sources.fetch(:selection_utilisateur)
|
||||||
|
'user_geometry'
|
||||||
|
else
|
||||||
|
object.source.to_s
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,7 +23,7 @@ class DossierSerializer < ActiveModel::Serializer
|
||||||
has_many :pieces_justificatives
|
has_many :pieces_justificatives
|
||||||
has_many :types_de_piece_justificative
|
has_many :types_de_piece_justificative
|
||||||
|
|
||||||
has_many :champs
|
has_many :champs, serializer: ChampSerializer
|
||||||
|
|
||||||
def champs
|
def champs
|
||||||
champs = object.champs.to_a
|
champs = object.champs.to_a
|
||||||
|
@ -35,6 +35,16 @@ class DossierSerializer < ActiveModel::Serializer
|
||||||
if object.user_geometry.present?
|
if object.user_geometry.present?
|
||||||
champs << object.user_geometry
|
champs << object.user_geometry
|
||||||
end
|
end
|
||||||
|
elsif object.expose_legacy_carto_api?
|
||||||
|
champ_carte = champs.find do |champ|
|
||||||
|
champ.type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:carte)
|
||||||
|
end
|
||||||
|
|
||||||
|
if champ_carte.present?
|
||||||
|
carto_champs = champ_carte.geo_areas.to_a
|
||||||
|
carto_champs << champ_carte.user_geo_area
|
||||||
|
champs += carto_champs.compact
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
champs
|
champs
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
class QuartierPrioritaireSerializer < ActiveModel::Serializer
|
|
||||||
attributes :value, :type_de_champ
|
|
||||||
|
|
||||||
def value
|
|
||||||
object.geometry
|
|
||||||
end
|
|
||||||
|
|
||||||
def type_de_champ
|
|
||||||
{
|
|
||||||
id: -1,
|
|
||||||
libelle: 'quartier prioritaire',
|
|
||||||
type_champ: 'quartier_prioritaire',
|
|
||||||
order_place: -1,
|
|
||||||
descripton: ''
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,3 +0,0 @@
|
||||||
class UserGeometrySerializer < ActiveModel::Serializer
|
|
||||||
attributes :value, :type_de_champ
|
|
||||||
end
|
|
|
@ -290,8 +290,8 @@ describe API::V1::DossiersController do
|
||||||
super().find { |champ| champ[:type_de_champ][:type_champ] == 'user_geometry' }
|
super().find { |champ| champ[:type_de_champ][:type_champ] == 'user_geometry' }
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'user_geometry', type_champ: 'user_geometry', order_place: -1, descripton: '' }) }
|
it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'user geometry', type_champ: 'user_geometry', order_place: -1, descripton: '' }) }
|
||||||
it { expect(subject[:value]).to match(UserGeometry.new(dossier.json_latlngs).value) }
|
it { expect(subject[:value]).to match(UserGeometry.new(dossier.json_latlngs).geometry) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -841,7 +841,7 @@ describe Dossier do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject{ dossier.user_geometry.value }
|
subject{ dossier.user_geometry.geometry }
|
||||||
|
|
||||||
it { is_expected.to eq(expected) }
|
it { is_expected.to eq(expected) }
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue