number.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
  2. class Ticket::Number < ApplicationLib
  3. =begin
  4. generate new ticket number
  5. result = Ticket::Number.generate
  6. returns
  7. result = "1234556" # new ticket number
  8. =end
  9. def self.generate
  10. # generate number
  11. (1..50_000).each { |i|
  12. number = adapter.generate
  13. ticket = Ticket.where( :number => number ).first
  14. return number if !ticket
  15. }
  16. raise "Can't generate new ticket number!"
  17. end
  18. =begin
  19. check if string contrains a valid ticket number
  20. result = Ticket::Number.check('some string [Ticket#123456]')
  21. returns
  22. result = ticket # Ticket model of ticket with matching ticket number
  23. =end
  24. def self.check(string)
  25. adapter.check(string)
  26. end
  27. def self.adapter
  28. # load backend based on config
  29. adapter_name = Setting.get('ticket_number')
  30. if !adapter_name
  31. raise "Missing ticket_number setting option"
  32. end
  33. adapter = self.load_adapter(adapter_name)
  34. if !adapter
  35. raise "Can't load ticket_number adapter '#{adapter_name}'"
  36. end
  37. adapter
  38. end
  39. end