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_registrants_cancelled? ⇒ Boolean
- #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
71 72 73 |
# File 'app/models/effective/order_email.rb', line 71 def event order.purchasables.find { |purchasable| purchasable.class.name == "Effective::EventRegistrant" }.try(:event) end |
#event_addons ⇒ Object
83 84 85 |
# File 'app/models/effective/order_email.rb', line 83 def event_addons order.purchasables.select { |purchasable| purchasable.class.name == "Effective::EventAddon" } end |
#event_all_waitlisted? ⇒ Boolean
99 100 101 102 |
# File 'app/models/effective/order_email.rb', line 99 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
104 105 106 107 |
# File 'app/models/effective/order_email.rb', line 104 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
87 88 89 90 |
# File 'app/models/effective/order_email.rb', line 87 def event_none_waitlisted? return false unless event_registrants.present? event_registrants.none? { |er| er.waitlisted_not_promoted? } end |
#event_registrants ⇒ Object
79 80 81 |
# File 'app/models/effective/order_email.rb', line 79 def event_registrants order.purchasables.select { |purchasable| purchasable.class.name == "Effective::EventRegistrant" } end |
#event_registrants_cancelled? ⇒ Boolean
109 110 111 |
# File 'app/models/effective/order_email.rb', line 109 def event_registrants_cancelled? opts[:event_registrants_cancelled] == true end |
#event_registration ⇒ Object
75 76 77 |
# File 'app/models/effective/order_email.rb', line 75 def event_registration order.purchasables.find { |purchasable| purchasable.class.name == "Effective::EventRegistrant" }.try(:event_registration) end |
#event_some_waitlisted? ⇒ Boolean
92 93 94 95 96 97 |
# File 'app/models/effective/order_email.rb', line 92 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 43 |
# File 'app/models/effective/order_email.rb', line 28 def header if event.present? && order.purchased_or_deferred? return "Your tickets have been cancelled" if event_registrants_cancelled? 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
67 68 69 |
# File 'app/models/effective/order_email.rb', line 67 def payment_request? opts[:payment_request] == true end |
#subject ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/models/effective/order_email.rb', line 45 def subject if event.present? && order.purchased_or_deferred? return "Tickets cancelled - #{event}" if event_registrants_cancelled? 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 |