55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
|
# encoding: utf-8
|
||
|
|
||
|
class Survey
|
||
|
|
||
|
include Mongoid::Document
|
||
|
include Mongoid::Timestamps
|
||
|
|
||
|
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
|
||
|
scope :can_display, where(is_hidden: false)
|
||
|
|
||
|
field :title, :localize => true
|
||
|
field :description, :localize => true
|
||
|
|
||
|
field :create_user_id
|
||
|
field :update_user_id
|
||
|
|
||
|
field :postdate, :type => DateTime
|
||
|
field :deadline, :type => DateTime
|
||
|
|
||
|
field :is_hidden, :type => Boolean, :default => false
|
||
|
|
||
|
validates :title, :at_least_one => true
|
||
|
|
||
|
has_many :survey_questions, :autosave => true, :dependent => :destroy
|
||
|
has_many :survey_answers, :dependent => :destroy
|
||
|
|
||
|
accepts_nested_attributes_for :survey_questions, :allow_destroy => true
|
||
|
|
||
|
before_save :check_deadline, :update_avliable_language
|
||
|
|
||
|
def time_range
|
||
|
r = "#{self.postdate.to_date}"
|
||
|
r += "- #{self.deadline.to_date}" if self.deadline
|
||
|
r
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
|
||
|
def check_deadline
|
||
|
if(!self.deadline.nil? and (self.deadline < self.postdate ))
|
||
|
self.deadline = nil
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def update_avliable_language
|
||
|
VALID_LOCALES.each do |locale|
|
||
|
if (title_translations[locale].blank? rescue true)
|
||
|
self["available_for_#{locale}".to_sym] = false
|
||
|
else
|
||
|
self["available_for_#{locale}".to_sym] = true
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|