module Webhooks::Outgoing::EventSupport

def deliver

def deliver
  endpoints.each do |endpoint|
    unless endpoint.deliveries.where(event: self).any?
      endpoint.deliveries.create(event: self, endpoint_url: endpoint.url).deliver_async
    end
  end
end

def endpoints

def endpoints
  endpoints = send(BulletTrain::OutgoingWebhooks.parent_association).webhooks_outgoing_endpoints.where(api_version: api_version).listening_for_event_type_id(event_type_id)
  case subject_type
  when "Scaffolding::AbsolutelyAbstract::CreativeConcept"
    endpoints.where(scaffolding_absolutely_abstract_creative_concept_id: [subject.id, nil])
  when "Scaffolding::CompletelyConcrete::TangibleThing"
    endpoints.where(scaffolding_absolutely_abstract_creative_concept_id: [subject.absolutely_abstract_creative_concept_id, nil])
  else
    endpoints
  end
end

def event_type_name

def event_type_name
  payload.dig("event_type")
end

def generate_payload

def generate_payload
  {
    event_id: uuid,
    event_type: event_type_id,
    subject_id: subject_id,
    subject_type: subject_type,
    data: data
  }
end

def label_string

def label_string
  short_uuid
end