-
Notifications
You must be signed in to change notification settings - Fork 0
/
event.rb
40 lines (32 loc) · 1.92 KB
/
event.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# frozen_string_literal: true
class Tramway::Event::Event < ::Tramway::Event::ApplicationRecord
mount_uploader :photo, PhotoUploader
validate :check_dimensions
def check_dimensions
if photo.present?
errors.add :photo, :too_small_image if photo.width < 1920 || photo.height < 1080
errors.add :photo, :image_aspect_ratio if photo.height / photo.width == 16 / 9
end
end
has_many :participants, class_name: 'Tramway::Event::Participant'
has_many :participant_form_fields, class_name: 'Tramway::Event::ParticipantFormField'
has_many :sections, class_name: 'Tramway::Event::Section'
has_many :partakings, as: :part, class_name: 'Tramway::Event::Partaking'
has_many :partnerships, class_name: 'Tramway::Partner::Partnership', as: :partner
has_many :organizations, as: :partners, through: :partnerships, class_name: 'Tramway::Partner::Organization'
has_many :actions, -> { order(id: :asc) }, class_name: 'Tramway::Event::Action'
has_and_belongs_to_many :places
enumerize :reach, default: :open, in: %i[open closed]
scope :actual, -> { order(:begin_date).where('end_date > ?', DateTime.now) }
scope :past, -> { where 'end_date < ?', DateTime.now }
scope :open, -> { where reach: :open }
scope :closed, -> { where reach: :closed }
def request_collecting_state
return :not_initialized unless request_collecting_begin_date.present? || request_collecting_end_date.present?
return :will_begin_soon if request_collecting_begin_date > DateTime.now
return :is_over if request_collecting_end_date.present? && request_collecting_end_date.to_date < Date.today
return :are_being_right_now if request_collecting_begin_date&.past? && (request_collecting_end_date&.future? || request_collecting_end_date&.today?)
return :are_being_right_now if request_collecting_begin_date < DateTime.now && !request_collecting_end_date.present?
end
include ::Tramway::Partner::Scopes if defined? ::Tramway::Partner
end