ask/app/models/ask_question.rb

80 lines
2.6 KiB
Ruby
Raw Normal View History

2014-10-02 06:00:35 +00:00
class AskQuestion
include Mongoid::Document
include Mongoid::Timestamps
2014-10-23 07:03:21 +00:00
# include ActiveModel::Validations
2014-10-02 06:00:35 +00:00
include OrbitCategory::Categorizable
# include OrbitTag::Taggable
2014-10-02 06:00:35 +00:00
2024-09-03 15:51:23 +00:00
# 欄位定義
2022-08-18 03:07:45 +00:00
field :serial_number, type: Integer
field :ip, type: String
2014-10-02 06:00:35 +00:00
field :name, type: String
field :identity, type: String
field :mail, type: String
field :phone, type: String
field :fax, type: String
field :title, type: String
field :content, type: String
2024-09-03 15:51:23 +00:00
field :appointment, type: DateTime
2016-11-07 02:08:04 +00:00
field :sex
2014-10-02 06:00:35 +00:00
field :reply, type: String
field :comment, type: String
field :send_email, type: Boolean, default: false
field :situation, type: String, default: "is_email_not_confirmed" # 預設email未驗證
2014-10-02 06:00:35 +00:00
field :email_id
field :verify_email_id
field :custom_values, type: Hash, default: {}
field :agree_show, type: Boolean, default: false
field :agree_usage, type: Boolean, default: false
field :review_time, type: DateTime
2024-09-03 15:51:23 +00:00
belongs_to :reviewer, class_name: "MemberProfile", foreign_key: :reviewer_id
2022-08-18 03:07:45 +00:00
before_create do
last_serial_number = AskSetting.update_last_serial_number
self.serial_number = last_serial_number
end
2014-10-02 06:00:35 +00:00
def email
mail = Email.where(:id=>self.email_id).first
end
def verify_email
verify_email = Email.where(:id=>self.verify_email_id).first
2014-10-02 06:00:35 +00:00
end
2024-09-03 15:51:23 +00:00
def reviewer_emails
2024-09-03 15:51:23 +00:00
email_address = AskAdmin.or(:category_ids.in => [self.category_id, [], nil]).pluck(:email).select { |s| s.present? }.uniq rescue []
authorizes = Authorization.where(module_app_id: ModuleApp.where(key: 'ask').first.id).to_a rescue []
authorizes.each do |a|
if a.category_id
next if a.category_id != self.category_id
end
if a.user_id
u = a.user
email_address << u.email if u && u.email
elsif a.role_id
2024-09-03 15:51:23 +00:00
email_address = email_address + MemberProfile.where(role_ids: a.role_id).pluck(:email).select { |s| s.present? }.uniq
else
a.destroy
end
end
2022-10-17 09:18:34 +00:00
email_address = email_address.flatten
email_address.uniq
2022-08-18 03:07:45 +00:00
end
2024-09-03 15:51:23 +00:00
2022-08-18 03:07:45 +00:00
def get_serial_number(last_serial_number=nil, display_length=nil)
if display_length.nil? && last_serial_number.nil?
can_update_shared_hash = (defined?(OrbitHelper::SharedHash) && OrbitHelper::SharedHash)
last_serial_number = (can_update_shared_hash ? OrbitHelper::SharedHash["ask"][:last_serial_number] : AskSetting.pluck(:last_serial_number)[0].to_i)
end
display_length = [last_serial_number.to_s.length + 1, 4].max if display_length.nil?
display_format_string(self.serial_number, display_length)
end
2024-09-03 15:51:23 +00:00
2022-08-18 03:07:45 +00:00
def display_format_string(num, str_length)
2024-09-03 15:51:23 +00:00
format("%0#{str_length}d", num)
end
2014-10-02 06:00:35 +00:00
end
end