Select Git revision
event.rb 2.14 KiB
require 'active_record'
class Event < ActiveRecord::Base
has_many :event_signups, :dependent => :destroy
has_one :reservation, :dependent => :destroy
belongs_to :location
belongs_to :event_type
belongs_to :service_space
alias_method :type, :event_type
alias_method :signups, :event_signups
scope :in_day, ->(time) {
today = time.in_time_zone.midnight
tomorrow = (time.in_time_zone.midnight + 1.day + 1.hour).in_time_zone.midnight
where('(start_time >= ? AND start_time < ?) OR (end_time >= ? AND end_time < ?)', today.getutc, tomorrow.getutc, today.getutc, tomorrow.getutc)
}
scope :in_week, ->(time) {
last_sunday = time.in_time_zone.week_start
next_sunday = (time.in_time_zone.week_start + 1.week + 1.hour).in_time_zone.week_start
where('(start_time >= ? AND start_time < ?) OR (end_time >= ? AND end_time < ?)', last_sunday.getutc, next_sunday.getutc, last_sunday.getutc, next_sunday.getutc)
}
# returns length in minutes. If start or end is nil, returns 0
def length
if end_time.nil? || start_time.nil?
return 0
end
((end_time - start_time) / 60).to_i
end
def info_link
"/#{service_space.url_name}/events/#{id}/"
end
def edit_link
"/#{service_space.url_name}/admin/events/#{id}/edit/"
end
def has_reservation
!self.reservation.nil?
end
def image_src
"/images/#{id}/"
end
def set_data(params)
self.title = params[:title]
self.description = params[:description]
self.start_time = calculate_time(params[:start_date], params[:start_time_hour], params[:start_time_minute], params[:start_time_am_pm])
self.end_time = calculate_time(params[:end_date], params[:end_time_hour], params[:end_time_minute], params[:end_time_am_pm])
self.event_type_id = params[:type]
self.location_id = params[:location]
self.max_signups = params[:limit_signups] == 'on' ? params[:max_signups].to_i : nil
self.save
end
def set_image_data(params)
if params[:imagedata]
self.imagemime = params[:imagedata][:type]
self.imagedata = params[:imagedata][:tempfile].read if params[:imagedata][:tempfile].is_a?(Tempfile)
end
self.save
end
def remove_image_data
self.imagemime = nil
self.imagedata = nil
self.save
end
end