forked from spen/seminar
77 lines
2.5 KiB
Ruby
77 lines
2.5 KiB
Ruby
# encoding: utf-8
|
|
class SeminarSignup
|
|
|
|
include Mongoid::Document
|
|
include Mongoid::Timestamps
|
|
|
|
field :sort_number , type: Integer, default: 10000
|
|
|
|
field :status
|
|
field :name # become Last Name for TICC
|
|
field :tel, type: String # become First Name for TICC
|
|
field :unit, localize: true
|
|
field :phone, type: String
|
|
field :fax, type: String
|
|
field :email, type: String
|
|
field :address, localize: true
|
|
field :password
|
|
field :note, localize: true
|
|
field :serial_number
|
|
field :final_session #only store old data , not used
|
|
field :final_sessions
|
|
field :preferred_sessions, type: Array, default: []
|
|
belongs_to :seminar_main
|
|
field :seminar_session_id #only store old data , not used
|
|
field :seminar_session_ids, type: Array, default: []
|
|
has_many :seminar_signup_values, :autosave => true, :dependent => :destroy
|
|
has_many :seminar_signup_contributes, :autosave => true, :dependent => :destroy
|
|
|
|
accepts_nested_attributes_for :seminar_signup_values, allow_destroy: true
|
|
accepts_nested_attributes_for :seminar_signup_contributes, allow_destroy: true
|
|
scope :sort_ordered, ->{ order_by(:sort_number=>1,:created_at=>1) }
|
|
|
|
before_create do
|
|
unit = self.unit_translations.values.select{|v| v.present?}.first
|
|
self.unit_translations = I18n.available_locales.map{|l| [l.to_s,unit]}.to_h
|
|
if self.serial_number.nil?
|
|
s = SeminarMain.find(self.seminar_main)
|
|
s.last_serial_number += 1
|
|
self.serial_number = s.last_serial_number
|
|
s.save(:validate=>false)
|
|
end
|
|
end
|
|
after_destroy do
|
|
seminar_main = self.seminar_main
|
|
if seminar_main.present?
|
|
seminar_reviews = seminar_main.seminar_reviews
|
|
id = self.id.to_s
|
|
seminar_reviews.each do |sr|
|
|
if sr.all_seminar_signup_ids.include?(id)
|
|
sr.seminar_signup_ids.delete(id)
|
|
sr.remove_seminar_signup_ids.delete(id)
|
|
sr.default_seminar_signup_ids.delete(id)
|
|
sr.save
|
|
end
|
|
end
|
|
if seminar_main.unassigned_seminar_signup_ids.delete(id)
|
|
seminar_main.save
|
|
end
|
|
end
|
|
seminar_session = SeminarSession.where(:id=>self.seminar_session_id).first
|
|
if seminar_session
|
|
seminar_session.seminar_signup_ids.delete(self.id.to_s)
|
|
seminar_session.save
|
|
end
|
|
end
|
|
def display_serial_number
|
|
display_format_string(self.serial_number,4)
|
|
end
|
|
def display_format_string(num, str_length)
|
|
return format("%0#{str_length}d", num)
|
|
end
|
|
def set_preferred_sessions
|
|
self.preferred_sessions = self.seminar_signup_contributes.pluck(:preferred_session)
|
|
self.save
|
|
end
|
|
end
|