From 521346a65034e1624445fbbe129680d7f2b0f941 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 16 Aug 2013 00:21:47 +0200 Subject: [PATCH] Moved to separate Ticket::Number class/adapter. --- app/models/ticket/number.rb | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 app/models/ticket/number.rb diff --git a/app/models/ticket/number.rb b/app/models/ticket/number.rb new file mode 100644 index 000000000..1bcfd6403 --- /dev/null +++ b/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 +