diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index d84b2ff4..ad585bb4 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -2,11 +2,11 @@ class MembersController < ApplicationController before_action :authenticate_user! def destroy - find_member + @member = Member.find(params[:id]) toggle_active_posts @member.destroy - redirect_to manage_users_path + redirect_to request.referer.include?(organizations_path) ? organizations_path : manage_users_path end def toggle_manager diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index 42eae556..01389658 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -2,7 +2,12 @@ class OrganizationsController < ApplicationController before_action :load_resource, only: [:show, :edit, :update, :set_current] def index - organizations = Organization.all + if current_user + user_organizations = Organization.left_outer_joins(:petitions).where(petitions: { user_id: current_user.id }) + @user_organizations = user_organizations.or(Organization.where(id: current_user.organizations.pluck(:id))).distinct + end + + organizations = Organization.where.not(id: @user_organizations&.pluck(:id)) organizations = organizations.search_by_query(params[:q]) if params[:q].present? @organizations = organizations.page(params[:page]).per(25) end diff --git a/app/controllers/petitions_controller.rb b/app/controllers/petitions_controller.rb index c19ccea5..4ddb81cd 100644 --- a/app/controllers/petitions_controller.rb +++ b/app/controllers/petitions_controller.rb @@ -10,11 +10,11 @@ def create redirect_to organizations_path end - + def update petition = Petition.find params[:id] status = params[:status] - + if petition.update(status: status) User.find(params[:user_id]).add_to_organization(current_organization) if status == 'accepted' flash[:notice] = "Application #{status}" @@ -24,7 +24,7 @@ def update redirect_to manage_petitions_path end - + def manage @status = params[:status] || 'pending' @users = User.joins(:petitions).where(petitions: { organization_id: current_organization.id, status: @status }).page(params[:page]).per(20) diff --git a/app/models/user.rb b/app/models/user.rb index d1470032..fd1ba040 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -124,4 +124,8 @@ def has_valid_email? def email_if_real has_valid_email? ? email : "" end + + def was_member?(petition) + petition.status == 'accepted' && Member.where(organization: petition.organization, user: self).none? + end end diff --git a/app/views/application/menus/_user_admin_menu_items.html.erb b/app/views/application/menus/_user_admin_menu_items.html.erb index b145ff05..f2d10c9b 100644 --- a/app/views/application/menus/_user_admin_menu_items.html.erb +++ b/app/views/application/menus/_user_admin_menu_items.html.erb @@ -21,6 +21,13 @@ <% end %> +