Class: Tracker

Inherits:
Object
  • Object
show all
Defined in:
lib/tracker.rb

Instance Method Summary collapse

Instance Method Details

#add(params = {}) ⇒ Object



68
69
70
71
72
73
# File 'lib/tracker.rb', line 68

def add(params = {})
  find_ticket(params[:id]) do |ticket|
    ticket.comments.create(:message => params[:message])
    "New comment was added to ticket ##{ticket.number}"
  end
end

#bootstrap(params = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/tracker.rb', line 2

def bootstrap(params = {})
  $stdout = StringIO.new
  ActiveRecord::Schema.define do
    create_table "tickets" do |t|
      t.column "keywords", :string
      t.column "message", :text
      t.column "state", :int, :default => 0
      t.column "updated_at", :datetime
    end
    
    create_table "comments" do |t|
      t.column "ticket_id", :int
      t.column "position", :int
      t.column "message", :text
    end
  end
  result = "New database '#{Environment::DATABASE}' was created"
rescue ActiveRecord::StatementInvalid => e
  result = "Could not create the database '#{Environment::DATABASE}' because it already exists"
ensure
  $stdout = STDOUT
  return result
end

#close(params = {}) ⇒ Object



89
90
91
92
93
94
# File 'lib/tracker.rb', line 89

def close(params = {})
  find_ticket(params[:id]) do |ticket|
    ticket.close
    "Closed ticket ##{ticket.number}"
  end
end

#create(params = {}) ⇒ Object



26
27
28
29
# File 'lib/tracker.rb', line 26

def create(params = {})
  ticket = Ticket.create(params)
  "Created new ticket ##{ticket.number}"
end

#delete(params = {}) ⇒ Object



61
62
63
64
65
66
# File 'lib/tracker.rb', line 61

def delete(params = {})
  find_ticket(params[:id]) do |ticket|
    ticket.destroy
    "Ticket ##{ticket.number} was deleted"
  end
end

#list(params = {}) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/tracker.rb', line 37

def list(params = {})
  conditions = { :state => Ticket::OPEN }.merge(params)
  tickets = Ticket.with_scope(:find => { :conditions => conditions }) do
    Ticket.find(:all, :order => "updated_at DESC")
  end
  
  return list_tickets(tickets)
end

#open(params = {}) ⇒ Object



82
83
84
85
86
87
# File 'lib/tracker.rb', line 82

def open(params = {})
  find_ticket(params[:id]) do |ticket|
    ticket.open
    "Opened ticket ##{ticket.number}"
  end
end

#remove(params = {}) ⇒ Object



75
76
77
78
79
80
# File 'lib/tracker.rb', line 75

def remove(params = {})
  find_ticket(params[:id]) do |ticket|
    ticket.comments[params[:position] - 1].destroy
    "Comment ##{params[:position]} was removed from ticket ##{ticket.number}"
  end
end

#search(params = {}) ⇒ Object



46
47
48
49
50
51
# File 'lib/tracker.rb', line 46

def search(params = {})
  phrase = params.delete(:id)
  tickets = Ticket.search(phrase, params.merge(:order => "updated_at DESC"))
  
  return list_tickets(tickets)
end

#show(params = {}) ⇒ Object



31
32
33
34
35
# File 'lib/tracker.rb', line 31

def show(params = {})
  find_ticket(params[:id]) do |ticket|
    show_ticket(ticket)
  end
end

#update(params = {}) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/tracker.rb', line 53

def update(params = {})
  find_ticket(params[:id]) do |ticket|
    params.delete(:id)
    ticket.update_attributes!(params)
    "Ticket ##{ticket.number} was updated"
  end
end