demarches-normaliennes/app/models/champs/carte_champ.rb

70 lines
1.5 KiB
Ruby
Raw Normal View History

2018-10-16 13:01:12 +02:00
class Champs::CarteChamp < Champ
# We are not using scopes here as we want to access
# the following collections on unsaved records.
def cadastres
geo_areas.select do |area|
area.source == GeoArea.sources.fetch(:cadastre)
end
end
def quartiers_prioritaires
geo_areas.select do |area|
area.source == GeoArea.sources.fetch(:quartier_prioritaire)
end
end
2018-10-23 15:38:20 +02:00
def parcelles_agricoles
geo_areas.select do |area|
area.source == GeoArea.sources.fetch(:parcelle_agricole)
end
end
2018-10-17 12:42:06 +02:00
def cadastres?
type_de_champ&.cadastres && type_de_champ.cadastres != '0'
end
def quartiers_prioritaires?
type_de_champ&.quartiers_prioritaires && type_de_champ.quartiers_prioritaires != '0'
end
2018-10-23 15:38:20 +02:00
def parcelles_agricoles?
type_de_champ&.parcelles_agricoles && type_de_champ.parcelles_agricoles != '0'
end
2018-10-16 13:01:12 +02:00
def position
if dossier.present?
dossier.geo_position
else
lon = "2.428462"
lat = "46.538192"
zoom = "13"
{ lon: lon, lat: lat, zoom: zoom }
end
end
2018-10-17 12:02:34 +02:00
2018-10-31 13:27:56 +01:00
def geo_json
@geo_json ||= value.blank? ? [] : JSON.parse(value)
2018-10-17 12:02:34 +02:00
end
2018-10-31 13:29:25 +01:00
def user_geometry
{
type: 'Polygon',
coordinates: [
geo_json[0].map do |polygon|
[polygon['lat'], polygon['lng']]
end
]
}
end
def user_geo_area
if geo_json.present?
GeoArea.new(
geometry: user_geometry,
source: GeoArea.sources.fetch(:selection_utilisateur)
)
end
end
2018-10-16 13:01:12 +02:00
end