From 3d1ab793e7d5d23f6cb21feafe52b66c21195f42 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 3 Jul 2012 15:24:31 +0200 Subject: [PATCH] Added merge_to(). --- app/models/ticket.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/models/ticket.rb b/app/models/ticket.rb index 651c30284..5649455ec 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -39,6 +39,37 @@ class Ticket < ActiveRecord::Base User.where( :active => true ).joins(:roles).where( 'roles.name' => 'Agent', 'roles.active' => true ).uniq() end + def merge_to(data) + + # update articles + Ticket::Article.where( :ticket_id => self.id ).update_all( ['ticket_id = ?', data[:ticket_id] ] ) + + # update history + + # create new merge article + Ticket::Article.create( + :created_by_id => data[:created_by_id], + :ticket_id => self.id, + :ticket_article_type_id => Ticket::Article::Type.where( :name => 'note' ).first.id, + :ticket_article_sender_id => Ticket::Article::Sender.where( :name => 'Agent' ).first.id, + :body => 'merged', + :internal => false + ) + + # add history to both + + # link tickets + + # set state to 'merged' + self.ticket_state_id = Ticket::State.where( :name => 'merged' ).first.id + + # rest owner + self.owner_id = User.where(:login => '-').first.id + + # save ticket + self.save + end + # def self.agent # Role.where( :name => ['Agent'], :active => true ).first.users.where( :active => true ).uniq() # end @@ -146,6 +177,12 @@ class Ticket < ActiveRecord::Base type = Ticket::Article::Type.where( :id => self.ticket_article_type_id ).first ticket = Ticket.find(self.ticket_id) + # set from if not given + if !self.from + user = User.find(self.created_by_id) + self.from = "#{user.firstname} #{user.lastname}" + end + # set email attributes if type['name'] == 'email'