Class: Workers::Reservations::CustomCorporateEventWorker

Inherits:
ApplicationWorker show all
Defined in:
app/workers/workers/reservations/custom_corporate_event_worker.rb

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#perform(corporate_event_id) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/workers/workers/reservations/custom_corporate_event_worker.rb', line 5

def perform(corporate_event_id)
  corporate_event = Corporates::Event.find(corporate_event_id)
  reservations = corporate_event.reservations
  reservations.each do |reservation|
    package = reservation.package
    reservation.build_property.save! if reservation.property.nil?
    if package.blank? || package[:package_data].blank?
      data_package = {}
      custom_package_data = [{
        custom_commision_percent: corporate_event.custom_commision_percent,
        use_custom_commision: corporate_event.use_custom_commision
      }]
    else
      package_data = package[:package_data].map do |p|
        custom_commision_percent = corporate_event.use_custom_commision? ? corporate_event.custom_commision_percent : p[:commision]
        {
          id: p[:id],
          type: p[:type],
          price_cents: package[:price_cents],
          price_currency: p[:price_currency],
          commision: custom_commision_percent,
          quantity: p[:quantity],
          restaurant_package_id: p[:restaurant_package_id],
          pricing_type: p[:pricing_type]
        }
      end

      data_package = if package[:price_cents].blank?
                       {
                         package_type: package[:package_type],
                         package_data: package_data
                       }
                     else
                       {
                         package_type: package[:package_type],
                         package_data: package_data,
                         price_cents: package[:price_cents],
                         price_currency: package[:price_currency],
                         revenue: package[:revenue]
                       }
                     end

      custom_package_data = []
      package[:package_data].map do |p|
        data = {
          id: p[:restaurant_package_id],
          type: p[:type],
          quantity: p[:quantity],
          price_cents: p[:price_cents],
          price_currency: p[:price_currency],
          custom_commision_percent: corporate_event.custom_commision_percent,
          use_custom_commision: corporate_event.use_custom_commision
        }
        custom_package_data << data
      end
    end
    reservation.property.update!(package: data_package.merge!(custom_package_data: custom_package_data))
  end
end