Class: Effective::OrderEmail
- Inherits:
-
Object
- Object
- Effective::OrderEmail
- Defined in:
- app/models/effective/order_email.rb
Instance Attribute Summary collapse
-
#opts ⇒ Object
Returns the value of attribute opts.
-
#order ⇒ Object
Returns the value of attribute order.
Instance Method Summary collapse
- #cc ⇒ Object
- #event ⇒ Object
- #event_addons ⇒ Object
- #event_all_waitlisted? ⇒ Boolean
- #event_all_waitlisted_or_archived? ⇒ Boolean
- #event_none_waitlisted? ⇒ Boolean
- #event_registrants ⇒ Object
- #event_registration ⇒ Object
- #event_some_waitlisted? ⇒ Boolean
-
#header ⇒ Object
The very first line of the email body.
-
#initialize(order, opts = {}) ⇒ OrderEmail
constructor
A new instance of OrderEmail.
- #payment_request? ⇒ Boolean
- #subject ⇒ Object
-
#to ⇒ Object
Just to the purchaser.
Constructor Details
#initialize(order, opts = {}) ⇒ OrderEmail
Returns a new instance of OrderEmail.
9 10 11 12 13 14 15 |
# File 'app/models/effective/order_email.rb', line 9 def initialize(order, opts = {}) raise('expected an Effective::Order') unless order.kind_of?(Effective::Order) raise('expected a Hash of options') unless opts.kind_of?(Hash) @order = order @opts = opts end |
Instance Attribute Details
#opts ⇒ Object
Returns the value of attribute opts.
7 8 9 |
# File 'app/models/effective/order_email.rb', line 7 def opts @opts end |
#order ⇒ Object
Returns the value of attribute order.
6 7 8 |
# File 'app/models/effective/order_email.rb', line 6 def order @order end |
Instance Method Details
#cc ⇒ Object
23 24 25 |
# File 'app/models/effective/order_email.rb', line 23 def cc order.cc.presence end |
#event ⇒ Object
69 70 71 |
# File 'app/models/effective/order_email.rb', line 69 def event order.purchasables.find { |purchasable| purchasable.class.name == "Effective::EventRegistrant" }.try(:event) end |
#event_addons ⇒ Object
81 82 83 |
# File 'app/models/effective/order_email.rb', line 81 def event_addons order.purchasables.select { |purchasable| purchasable.class.name == "Effective::EventAddon" } end |
#event_all_waitlisted? ⇒ Boolean
97 98 99 100 |
# File 'app/models/effective/order_email.rb', line 97 def event_all_waitlisted? return false unless event_registrants.present? event_registrants.all? { |er| er.waitlisted_not_promoted? } end |
#event_all_waitlisted_or_archived? ⇒ Boolean
102 103 104 105 |
# File 'app/models/effective/order_email.rb', line 102 def event_all_waitlisted_or_archived? return false unless event_registrants.present? event_registrants.all? { |er| er.waitlisted_not_promoted? || er.archived? } end |
#event_none_waitlisted? ⇒ Boolean
85 86 87 88 |
# File 'app/models/effective/order_email.rb', line 85 def event_none_waitlisted? return false unless event_registrants.present? event_registrants.none? { |er| er.waitlisted_not_promoted? } end |
#event_registrants ⇒ Object
77 78 79 |
# File 'app/models/effective/order_email.rb', line 77 def event_registrants order.purchasables.select { |purchasable| purchasable.class.name == "Effective::EventRegistrant" } end |
#event_registration ⇒ Object
73 74 75 |
# File 'app/models/effective/order_email.rb', line 73 def event_registration order.purchasables.find { |purchasable| purchasable.class.name == "Effective::EventRegistrant" }.try(:event_registration) end |
#event_some_waitlisted? ⇒ Boolean
90 91 92 93 94 95 |
# File 'app/models/effective/order_email.rb', line 90 def event_some_waitlisted? return false unless event_registrants.present? event_registrants.find { |er| er.waitlisted_not_promoted? }.present? && event_registrants.find { |er| !er.waitlisted_not_promoted? }.present? end |
#header ⇒ Object
The very first line of the email body
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/models/effective/order_email.rb', line 28 def header if event.present? && order.purchased_or_deferred? return "Your tickets have been confirmed!" if event_none_waitlisted? return "Some of your tickets have been confirmed, but some are on the waitlist" if event_some_waitlisted? return "Your tickets are on the waitlist!" if event_all_waitlisted? end return "Request for payment" if payment_request? return "Order waiting on payment" if order.deferred? return "Your order has been purchased!" if order.purchased? return "Your order was declined by the payment processor" if order.declined? # Fallback "Order: ##{order.to_param}" end |
#payment_request? ⇒ Boolean
65 66 67 |
# File 'app/models/effective/order_email.rb', line 65 def payment_request? opts[:payment_request] == true end |
#subject ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/models/effective/order_email.rb', line 44 def subject if event.present? && order.purchased_or_deferred? return "Receipt - Order ##{order.to_param}" if order.purchased? && order.delayed_payment_date_past? return "Confirmation - #{event}" if event_none_waitlisted? return "Confirmation & Waitlist - #{event}" if event_some_waitlisted? return "Waitlist - #{event}" if event_all_waitlisted? end if event.present? && order.declined? return "Declined payment - #{event} - Order ##{order.to_param}" if order.declined? end return "Payment request - Order ##{order.to_param}" if payment_request? return "Waiting on payment - Order ##{order.to_param}" if order.deferred? return "Declined payment - Order ##{order.to_param}" if order.declined? return "Receipt - Order ##{order.to_param}" if order.purchased? # Fallback "Order ##{order.to_param}" end |
#to ⇒ Object
Just to the purchaser. Not everyone.
18 19 20 21 |
# File 'app/models/effective/order_email.rb', line 18 def to return order.emails if payment_request? order.emails.first end |