Class: GoogleReserve

Inherits:
ApplicationRecord show all
Defined in:
app/models/google_reserve.rb

Overview

Schema Information

Table name: google_reserves

id                  :bigint           not null, primary key
address             :string(191)
agreement_status    :integer          default("active")
city                :string(191)
country_code        :string(191)
e2e                 :boolean          default(FALSE)
name                :string(191)
postal_code         :string(191)
select_top3_package :boolean          default(TRUE)
state_code          :string(191)
created_at          :datetime         not null
updated_at          :datetime         not null
restaurant_id       :bigint

Indexes

index_google_reserves_on_agreement_status  (agreement_status)
index_google_reserves_on_restaurant_id     (restaurant_id) UNIQUE

Instance Method Summary collapse

Methods inherited from ApplicationRecord

sync_carrierwave_url

Instance Method Details

#can_create_packages?Boolean

Returns:

  • (Boolean)


79
80
81
82
83
84
85
# File 'app/models/google_reserve.rb', line 79

def can_create_packages?
  return false unless can_enable_e2e?
  return false unless e2e?
  return false unless select_top3_package?

  true
end

#can_enable_e2e?Boolean

Returns:

  • (Boolean)


71
72
73
74
75
76
77
# File 'app/models/google_reserve.rb', line 71

def can_enable_e2e?
  return false unless agreement_status == 'active'
  return false unless restaurant.active?
  return false if restaurant.expiry_date.present? && restaurant.expiry_date < Date.current

  true
end

#cleanup_packages_if_e2e_disabledObject



50
51
52
53
54
# File 'app/models/google_reserve.rb', line 50

def cleanup_packages_if_e2e_disabled
  return unless saved_change_to_e2e? && !e2e

  google_reserve_packages.delete_all
end

#create_google_packages!Object



87
88
89
90
91
# File 'app/models/google_reserve.rb', line 87

def create_google_packages!
  return unless can_create_packages?

  ScheduleWorkers::GoogleReserve::MonthlyTop3RestaurantPackage.perform_async(restaurant_id)
end

#create_google_packages_if_e2e_enabledObject



44
45
46
47
48
# File 'app/models/google_reserve.rb', line 44

def create_google_packages_if_e2e_enabled
  return unless saved_change_to_e2e? && e2e

  create_google_packages!
end

#delete_all_packages!Object



93
94
95
# File 'app/models/google_reserve.rb', line 93

def delete_all_packages!
  GoogleReservePackage.where(restaurant_id: restaurant_id).delete_all
end

#disable_e2e!Object



56
57
58
59
60
61
# File 'app/models/google_reserve.rb', line 56

def disable_e2e!
  return unless e2e

  update_column(:e2e, false)
  delete_all_packages!
end

#disable_e2e_if_opted_outObject



38
39
40
41
42
# File 'app/models/google_reserve.rb', line 38

def disable_e2e_if_opted_out
  return unless saved_change_to_agreement_status? && agreement_status == 'opted_out'

  disable_e2e!
end

#enable_e2e!Object



63
64
65
66
67
68
69
# File 'app/models/google_reserve.rb', line 63

def enable_e2e!
  return if e2e
  return unless can_enable_e2e?

  update_column(:e2e, true)
  create_google_packages!
end