Class: ProtectedRecordManager::ChangeRequestsController

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

Instance Method Summary collapse

Methods inherited from ApplicationController

#ensure_record_manager, #not_found

Instance Method Details

#editObject

GET /change_requests/1/edit



32
33
34
# File 'app/controllers/protected_record_manager/change_requests_controller.rb', line 32

def edit
  @change_request = ProtectedRecord::ChangeRequest::Record.find(params[:id])
end

#indexObject

GET /change_requests GET /change_requests.json



9
10
11
12
13
14
15
16
17
18
# File 'app/controllers/protected_record_manager/change_requests_controller.rb', line 9

def index
  if current_user.protected_record_manager
    @change_requests = ProtectedRecord::ChangeRequest::Record.where(closed_by_id: nil)
  end

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @change_requests }
  end
end

#showObject

GET /change_requests/1 GET /change_requests/1.json



22
23
24
25
26
27
28
29
# File 'app/controllers/protected_record_manager/change_requests_controller.rb', line 22

def show
  @change_request = ProtectedRecord::ChangeRequest::Record.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @change_request }
  end
end

#updateObject

PUT /change_requests/1 PUT /change_requests/1.json



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/controllers/protected_record_manager/change_requests_controller.rb', line 38

def update
  @change_request = ProtectedRecord::ChangeRequest::Record.find(params[:id])

  protected_record = @change_request.recordable
  changes = ActiveSupport::JSON.decode(@change_request.requested_changes)

  changes.each do |k,v|
    changes[k] = v.last
  end

  ActiveRecord::Base.transaction do
    # Save the request as closed
    @change_request.closed_by_id = current_user.id
    @change_request.save

    # Make the change
    ProtectedRecord::UseCase::Update.new({
      params:           changes,
      user:             current_user,
      protected_record: protected_record,
      protected_keys:   []
    }).execute!

    # Log the closing of this request
    ProtectedRecord::UseCase::ChangeLog::Create.new({
      record_class: ProtectedRecord::ChangeLog::Record,
      user:         current_user,
      changed_object: @change_request
    }).execute!
  end

  respond_to do |format|
    if @change_request.closed_by_id.present?
      format.html { redirect_to change_request_path(@change_request), notice: 'Change request was successfully updated.' }
    else
      flash[:alert] = "Changes not applied."
      format.html { render action: "edit" }
    end
  end
end