Class: TicketsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/tickets_controller.rb

Instance Method Summary collapse

Instance Method Details

#assignmentObject



69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/controllers/tickets_controller.rb', line 69

def assignment
  assignment = TicketAssignment.new @ticket, params[:assignment_user_ids]

  if assignment.assign!
    @activity = @ticket.create_activity key: "ticket.assignment", 
      owner: current_user, 
      parameters: {
        assigned_ids: assignment.assigned_ids, 
        unassigned_ids: assignment.unassigned_ids
      }
  end
end

#createObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/tickets_controller.rb', line 14

def create
  @ticket = Ticket.filtered_type_class(params[:type]).new(
    ticket_params.merge(creator: current_user)
  )
  if @ticket.save
    @ticket.create_activity key: "ticket.created", owner: current_user
  end

  @ticket_types = ticket_types(parent_id: @ticket.parent_id)

  respond_to do |format|
    format.js
  end
end

#indexObject



6
7
8
# File 'app/controllers/tickets_controller.rb', line 6

def index
  @tickets = Ticket.all
end

#newObject



10
11
12
# File 'app/controllers/tickets_controller.rb', line 10

def new
  @ticket_types = ticket_types(parent_id: params[:parent_id])
end

#reorderObject



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/controllers/tickets_controller.rb', line 82

def reorder
  old_parent_id = @ticket.parent_id
  old_position = @ticket.position
  if @ticket.reorder!(
    parent_id: params[:parent_id],
    position: params[:position]
  )
    @activity = @ticket.create_activity key: "ticket.reorder", 
      owner: current_user, 
      parameters: {
        from_parent_id: old_parent_id,
        old_position: old_position,
        parent_id: params[:parent_id], 
        position: params[:position]
      }
  end

  render json: {}
end

#showObject



29
30
31
32
33
# File 'app/controllers/tickets_controller.rb', line 29

def show
  @ticket_types = ticket_types(parent_id: @ticket.id)
  @subtree = @ticket.subtree.includes(:assignments).group_by(&:parent_id)
  @comments = @ticket.comments.group_by(&:id)
end

#trigger_eventObject



35
36
37
38
39
40
41
42
43
44
# File 'app/controllers/tickets_controller.rb', line 35

def trigger_event
  old_state = @ticket.state
  if @ticket.trigger_event!(params[:event])
    @activity = @ticket.create_activity key: "ticket.state_change", owner: current_user, parameters: {
      event: params[:event], 
      to: @ticket.state,
      from: old_state
    }
  end
end

#updateObject

only for title/description



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/controllers/tickets_controller.rb', line 47

def update
  update_params = params.require(params[:type]).permit(
    :title, :description, 
    :who, :what, :why
  )
  old_title = @ticket.title
  old_description = @ticket.description
  if @ticket.update_attributes(update_params)
    parameters = {}
    if old_title != @ticket.title
      parameters[:title_diff] = generate_diff(old_title, @ticket.title)
      parameters[:title_html_diff] = generate_html_diff(old_title, @ticket.title)
    end
    if old_description != @ticket.description
      parameters[:description_diff] = generate_diff(old_description, @ticket.description)
      parameters[:description_html_diff] = generate_html_diff(old_description, @ticket.description)
    end

    @activity = @ticket.create_activity key: "ticket.update_details", owner: current_user, parameters: parameters
  end
end

#user_searchObject

FIXME: this is fake right now, need to filter.



103
104
105
106
107
108
109
110
111
# File 'app/controllers/tickets_controller.rb', line 103

def user_search
  render json: User.all.map { |user|
    {
      name: user.display_name,
      id: user.id,
      value: "#{user.display_name} - #{user.email}"
    }
  }
end