Class: ReservationPolicy
- Inherits:
-
ApplicationPolicy
- Object
- ApplicationPolicy
- ReservationPolicy
- Defined in:
- app/policies/reservation_policy.rb
Defined Under Namespace
Classes: Scope
Instance Attribute Summary
Attributes inherited from ApplicationPolicy
Instance Method Summary collapse
- #be_reminded? ⇒ Boolean
- #can_give_review? ⇒ Boolean
- #cancel? ⇒ Boolean
- #create? ⇒ Boolean
- #destroy? ⇒ Boolean
- #edit? ⇒ Boolean
- #editable? ⇒ Boolean
- #index? ⇒ Boolean
-
#initialize(user, object) ⇒ ReservationPolicy
constructor
A new instance of ReservationPolicy.
-
#mark_arrived?(by_owner: false) ⇒ Boolean
Owner could mark a reservation even if the reservation already marked as no show.
-
#mark_no_show?(by_owner: false) ⇒ Boolean
Owner could mark reservation as No Show even already marked as Arrived.
- #new? ⇒ Boolean
- #owner_has_sent_custom_sms? ⇒ Boolean
- #show? ⇒ Boolean
- #update? ⇒ Boolean
-
#valid_user? ⇒ Boolean
if user is present, then owner can give review to reservation's user.
Methods inherited from ApplicationPolicy
Constructor Details
#initialize(user, object) ⇒ ReservationPolicy
Returns a new instance of ReservationPolicy.
8 9 10 11 |
# File 'app/policies/reservation_policy.rb', line 8 def initialize(user, object) super(user, object) self.object = ReservationDecorator.new object end |
Instance Method Details
#be_reminded? ⇒ Boolean
89 90 91 92 93 94 95 |
# File 'app/policies/reservation_policy.rb', line 89 def be_reminded? if owner_scope? && now < object.reservation_time && object.active? && !object.no_show? && !object.arrived? && !object.delivery? !BookingReminder::ManualQueue.new(object.id).has_reminded? else false end end |
#can_give_review? ⇒ Boolean
29 30 31 32 |
# File 'app/policies/reservation_policy.rb', line 29 def can_give_review? show? && object.active? && !object.no_show? && object.owner_review.blank? && now > object.reservation_time && now < (object.reservation_time + 30.days) end |
#cancel? ⇒ Boolean
54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/policies/reservation_policy.rb', line 54 def cancel? return false unless object return false unless my_reservation? reservation_time = if owner_scope? object.reservation_time + 30.minutes else object.reservation_time end now <= reservation_time end |
#create? ⇒ Boolean
34 35 36 |
# File 'app/policies/reservation_policy.rb', line 34 def create? true end |
#destroy? ⇒ Boolean
50 51 52 |
# File 'app/policies/reservation_policy.rb', line 50 def destroy? false end |
#edit? ⇒ Boolean
46 47 48 |
# File 'app/policies/reservation_policy.rb', line 46 def edit? update? end |
#editable? ⇒ Boolean
66 67 68 |
# File 'app/policies/reservation_policy.rb', line 66 def editable? now <= object.reservation_time.twenty_four_hours_later && object.adjusted? == false && !cancelled_by_user? end |
#index? ⇒ Boolean
13 14 15 16 17 |
# File 'app/policies/reservation_policy.rb', line 13 def index? # user.kinda_like_owner? # TODO fix this true end |
#mark_arrived?(by_owner: false) ⇒ Boolean
Owner could mark a reservation even if the reservation already marked as no show
72 73 74 75 76 77 78 |
# File 'app/policies/reservation_policy.rb', line 72 def mark_arrived?(by_owner: false) if by_owner editable? && !object.arrived? else editable? && !object.status_arrived? end end |
#mark_no_show?(by_owner: false) ⇒ Boolean
Owner could mark reservation as No Show even already marked as Arrived
81 82 83 84 85 86 87 |
# File 'app/policies/reservation_policy.rb', line 81 def mark_no_show?(by_owner: false) if by_owner editable? && !object.no_show else editable? && !object.status_no_show? end end |
#new? ⇒ Boolean
38 39 40 |
# File 'app/policies/reservation_policy.rb', line 38 def new? create? end |
#owner_has_sent_custom_sms? ⇒ Boolean
97 98 99 100 101 102 103 104 105 |
# File 'app/policies/reservation_policy.rb', line 97 def owner_has_sent_custom_sms? return true unless owner_scope? if object.been_passed? true else object.property.try :been_sent_custom_sms_by_owner? end end |
#show? ⇒ Boolean
24 25 26 27 |
# File 'app/policies/reservation_policy.rb', line 24 def show? (user && user.kinda_like_owner? && user.restaurant_ids.include?(object.restaurant_id)) || (user && user.user? && (object.user_id == user.id)) end |
#update? ⇒ Boolean
42 43 44 |
# File 'app/policies/reservation_policy.rb', line 42 def update? show? && editable? end |
#valid_user? ⇒ Boolean
if user is present, then owner can give review to reservation's user
20 21 22 |
# File 'app/policies/reservation_policy.rb', line 20 def valid_user? object.user_id.present? end |