module Bookable
Constants
- VERSION
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/bookable/generators/bookable/templates/models/bookable.rb, line 86 def as_json(options = {}) { :id => self.id, :start => self.start_time, :end => self.end_time + 60, :recurring => false, :allDay => false } end
overlaps()
click to toggle source
# File lib/bookable/generators/bookable/templates/models/bookable.rb, line 56 def overlaps overlapping_bookings = [ <%=resource_name_underscore.singularize%>.bookings.end_during(start_time, end_time), <%=resource_name_underscore.singularize%>.bookings.start_during(start_time, end_time), <%=resource_name_underscore.singularize%>.bookings.happening_during(start_time, end_time), <%=resource_name_underscore.singularize%>.bookings.enveloping(start_time, end_time), <%=resource_name_underscore.singularize%>.bookings.identical(start_time, end_time) ].flatten overlapping_bookings.delete self if overlapping_bookings.any? errors.add(:base, 'Slot has already been booked') end end def start_date_cannot_be_in_the_past if start_time && start_time < DateTime.now + (15.minutes) errors.add(:start_time, 'must be at least 15 minutes from present time') end end def calculate_end_time start_time = validate_start_time length = validate_length if start_time && length self.end_time = start_time + (length.hours - 60) end end
Private Instance Methods
validate_length()
click to toggle source
# File lib/bookable/generators/bookable/templates/models/bookable.rb, line 106 def validate_length if !self.length.nil? length = self.length.to_i else return nil end end
validate_start_time()
click to toggle source
# File lib/bookable/generators/bookable/templates/models/bookable.rb, line 98 def validate_start_time if !self.start_time.nil? start_time = self.start_time else return nil end end