Browse Source

Moved to separate Ticket::Number class/adapter.

Martin Edenhofer 11 years ago
parent
commit
521346a650
1 changed files with 58 additions and 0 deletions
  1. 58 0
      app/models/ticket/number.rb

+ 58 - 0
app/models/ticket/number.rb

@@ -0,0 +1,58 @@
+# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
+
+class Ticket::Number < ApplicationLib
+
+=begin
+
+generate new ticket number
+
+  result = Ticket::Number.generate
+
+returns
+
+  result = "1234556" # new ticket number
+
+=end
+
+  def self.generate
+    
+    # generate number
+    (1..50_000).each { |i|
+      number = adapter.generate
+      ticket = Ticket.where( :number => number ).first
+      return number if !ticket
+    }
+    raise "Can't generate new ticket number!"
+  end
+
+=begin
+
+check if string contrains a valid ticket number
+
+  result = Ticket::Number.check('some string [Ticket#123456]')
+
+returns
+
+  result = ticket # Ticket model of ticket with matching ticket number
+
+=end
+
+  def self.check(string)
+    adapter.check(string)
+  end
+
+  def self.adapter
+
+    # load backend based on config
+    adapter_name = Setting.get('ticket_number')
+    if !adapter_name
+      raise "Missing ticket_number setting option"
+    end
+    adapter = self.load_adapter(adapter_name)
+    if !adapter
+      raise "Can't load ticket_number adapter '#{adapter_name}'"
+    end
+    adapter
+  end
+end
+