Class: PlanMyStuff::Issues::ApprovalsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- PlanMyStuff::Issues::ApprovalsController
- Defined in:
- app/controllers/plan_my_stuff/issues/approvals_controller.rb
Overview
CRUD for manager approvals on an issue. Backs the approvals panel on the issue show view.
POST /issues/:issue_id/approvals -> create (adds approver(s)) PATCH /issues/:issue_id/approvals/:id -> update (approves or revokes) DELETE /issues/:issue_id/approvals/:id -> destroy (removes an approver)
Instance Method Summary collapse
-
#create ⇒ Object
POST /issues/:issue_id/approvals.
-
#destroy ⇒ Object
DELETE /issues/:issue_id/approvals/:id.
-
#update ⇒ Object
PATCH /issues/:issue_id/approvals/:id.
Instance Method Details
#create ⇒ Object
POST /issues/:issue_id/approvals
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/controllers/plan_my_stuff/issues/approvals_controller.rb', line 14 def create unless support_user? (show_path) return end user_ids = parse_viewer_ids(approval_params[:user_ids]) if user_ids.blank? flash[:error] = 'No valid user IDs provided.' redirect_to(show_path) return end issue = PMS::Issue.find(params[:issue_id].to_i, repo: params[:repo]) issue.request_approvals!(user_ids: user_ids, user: pms_current_user) flash[:success] = 'Approvers were successfully added.' redirect_to(show_path) rescue PMS::AuthorizationError, PMS::ValidationError => e flash[:error] = e. redirect_to(show_path) end |
#destroy ⇒ Object
DELETE /issues/:issue_id/approvals/:id
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/controllers/plan_my_stuff/issues/approvals_controller.rb', line 73 def destroy unless support_user? (show_path) return end issue = PMS::Issue.find(params[:issue_id].to_i, repo: params[:repo]) issue.remove_approvers!(user_ids: [params[:id].to_i], user: pms_current_user) flash[:success] = 'Approver was successfully removed.' redirect_to(show_path) rescue PMS::AuthorizationError, PMS::ValidationError => e flash[:error] = e. redirect_to(show_path) end |
#update ⇒ Object
PATCH /issues/:issue_id/approvals/:id
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 |
# File 'app/controllers/plan_my_stuff/issues/approvals_controller.rb', line 38 def update status = approval_params[:status].to_s target_id = params[:id].to_i if %w[approved pending].exclude?(status) head(:bad_request) return end issue = PMS::Issue.find(params[:issue_id].to_i, repo: params[:repo]) caller_id = pms_current_user.present? ? PMS::UserResolver.user_id(pms_current_user) : nil if status == 'approved' unless caller_id == target_id (show_path) return end issue.approve!(user: pms_current_user) flash[:success] = 'Approval recorded.' else if caller_id != target_id && !support_user? (show_path) return end issue.revoke_approval!(user: pms_current_user, target_user_id: target_id) flash[:success] = 'Approval revoked.' end redirect_to(show_path) rescue PMS::AuthorizationError, PMS::ValidationError => e flash[:error] = e. redirect_to(show_path) end |