From 42c855a6d9b8ecf50a5fe4473d9d867eeaf387f5 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Sun, 18 Nov 2012 11:51:54 +0100 Subject: [PATCH] Fixed URLs. --- app/controllers/links_controller.rb | 6 +- app/models/ticket/observer/close_time.rb | 21 -- app/models/ticket/observer/first_response.rb | 25 -- app/models/ticket/observer/last_contact.rb | 43 --- app/models/ticket/observer/notification.rb | 274 ------------------ .../ticket/observer/user_ticket_counter.rb | 28 -- .../strategies}/twitter_database.rb | 0 7 files changed, 3 insertions(+), 394 deletions(-) delete mode 100644 app/models/ticket/observer/close_time.rb delete mode 100644 app/models/ticket/observer/first_response.rb delete mode 100644 app/models/ticket/observer/last_contact.rb delete mode 100644 app/models/ticket/observer/notification.rb delete mode 100644 app/models/ticket/observer/user_ticket_counter.rb rename lib/{ => omniauth/strategies}/twitter_database.rb (100%) diff --git a/app/controllers/links_controller.rb b/app/controllers/links_controller.rb index 3de74a681..d1a5907cf 100644 --- a/app/controllers/links_controller.rb +++ b/app/controllers/links_controller.rb @@ -1,7 +1,7 @@ class LinksController < ApplicationController before_filter :authentication_check - # GET /links + # GET /api/links def index links = Link.list( :link_object => params[:link_object], @@ -37,7 +37,7 @@ class LinksController < ApplicationController } end - # POST /links/add + # POST /api/links/add def add # lookup object id @@ -57,7 +57,7 @@ class LinksController < ApplicationController end end - # DELETE /links/remove + # DELETE /api/links/remove def remove link = Link.remove(params) diff --git a/app/models/ticket/observer/close_time.rb b/app/models/ticket/observer/close_time.rb deleted file mode 100644 index e243e5c04..000000000 --- a/app/models/ticket/observer/close_time.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Ticket::Observer::CloseTime < ActiveRecord::Observer - observe 'ticket' - - def after_update(record) -# puts 'check close time' - - # check if close_time is already set - return true if record.close_time - - # check if ticket is closed now - ticket_state = Ticket::State.find( record.ticket_state_id ) - ticket_state_type = Ticket::StateType.find( ticket_state.ticket_state_type_id ) - return true if ticket_state_type.name != 'closed' - - # set close_time - record.close_time = Time.now - - # save ticket - record.save - end -end \ No newline at end of file diff --git a/app/models/ticket/observer/first_response.rb b/app/models/ticket/observer/first_response.rb deleted file mode 100644 index a8badaee7..000000000 --- a/app/models/ticket/observer/first_response.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Ticket::Observer::FirstResponse < ActiveRecord::Observer - observe 'ticket::_article' - - def after_create(record) -# puts 'check first response' - - # if article in internal - return true if record.internal - - # if sender is not agent - return true if record.ticket_article_sender.name != 'Agent' - - # if article is a message to customer - return true if !record.ticket_article_type.communication - - # check if first_response is already set - return true if record.ticket.first_response - - # set first_response - record.ticket.first_response = Time.now - - # save ticket - record.ticket.save - end -end \ No newline at end of file diff --git a/app/models/ticket/observer/last_contact.rb b/app/models/ticket/observer/last_contact.rb deleted file mode 100644 index 5fd5fca8a..000000000 --- a/app/models/ticket/observer/last_contact.rb +++ /dev/null @@ -1,43 +0,0 @@ -class Ticket::Observer::LastContact < ActiveRecord::Observer - observe 'ticket::_article' - - def after_create(record) -# puts 'check last contact' - - # if article in internal - return true if record.internal - - # if article is a message to customer - return true if !record.ticket_article_type.communication - - # if sender is not customer - if record.ticket_article_sender.name == 'Customer' - - # check if last communication is done by agent, else do not set last_contact_customer - if record.ticket.last_contact_customer == nil || - record.ticket.last_contact_agent == nil || - record.ticket.last_contact_agent.to_i > record.ticket.last_contact_customer.to_i - record.ticket.last_contact_customer = Time.now - - # set last_contact - record.ticket.last_contact = Time.now - - # save ticket - record.ticket.save - end - end - - # if sender is not agent - if record.ticket_article_sender.name == 'Agent' - - # set last_contact_agent - record.ticket.last_contact_agent = Time.now - - # set last_contact - record.ticket.last_contact = Time.now - - # save ticket - record.ticket.save - end - end -end \ No newline at end of file diff --git a/app/models/ticket/observer/notification.rb b/app/models/ticket/observer/notification.rb deleted file mode 100644 index 80bb7605b..000000000 --- a/app/models/ticket/observer/notification.rb +++ /dev/null @@ -1,274 +0,0 @@ -class Ticket::Observer::Notification < ActiveRecord::Observer - observe :ticket, 'ticket::_article' - - @@event_buffer = [] - - def self.transaction - -# puts '@@event_buffer' -# puts @@event_buffer.inspect - @@event_buffer.each { |event| - - # get current state of objects - if event[:name] == 'Ticket::Article' - article = Ticket::Article.find( event[:id] ) - ticket = article.ticket - else - ticket = Ticket.find( event[:id] ) - article = ticket.articles[-1] - end - - # send new ticket notification to agents - if event[:name] == 'Ticket' && event[:type] == 'create' - - puts 'send new ticket notify to agent' - send_notify( - { - :event => event, - :recipient => 'to_work_on', # group|owner|to_work_on|customer - :subject => 'New Ticket (#{ticket.title})', - :body => 'Hi #{recipient.firstname}, - -a new Ticket (#{ticket.title}) via #{article.ticket_article_type.name}. - -Group: #{ticket.group.name} -Owner: #{ticket.owner.firstname} #{ticket.owner.lastname} -State: #{ticket.ticket_state.name} - -From: #{article.from} - -#{article.body} - - -#{config.http_type}://#{config.fqdn}/#ticket/zoom/#{ticket.id}/#{article.id} -' - }, - ticket, - article - ) - end - - # send new ticket notification to customers - if event[:name] == 'Ticket' && event[:type] == 'create' - - # only for incoming emails - next if article.ticket_article_type.name != 'email' - - puts 'send new ticket notify to customer' - send_notify( - { - :event => event, - :recipient => 'customer', # group|owner|to_work_on|customer - :subject => 'New Ticket has been created! (#{ticket.title})', - :body => 'Thanks for your email. A new ticket has been created. - -You wrote: - -#{article.body} - - -Your email will be answered by a human ASAP - -Have fun with Zammad! :-) - -Your Zammad Team -' - }, - ticket, - article - ) - end - - # send follow up notification - if event[:name] == 'Ticket::Article' && event[:type] == 'create' - - # only send article notifications after init article is created (handled by ticket create event) - next if ticket.articles.count.to_i <= 1 - - puts 'send new ticket::article notify' - - if article.ticket_article_sender.name == 'Customer' - send_notify( - { - :event => event, - :recipient => 'to_work_on', # group|owner|to_work_on|customer - :subject => 'Follow Up (#{ticket.title})', - :body => 'Hi #{recipient.firstname}, - -a follow Up (#{ticket.title}) via #{article.ticket_article_type.name}. - -Group: #{ticket.group.name} -Owner: #{ticket.owner.firstname} #{ticket.owner.lastname} -State: #{ticket.ticket_state.name} - -From: #{article.from} - -#{article.body} - - -#{config.http_type}://#{config.fqdn}/#ticket/zoom/#{ticket.id}/#{article.id} -' - }, - ticket, - article - ) - end - - # send new note notification to owner - # if agent == created.id - if article.ticket_article_sender.name == 'Agent' && article.created_by_id != article.ticket.owner_id - send_notify( - { - :event => event, - :recipient => 'owner', # group|owner|to_work_on - :subject => 'Updated (#{ticket.title})', - :body => 'Hi #{recipient.firstname}, - -updated (#{ticket.title}) via #{article.ticket_article_type.name}. - -Group: #{ticket.group.name} -Owner: #{ticket.owner.firstname} #{ticket.owner.lastname} -State: #{ticket.ticket_state.name} - -From: #{article.from} - -#{article.body} - - -#{config.http_type}://#{config.fqdn}/#ticket/zoom/#{ticket.id}/#{article.id} -' - }, - ticket, - article - ) - end - end - } - - # reset buffer - @@event_buffer = [] - end - - def self.send_notify(data, ticket, article) - - # find recipients - recipients = [] - - # group of agents to work on - if data[:recipient] == 'group' - recipients = ticket.agent_of_group() - - # owner - elsif data[:recipient] == 'owner' - if ticket.owner_id != 1 - recipients.push ticket.owner - end - - # customer - elsif data[:recipient] == 'customer' - if ticket.customer_id != 1 -# temporarily disabled -# recipients.push ticket.customer - end - - # owner or group of agents to work on - elsif data[:recipient] == 'to_work_on' - if ticket.owner_id != 1 - recipients.push ticket.owner - else - recipients = ticket.agent_of_group() - end - end - - # send notifications - recipient_list = '' - notification_subject = '' - recipients.each do |user| - next if !user.email || user.email == '' - - # add recipient_list - if recipient_list != '' - recipient_list += ',' - end - recipient_list += user.email.to_s - - # prepare subject & body - notification = {} - [:subject, :body].each { |key| - notification[key.to_sym] = NotificationFactory.build( - :string => data[key.to_sym], - :objects => { - :ticket => ticket, - :article => article, - :recipient => user, - } - ) - } - notification_subject = notification[:subject] - - # rebuild subject - notification[:subject] = ticket.subject_build( notification[:subject] ) - - # send notification - NotificationFactory.send( - :recipient => user, - :subject => notification[:subject], - :body => notification[:body] - ) - end - - # add history record - if recipient_list != '' - History.history_create( - :o_id => ticket.id, - :history_type => 'notification', - :history_object => 'Ticket', - :value_from => notification_subject, - :value_to => recipient_list, - :created_by_id => article.created_by_id || 1 - ) - end - end - - def after_create(record) -# puts 'CREATED!!!!' -# puts record.inspect - e = { - :name => record.class.name, - :type => 'create', - :data => record, - :id => record.id, - } - @@event_buffer.push e - end - - def before_update(record) - puts 'before_update' - current = record.class.find(record.id) - - # do not send anything if nothing has changed - return if current.attributes == record.attributes - -# puts 'UPDATE!!!!!!!!' -# puts 'current' -# puts current.inspect -# puts 'record' -# puts record.inspect - - e = { - :name => record.class.name, - :type => 'update', - :data => record, - :id => record.id, - } - @@event_buffer.push e - end - - def after_update(record) -# puts 'after_update' -# puts record.inspect -# puts '-----' -# puts @a.inspect -# AuditTrail.new(record, "UPDATED") - end -end \ No newline at end of file diff --git a/app/models/ticket/observer/user_ticket_counter.rb b/app/models/ticket/observer/user_ticket_counter.rb deleted file mode 100644 index 956aad123..000000000 --- a/app/models/ticket/observer/user_ticket_counter.rb +++ /dev/null @@ -1,28 +0,0 @@ -class Ticket::Observer::UserTicketCounter < ActiveRecord::Observer - observe 'ticket' - - def after_create(record) - user_ticket_counter_update(record) - end - def after_update(record) - user_ticket_counter_update(record) - end - def after_update(record) - user_ticket_counter_update(record) - end - - def user_ticket_counter_update(record) - return if !record.customer_id - - ticket_state_list_open = Ticket::State.where( :ticket_state_type_id => Ticket::StateType.where(:name => ['new','open', 'pending reminder', 'pending action']) ) - ticket_state_list_closed = Ticket::State.where( :ticket_state_type_id => Ticket::StateType.where(:name => ['closed'] ) ) - - tickets_open = Ticket.where( :customer_id => record.customer_id, :ticket_state_id => ticket_state_list_open ).count() - tickets_closed = Ticket.where( :customer_id => record.customer_id, :ticket_state_id => ticket_state_list_closed ).count() - - customer = User.find( record.customer_id ) - customer[:preferences][:tickets_open] = tickets_open - customer[:preferences][:tickets_closed] = tickets_closed - customer.save - end -end \ No newline at end of file diff --git a/lib/twitter_database.rb b/lib/omniauth/strategies/twitter_database.rb similarity index 100% rename from lib/twitter_database.rb rename to lib/omniauth/strategies/twitter_database.rb