Chris@1115: # Redmine - project management software Chris@1115: # Copyright (C) 2006-2012 Jean-Philippe Lang Chris@1115: # Chris@1115: # This program is free software; you can redistribute it and/or Chris@1115: # modify it under the terms of the GNU General Public License Chris@1115: # as published by the Free Software Foundation; either version 2 Chris@1115: # of the License, or (at your option) any later version. Chris@1115: # Chris@1115: # This program is distributed in the hope that it will be useful, Chris@1115: # but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@1115: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@1115: # GNU General Public License for more details. Chris@1115: # Chris@1115: # You should have received a copy of the GNU General Public License Chris@1115: # along with this program; if not, write to the Free Software Chris@1115: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Chris@1115: Chris@1115: class WorkflowTransition < WorkflowRule Chris@1115: validates_presence_of :new_status Chris@1115: Chris@1115: # Returns workflow transitions count by tracker and role Chris@1115: def self.count_by_tracker_and_role Chris@1115: counts = connection.select_all("SELECT role_id, tracker_id, count(id) AS c FROM #{table_name} WHERE type = 'WorkflowTransition' GROUP BY role_id, tracker_id") Chris@1115: roles = Role.sorted.all Chris@1115: trackers = Tracker.sorted.all Chris@1115: Chris@1115: result = [] Chris@1115: trackers.each do |tracker| Chris@1115: t = [] Chris@1115: roles.each do |role| Chris@1115: row = counts.detect {|c| c['role_id'].to_s == role.id.to_s && c['tracker_id'].to_s == tracker.id.to_s} Chris@1115: t << [role, (row.nil? ? 0 : row['c'].to_i)] Chris@1115: end Chris@1115: result << [tracker, t] Chris@1115: end Chris@1115: Chris@1115: result Chris@1115: end Chris@1115: end