# frozen_string_literal: true # License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later # Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE class TicketPurchase < ApplicationRecord include Model::TrxAssignable setup_houid :tktpur before_create :set_original_discount belongs_to :event_discount belongs_to :event has_many :ticket_to_legacy_tickets validates :event, presence: true def to_id ::Jbuilder.new do |json| json.id id json.object 'ticket_purchase' json.type 'trx_assignment' end end def to_builder(*expand) init_builder(*expand) do |json| json.type 'trx_assignment' json.original_discount do json.percent original_discount end if original_discount json.amount do json.cents amount json.currency nonprofit.currency end json.add_builder_expansion :event, :event_discount, :nonprofit, :supporter json.add_builder_expansion :ticket_to_legacy_tickets, enum_type: :expandable, json_attribute: 'tickets' json.add_builder_expansion :trx, json_attribute: :transaction # if expand.include? :tickets # json.tickets ticket_to_legacy_tickets do |i| # i.to_builder.attributes! # end # else # json.tickets ticket_to_legacy_tickets.pluck(:id) # end end end def publish_created Houdini.event_publisher.announce(:ticket_purchase_created, to_event('ticket_purchase.created', :event, :nonprofit, :supporter, :trx, :event_discount, :ticket_to_legacy_tickets).attributes!) Houdini.event_publisher.announce(:trx_assignment_created, to_event('trx_assignment.created', :event, :nonprofit, :supporter, :trx, :event_discount, :ticket_to_legacy_tickets).attributes!) end private def set_original_discount original_discount = event_discount.nil? ? 0 : event_discount.percent end end