From c72762dbc66761cd52ace71d0036a8ffb32fdb25 Mon Sep 17 00:00:00 2001 From: Mae Beale Date: Sun, 14 Jun 2020 14:42:32 -0400 Subject: [PATCH 1/2] Allow case_assignments to be unassigned --- app/controllers/case_assignments_controller.rb | 17 +++++++++++++++++ .../casa_cases/_volunteer_assignment.html.erb | 16 +++++++++++++++- config/routes.rb | 7 ++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/controllers/case_assignments_controller.rb b/app/controllers/case_assignments_controller.rb index dc7702eefb..f7ed644e29 100644 --- a/app/controllers/case_assignments_controller.rb +++ b/app/controllers/case_assignments_controller.rb @@ -17,6 +17,23 @@ def destroy redirect_to after_action_path(case_assignment_parent) end + def unassign + case_assignment = CaseAssignment.find(params[:id]) + casa_case = case_assignment.casa_case + volunteer = case_assignment.volunteer + flash_message = "Volunteer was unassigned from Case #{casa_case.case_number}." + + if case_assignment.update_attributes(is_active: false) + if params[:redirect_to_path] == "volunteer" + redirect_to edit_volunteer_path(volunteer), notice: flash_message + else + redirect_to after_action_path(casa_case), notice: flash_message + end + else + render :edit + end + end + private def case_assignment_parent diff --git a/app/views/casa_cases/_volunteer_assignment.html.erb b/app/views/casa_cases/_volunteer_assignment.html.erb index fd95c1ecb5..786f034111 100644 --- a/app/views/casa_cases/_volunteer_assignment.html.erb +++ b/app/views/casa_cases/_volunteer_assignment.html.erb @@ -8,6 +8,7 @@ Volunteer Name Volunteer Email + Status Actions @@ -16,7 +17,20 @@ <%= link_to assignment&.volunteer&.display_name, edit_volunteer_path(assignment.volunteer) %> <%= assignment&.volunteer&.email %> - <%= button_to 'Unassign Volunteer', case_assignment_path(assignment, casa_case_id: @casa_case.id), method: :delete, class: "btn btn-danger" %> + + <% if assignment.is_active? %> + Assigned + <% else %> + Unassigned + <% end %> + + + <% if assignment.is_active? %> + <%= button_to 'Unassign Volunteer', unassign_case_assignment_path(assignment), method: :patch, class: "btn btn-outline-danger" %> + <% else %> + N/A + <% end %> + <% end %> diff --git a/config/routes.rb b/config/routes.rb index 9ee32d441a..e1a4d65ca3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,7 +10,12 @@ resources :case_contact_reports, only: %i[index] resources :volunteers, only: %i[new edit create update] - resources :case_assignments, only: %i[create destroy] + resources :case_assignments, only: %i[create destroy] do + member do + get :unassign + patch :unassign + end + end resources :users, only: [] do collection do From e7ea8d2eef365c03cc7dc6c435833bdd1cbb1e72 Mon Sep 17 00:00:00 2001 From: Mae Beale Date: Sun, 14 Jun 2020 15:20:33 -0400 Subject: [PATCH 2/2] Only allow casa_admins or volunteer's direct supervisors to unassign from case --- app/views/casa_cases/_volunteer_assignment.html.erb | 2 +- app/views/volunteers/edit.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/casa_cases/_volunteer_assignment.html.erb b/app/views/casa_cases/_volunteer_assignment.html.erb index 786f034111..1f0bd93325 100644 --- a/app/views/casa_cases/_volunteer_assignment.html.erb +++ b/app/views/casa_cases/_volunteer_assignment.html.erb @@ -25,7 +25,7 @@ <% end %> - <% if assignment.is_active? %> + <% if assignment.is_active? && current_user.role == "casa_admin" || assignment.volunteer.supervisor == current_user %> <%= button_to 'Unassign Volunteer', unassign_case_assignment_path(assignment), method: :patch, class: "btn btn-outline-danger" %> <% else %> N/A diff --git a/app/views/volunteers/edit.html.erb b/app/views/volunteers/edit.html.erb index a42ff34721..368ad34e42 100644 --- a/app/views/volunteers/edit.html.erb +++ b/app/views/volunteers/edit.html.erb @@ -78,7 +78,7 @@ <%= link_to assignment.casa_case.case_number, edit_casa_case_path(assignment.casa_case) %> <%= assignment.casa_case.transition_aged_youth %> - <%= button_to 'Unassign Case', case_assignment_path(assignment, volunteer_id: @volunteer.id), method: :delete, class: "btn btn-danger" %> + <%= button_to 'Unassign Case', case_assignment_path(assignment, volunteer_id: @volunteer.id), method: :delete, class: "btn btn-danger" if current_user.role == "casa_admin" || @volunteer.supervisor == current_user%> <% end %>