2016-09-24 03:00:46 +00:00
|
|
|
# frozen_string_literal: true
|
2017-11-25 19:23:47 +00:00
|
|
|
|
2016-09-21 17:22:40 +00:00
|
|
|
class Event < ApplicationRecord
|
2018-01-20 22:10:26 +00:00
|
|
|
KINDS = %w[user_present_on_map user_not_present_on_map
|
2017-01-25 23:32:13 +00:00
|
|
|
conversation_started_on_map
|
2017-01-24 00:30:13 +00:00
|
|
|
topic_added_to_map topic_moved_on_map topic_removed_from_map
|
|
|
|
synapse_added_to_map synapse_removed_from_map
|
2018-01-20 22:10:26 +00:00
|
|
|
topic_updated synapse_updated].freeze
|
2016-03-12 23:36:38 +00:00
|
|
|
|
|
|
|
belongs_to :eventable, polymorphic: true
|
|
|
|
belongs_to :map
|
|
|
|
belongs_to :user
|
|
|
|
|
2018-01-21 22:21:00 +00:00
|
|
|
scope :chronologically, (-> { order('created_at asc') })
|
2016-03-12 23:36:38 +00:00
|
|
|
|
|
|
|
after_create :notify_webhooks!, if: :map
|
|
|
|
|
2016-07-26 00:14:23 +00:00
|
|
|
validates :kind, inclusion: { in: KINDS }
|
|
|
|
validates :eventable, presence: true
|
2016-03-12 23:36:38 +00:00
|
|
|
|
|
|
|
def belongs_to?(this_user)
|
2016-07-26 00:14:23 +00:00
|
|
|
user_id == this_user.id
|
2016-03-12 23:36:38 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def notify_webhooks!
|
2016-07-26 00:14:23 +00:00
|
|
|
map.webhooks.each { |webhook| WebhookService.publish! webhook: webhook, event: self }
|
2016-03-12 23:36:38 +00:00
|
|
|
end
|
|
|
|
handle_asynchronously :notify_webhooks!
|
|
|
|
end
|