diff --git a/app/controllers/internal/users_controller.rb b/app/controllers/internal/users_controller.rb index 17d21086b..cb5bb1705 100644 --- a/app/controllers/internal/users_controller.rb +++ b/app/controllers/internal/users_controller.rb @@ -42,6 +42,7 @@ class Internal::UsersController < Internal::ApplicationController make_matches add_note if user_params[:new_note] add_credits if user_params[:add_credits] + remove_credits if user_params[:remove_credits] if user_params[:quick_match] redirect_to "/internal/users/unmatched_mentee" else @@ -68,6 +69,11 @@ class Internal::UsersController < Internal::ApplicationController Credit.import credit_objects end + def remove_credits + amount = user_params[:remove_credits].to_i + @user.credits.where(spent: false).limit(amount).delete_all + end + def user_status @user = User.find(params[:id]) begin @@ -138,6 +144,7 @@ class Internal::UsersController < Internal::ApplicationController :toggle_mentorship, :pro, :merge_user_id, - :add_credits) + :add_credits, + :remove_credits) end end diff --git a/app/models/user.rb b/app/models/user.rb index 9a5a4ded3..65c30b98c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,7 +1,7 @@ class User < ApplicationRecord include CloudinaryHelper - attr_accessor :scholar_email, :new_note, :quick_match, :mentorship_note, :note_for_current_role, :add_mentor, :add_mentee, :user_status, :toggle_mentorship, :pro, :merge_user_id, :add_credits + attr_accessor :scholar_email, :new_note, :quick_match, :mentorship_note, :note_for_current_role, :add_mentor, :add_mentee, :user_status, :toggle_mentorship, :pro, :merge_user_id, :add_credits, :remove_credits rolify include AlgoliaSearch diff --git a/app/views/internal/users/_credits.erb b/app/views/internal/users/_credits.erb index 165db09ac..4e1c93f6c 100644 --- a/app/views/internal/users/_credits.erb +++ b/app/views/internal/users/_credits.erb @@ -1,11 +1,18 @@

Credits

-

Avaiable Credits: <%= @user.credits.where(spent: false).size %>

+

Available Credits: <%= @user.credits.where(spent: false).size %>

<%= form_for [:internal, @user] do |f| %> <%= f.label "Add Credit(s): " %>
- <%= f.text_field :add_credits %> + <%= f.text_field :add_credits, placeholder: "#" %>
<%= f.submit "Add Credits" %> <% end %> + <%= form_for [:internal, @user] do |f| %> + <%= f.label "Remove Credits(s)" %> +
+ <%= f.text_field :remove_credits, placeholder: "#" %> +
+ <%= f.submit "Remove Credits"%> + <% end %>
\ No newline at end of file diff --git a/spec/requests/internal/users_spec.rb b/spec/requests/internal/users_spec.rb index 89659e651..f24bd9a8b 100644 --- a/spec/requests/internal/users_spec.rb +++ b/spec/requests/internal/users_spec.rb @@ -130,6 +130,12 @@ RSpec.describe "Internal::Users", type: :request do put "/internal/users/#{user.id}", params: { user: { new_note: "general note about whatever" } } expect(Note.last.content).to eq("general note about whatever") end + + it "remove credits from account" do + create_list(:credit, 5, user: user) + put "/internal/users/#{user.id}", params: { user: { remove_credits: "3" } } + expect(user.credits.size).to eq(2) + end end context "when deleting user" do