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