aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/resources_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/resources_controller.rb')
-rw-r--r--app/controllers/resources_controller.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb
index 75fcedf..fdb69cc 100644
--- a/app/controllers/resources_controller.rb
+++ b/app/controllers/resources_controller.rb
@@ -35,6 +35,52 @@ class ResourcesController < ApplicationController
# 1. Compare records for changes
# 2. Validate each change
# 3. Moderate queue or save
+
+ updated_properties = @resource.feature['properties']
+ updated_geometry = @resource.feature['geometry']
+
+ updated = false
+
+ flash.now[:notice] = updated_geometry.inspect
+
+ if @resource.uuid.present? && params[:resource][:uuid].present? && params[:resource][:uuid] != @resource.uuid
+ flash.now[:error] = "UUID cannot be changed."
+ render :edit, status: :unprocessable_entity and return
+ end
+
+ params[:resource].each do |prop|
+ next if %w(longitude latitude).include?(prop.first.to_s)
+ if prop.last.present? && prop.last != @resource.send("#{prop.first.to_s}")
+ updated = true
+ updated_properties[prop.first.to_s] = prop.last
+ end
+ end
+
+ lon, lat = updated_geometry['coordinates']
+ flash.now.notice = "lon #{lon} => #{params[:resource][:longitude]}, lat #{lat} =>#{params[:resource][:latitude]}"
+ if params[:resource][:longitude].present? && params[:resource][:longitude] != lon
+ updated = true
+ updated_geometry['coordinates'][0] = params[:resource][:longitude]
+ Rails.logger.info "UPDATED LON TO #{params[:resource][:longitude]} /// #{updated_geometry.inspect}"
+ end
+ if params[:resource][:latitude].present? && params[:resource][:latitude] != lat
+ updated = true
+ updated_geometry['coordinates'][1] = params[:resource][:latitude]
+ end
+
+ if updated == true
+ Rails.logger.info "Got a Resource update..."
+ @resource.feature['properties'] = updated_properties
+ @resource.feature['geometry'] = updated_geometry
+ if @resource.save
+ flash.notice = "Good! It worked! #{@resource.feature['geometry']}"
+ redirect_to resource_url(@resource) and return
+ else
+ flash.now[:notice] = @resource.errors.inspect
+ end
+ end
+ flash.now[:alert] = "Update failed!"
+ render :edit
end
# GET /resources/:id/delete
@@ -49,6 +95,10 @@ class ResourcesController < ApplicationController
private
+ def resource_params
+ params.require(:resource).permit(:uuid, :name, :summary, :description, :email, :city, :postal_code, :phone_number, :website, :entry_number, :categories, :latitude, :longitude)
+ end
+
def set_resource
@resource = Resource.find_by(uuid: params[:id]) || Resource.new
end