59 lines
2.3 KiB
Ruby
59 lines
2.3 KiB
Ruby
class JournalMessage < ActiveRecord::Base
|
|
unloadable
|
|
belongs_to :contact
|
|
belongs_to :journal
|
|
has_one :message_file, :class_name => "Attachment", :as => :container, :dependent => :destroy
|
|
|
|
attr_accessible :source, :from_address, :to_address, :bcc_address, :cc_address, :message_id, :is_incoming, :message_date, :contact, :journal
|
|
|
|
acts_as_attachable :view_permission => :view_issues,
|
|
:delete_permission => :edit_issues
|
|
|
|
if ActiveRecord::VERSION::MAJOR >= 4
|
|
acts_as_activity_provider :type => 'helpdesk_tickets',
|
|
:permission => :view_helpdesk_tickets,
|
|
:timestamp => "#{table_name}.message_date",
|
|
:author_key => "#{Journal.table_name}.user_id",
|
|
:scope => eager_load({:journal => [{:issue => [:project, :tracker]}, :details, :user]}, :contact)
|
|
else
|
|
acts_as_activity_provider :type => 'helpdesk_tickets',
|
|
:permission => :view_helpdesk_tickets,
|
|
:timestamp => "#{table_name}.message_date",
|
|
:author_key => "#{Journal.table_name}.user_id",
|
|
:find_options => {:include => [{:journal => [{:issue => [:project, :tracker]}, :details, :user]}, :contact]}
|
|
end
|
|
|
|
acts_as_event :title => Proc.new {|o| "#{o.journal.issue.tracker} ##{o.journal.issue.id}: #{o.journal.issue.subject}" if o.journal && o.journal.issue},
|
|
:datetime => :message_date,
|
|
:group => :helpdesk_ticket,
|
|
:project_key => "#{Project.table_name}.id",
|
|
:url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.journal.issue.id, :anchor => "change-#{o.id}"} if o.journal},
|
|
:type => Proc.new {|o| ('icon' + (o.is_incoming? ? " icon-email" : " icon-email-to")) },
|
|
:author => Proc.new {|o| o.is_incoming? ? o.contact : o.journal.user },
|
|
:description => Proc.new{|o| o.journal.notes if o.journal}
|
|
|
|
validates_presence_of :contact, :journal, :message_date
|
|
|
|
def project
|
|
journal.project
|
|
end
|
|
|
|
def contact_name
|
|
contact.name
|
|
end
|
|
|
|
def contact_email
|
|
contact.emails.first
|
|
end
|
|
|
|
def helpdesk_ticket
|
|
journal.issue.helpdesk_ticket
|
|
end
|
|
|
|
def content
|
|
journal.notes
|
|
end
|
|
|
|
|
|
end
|