From e066a9cff5c5ff5355547f8fca6898d82da6ef58 Mon Sep 17 00:00:00 2001 From: Anca Date: Tue, 8 Oct 2019 11:33:41 +0300 Subject: [PATCH] Fix #58 - Refactor inbox_members_controller (#109) --- .../api/v1/inbox_members_controller.rb | 101 +++++++++--------- 1 file changed, 49 insertions(+), 52 deletions(-) diff --git a/app/controllers/api/v1/inbox_members_controller.rb b/app/controllers/api/v1/inbox_members_controller.rb index 93476de88..6bf6f7748 100644 --- a/app/controllers/api/v1/inbox_members_controller.rb +++ b/app/controllers/api/v1/inbox_members_controller.rb @@ -1,57 +1,54 @@ -class Api::V1::InboxMembersController < Api::BaseController +module Api + module V1 + class InboxMembersController < Api::BaseController + before_action :fetch_inbox, only: [:create, :show] + before_action :current_agents_ids, only: [:create] - before_action :fetch_inbox, only: [:create, :show] - before_action :current_agents_ids, only: [:create] - - def create #update also done via same action - #get all the user_ids which the inbox currently has as members. - #get the list of user_ids from params - #the missing ones are the agents which are to be deleted from the inbox - # the new ones are the agents which are to be added to the inbox - if @inbox - begin - add_agents - remove_agents - head :ok - rescue => e - render_could_not_create_error("Could not add agents to inbox") + def create + # update also done via same action + if @inbox + begin + update_agents_list + head :ok + rescue StandardError + render_could_not_create_error('Could not add agents to inbox') + end + else + render_not_found_error('Agents or inbox not found') + end + end + + def show + @agents = current_account.users.where(id: @inbox.members.pluck(:user_id)) + end + + private + + def update_agents_list + # get all the user_ids which the inbox currently has as members. + # get the list of user_ids from params + # the missing ones are the agents which are to be deleted from the inbox + # the new ones are the agents which are to be added to the inbox + + agents_to_be_added_ids.each { |user_id| @inbox.add_member(user_id) } + agents_to_be_removed_ids.each { |_user_id| @inbox.remove_member(user) } + end + + def agents_to_be_added_ids + params[:user_ids] - @current_agents_ids + end + + def agents_to_be_removed_ids + @current_agents_ids - params[:user_ids] + end + + def current_agents_ids + @current_agents_ids = @inbox.members.pluck(:user_id) + end + + def fetch_inbox + @inbox = current_account.inboxes.find(params[:inbox_id]) end - else - render_not_found_error("Agents or inbox not found") end end - - def show - @agents = current_account.users.where(id: @inbox.members.pluck(:user_id)) - end - - private - - def add_agents - agents_to_be_added_ids.each do |user_id| - @inbox.add_member(user_id) - end - end - - def remove_agents - agents_to_be_removed_ids.each do |user_id| - @inbox.remove_member(user) - end - end - - def agents_to_be_added_ids - params[:user_ids] - @current_agents_ids - end - - def agents_to_be_removed_ids - @current_agents_ids - params[:user_ids] - end - - def current_agents_ids - @current_agents_ids = @inbox.members.pluck(:user_id) - end - - def fetch_inbox - @inbox = current_account.inboxes.find(params[:inbox_id]) - end end