| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- class Landmark < ActiveRecord::Base
- validates :name, presence: true
- validates :description, presence: true
- validates :category, presence: true
- before_save :set_default_warning
- def self.restricted_find(search, author)
- # Find Landmark
- case search.to_i
- when 0
- where(user_id: author.id).
- find_by!('name ilike ?', search)
- else
- find(search) if Util::Roles.admin?(author)
- end
- end
- def set_default_warning
- if warning.nil?
- self.warning = 'This is a verified safe location!'
- self.w_url = 'https://cdn.dribbble.com/users/250235/screenshots/2850450/pokemon_center_1x.png'
- self.w_rating = 'SFW'
- end
- end
- def self.from_form(app)
- key_mapping = {
- 'Description' => 'description',
- 'Type' => 'category',
- 'Main Region' => 'region',
- 'Parent Landmark' => 'location',
- 'Kinks' => 'kink',
- 'Warning Description' => 'warning',
- 'Warning URL' => 'w_url',
- 'Warning Rating' => 'w_rating',
- 'History' => 'history',
- 'Folklore' => 'folk_lore',
- 'Layout URL' => 'layout_url'
- }
- hash = {
- 'name' => nil,
- 'description' => nil,
- 'category' => nil,
- 'url' => nil,
- 'location' => nil,
- 'region' => nil,
- 'warning' => nil,
- 'w_url' => nil,
- 'kink' => nil,
- 'layout_url' => nil,
- 'user_id' => nil,
- 'w_rating' => nil,
- 'history' => nil,
- 'folk_lore' => nil,
- 'edit_url' => nil
- }
- user_id = UID.match(app.description)
- hash['user_id'] = case app.description
- when /server/i
- 'Server'
- else
- user_id[1]
- end
- hash['name'] = app.title
- hash['edit_url'] = app.footer.text
- hash['url'] = app.image&.url
- app.fields.each do |field|
- next if field.nil?
- db_column = key_mapping[field.name]
- if db_column == 'region'
- r = Region.find_by(name: field.value)
- hash[db_column] = r.id
- elsif db_column == 'location'
- lm = Landmark.find_by(name: field.value)
- hash[db_column] = lm.id
- elsif db_column == 'kink'
- hash[db_column] = field.value.split(/,\s?/)
- else
- hash[db_column] = field.value
- end
- end
- hash = hash.reject { |k, _v| k.nil? }
- hash
- end
- end
|