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..1f0bd93325 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? && 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
+ <% end %>
+ |
<% end %>
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 %>
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