Added city radius provider option
This commit is contained in:
parent
1ad3feb101
commit
39b5d4b901
@ -106,6 +106,8 @@ class ConferenceAdministrationController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def administrate_providers
|
def administrate_providers
|
||||||
|
@conditions = Conference.default_provider_conditions.deep_merge(
|
||||||
|
@this_conference.provider_conditions || {})
|
||||||
end
|
end
|
||||||
|
|
||||||
def administrate_payment_message
|
def administrate_payment_message
|
||||||
@ -1195,6 +1197,23 @@ class ConferenceAdministrationController < ApplicationController
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def admin_update_providers
|
||||||
|
case params[:button]
|
||||||
|
when 'save_distance'
|
||||||
|
@this_conference.provider_conditions ||= Conference.default_provider_conditions
|
||||||
|
@this_conference.provider_conditions['distance'] = {
|
||||||
|
'number' => params[:distance_number],
|
||||||
|
'unit' => params[:distance_unit]
|
||||||
|
}
|
||||||
|
@this_conference.save
|
||||||
|
set_success_message :distance_saved
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
do_404
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
def get_empty(hash, keys)
|
def get_empty(hash, keys)
|
||||||
keys = [keys] unless keys.is_a?(Array)
|
keys = [keys] unless keys.is_a?(Array)
|
||||||
keys.each do | key |
|
keys.each do | key |
|
||||||
|
@ -58,7 +58,7 @@ class ConferencesController < ApplicationController
|
|||||||
|
|
||||||
steps = nil
|
steps = nil
|
||||||
return do_404 unless registration_steps.present?
|
return do_404 unless registration_steps.present?
|
||||||
|
|
||||||
@register_template = :administration if params[:admin_step].present?
|
@register_template = :administration if params[:admin_step].present?
|
||||||
|
|
||||||
@errors = {}
|
@errors = {}
|
||||||
@ -330,7 +330,7 @@ class ConferencesController < ApplicationController
|
|||||||
steps -= [:questions] unless status == :open
|
steps -= [:questions] unless status == :open
|
||||||
steps -= [:payment] unless status == :open && conference.paypal_email_address.present? && conference.paypal_username.present? && conference.paypal_password.present? && conference.paypal_signature.present?
|
steps -= [:payment] unless status == :open && conference.paypal_email_address.present? && conference.paypal_username.present? && conference.paypal_password.present? && conference.paypal_signature.present?
|
||||||
if @registration.present?
|
if @registration.present?
|
||||||
if @registration.city_id == conference.city_id
|
if view_context.potential_provider(@registration)
|
||||||
steps -= [:questions]
|
steps -= [:questions]
|
||||||
|
|
||||||
# if this is a housing provider that is not attending the conference, remove these steps
|
# if this is a housing provider that is not attending the conference, remove these steps
|
||||||
|
@ -2191,6 +2191,24 @@ module ApplicationHelper
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def potential_provider(registration)
|
||||||
|
return false unless registration.present? && registration.city.present? && registration.conference.present?
|
||||||
|
conditions = registration.conference.provider_conditions ||
|
||||||
|
Conference.default_provider_conditions
|
||||||
|
return city_distance_less_than(registration.conference.city, registration.city,
|
||||||
|
(conditions['distance']['number'] || '0').to_i,
|
||||||
|
conditions['distance']['unit'])
|
||||||
|
end
|
||||||
|
|
||||||
|
def city_distance_less_than(city1, city2, max_distance, unit)
|
||||||
|
return false if city1.nil? || city2.nil?
|
||||||
|
return true if city1.id == city2.id
|
||||||
|
return false if max_distance < 1
|
||||||
|
return Geocoder::Calculations.distance_between(
|
||||||
|
[city1.latitude, city1.longitude], [city2.latitude, city2.longitude],
|
||||||
|
units: unit.to_sym) < max_distance
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def _original_content(value, lang)
|
def _original_content(value, lang)
|
||||||
content_tag(:div, (
|
content_tag(:div, (
|
||||||
|
@ -8,7 +8,7 @@ module RegistrationHelper
|
|||||||
completed_steps = registration.steps_completed || []
|
completed_steps = registration.steps_completed || []
|
||||||
registration_complete = registration_complete?(registration)
|
registration_complete = registration_complete?(registration)
|
||||||
|
|
||||||
if registration.city_id == registration.conference.city_id
|
if potential_provider(registration)
|
||||||
steps -= [:questions]
|
steps -= [:questions]
|
||||||
else
|
else
|
||||||
steps -= [:hosting]
|
steps -= [:hosting]
|
||||||
|
@ -153,4 +153,8 @@ class Conference < ActiveRecord::Base
|
|||||||
Conference.conference_types[(type || :annual).to_sym][:title].gsub('%{city}', city).gsub('%{year}', year.to_s)
|
Conference.conference_types[(type || :annual).to_sym][:title].gsub('%{city}', city).gsub('%{year}', year.to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.default_provider_conditions
|
||||||
|
{ 'distance' => { 'number' => 0, 'unit' => 'mi' }}
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -1,2 +1,10 @@
|
|||||||
= columns(medium: 12) do
|
= admin_update_form do
|
||||||
TO COME
|
= columns(medium: 12) do
|
||||||
|
%h3=_'articles.admin.housing.headings.provider_distance', :t
|
||||||
|
%p=_'articles.admin.housing.descriptions.provider_distance', :p, vars: { city: @this_conference.city_name }
|
||||||
|
= columns(medium: 12, class: 'flex-column') do
|
||||||
|
= numberfield :distance_number, @conditions['distance']['number'], step: 1, min: 0, stretch: true, label: false
|
||||||
|
= selectfield :distance_unit, @conditions['distance']['unit'], [:km, :mi], label: false, inline: true
|
||||||
|
= columns(medium: 12) do
|
||||||
|
.actions.right
|
||||||
|
= button_tag :save, value: :save_distance
|
||||||
|
@ -243,6 +243,7 @@ en:
|
|||||||
org_member_removed: User removed from organization
|
org_member_removed: User removed from organization
|
||||||
administrator_added: Administrator added to conference
|
administrator_added: Administrator added to conference
|
||||||
administrator_removed: Administrator removed from conference
|
administrator_removed: Administrator removed from conference
|
||||||
|
distance_saved: Provider options updated
|
||||||
helpers:
|
helpers:
|
||||||
select:
|
select:
|
||||||
prompt: Please select
|
prompt: Please select
|
||||||
@ -999,8 +1000,10 @@ en:
|
|||||||
arrival_departure: In City
|
arrival_departure: In City
|
||||||
providers: Housing Providers
|
providers: Housing Providers
|
||||||
housing: Arrange Housing
|
housing: Arrange Housing
|
||||||
|
provider_distance: Distance from host city
|
||||||
descriptions:
|
descriptions:
|
||||||
providers: Although most housing providers shuold be encouraged to supply their own details through the registration process, you can add and edit housing provider details manually here.
|
providers: Although most housing providers shuold be encouraged to supply their own details through the registration process, you can add and edit housing provider details manually here.
|
||||||
|
provider_distance: Any registrant who enters their location in the same city as the conference will get a housing provider form during registration instead of a guest form. If you want to consider surrounding cities as well, enter the distance from %{city} that you wish to be included as providers. Cities are measured from center to center.
|
||||||
housing: Pair each housing provider with a list of guests.
|
housing: Pair each housing provider with a list of guests.
|
||||||
locations:
|
locations:
|
||||||
heading: Locations
|
heading: Locations
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20170110061048) do
|
ActiveRecord::Schema.define(version: 20170111013903) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
@ -180,6 +180,7 @@ ActiveRecord::Schema.define(version: 20170110061048) do
|
|||||||
t.integer "city_id"
|
t.integer "city_id"
|
||||||
t.boolean "is_public"
|
t.boolean "is_public"
|
||||||
t.boolean "is_featured"
|
t.boolean "is_featured"
|
||||||
|
t.json "provider_conditions"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "delayed_jobs", force: :cascade do |t|
|
create_table "delayed_jobs", force: :cascade do |t|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user