Skip to content

Commit 128fc2b

Browse files
authored
Merge pull request #4930 from pepetorres1998/4889-add-by-default-storage-filter
Resolves #4889: Add by default storage filter
2 parents dae06db + 5cb2151 commit 128fc2b

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

app/controllers/requests_controller.rb

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ def index
1212
@paginated_requests = @requests.includes(:partner).page(params[:page])
1313
@calculate_product_totals = RequestsTotalItemsService.new(requests: @requests).calculate
1414
@items = current_organization.items.alphabetized.select(:id, :name)
15-
@partners = current_organization.partners.alphabetized.select(:id, :name)
15+
@partners = current_organization.partners.alphabetized.select(:id, :name, :default_storage_location_id)
1616
@statuses = Request.statuses.transform_keys(&:humanize)
1717
@partner_users = User.where(id: @paginated_requests.map(&:partner_user_id)).select(:id, :name, :email)
1818
@request_types = Request.request_types.transform_keys(&:humanize)
19+
@default_storage_locations = StorageLocation.where(id: @partners.map(&:default_storage_location_id))
1920
@selected_request_type = filter_params[:by_request_type]
2021
@selected_request_item = filter_params[:by_request_item_id]
2122
@selected_partner = filter_params[:by_partner]
2223
@selected_status = filter_params[:by_status]
24+
@selected_default_storage_location = filter_params[:by_default_storage_location]
2325

2426
respond_to do |format|
2527
format.html
@@ -73,6 +75,6 @@ def load_items
7375
def filter_params
7476
return {} unless params.key?(:filters)
7577

76-
params.require(:filters).permit(:by_request_item_id, :by_partner, :by_status, :by_request_type)
78+
params.require(:filters).permit(:by_request_item_id, :by_partner, :by_status, :by_request_type, :by_default_storage_location)
7779
end
7880
end

app/models/request.rb

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class Request < ApplicationRecord
4848
# status scope to allow filtering by status
4949
scope :by_status, ->(status) { where(status: status) }
5050
scope :by_request_type, ->(request_type) { where(request_type: request_type) }
51+
scope :by_default_storage_location, ->(default_storage_location) { includes(:partner).where(partners: {default_storage_location_id: default_storage_location}) }
5152
scope :during, ->(range) { where(created_at: range) }
5253
scope :for_csv_export, ->(organization, *) {
5354
where(organization: organization)

app/views/requests/index.html.erb

+3
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
<div class="form-group col-lg-3 col-md-3 col-sm-6 col-xs-12">
5151
<%= filter_select(scope: :by_request_type, collection: @request_types, key: :last, value: :first, selected: @selected_request_type) %>
5252
</div>
53+
<div class="form-group col-lg-3 col-md-3 col-sm-6 col-xs-12">
54+
<%= filter_select(scope: :by_default_storage_location, collection: @default_storage_locations, selected: @selected_default_storage_location) %>
55+
</div>
5356
<div class="form-group col-lg-3 col-md-3 col-sm-6 col-xs-12">
5457
<%= filter_select(scope: :by_status, collection: @statuses, key: :last, value: :first, selected: @selected_status) %>
5558
</div>

docs/user_guide/bank/essentials_requests.md

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ The list contains:
3434
You can filter the Request list by:
3535
- Item
3636
- Partner
37+
- Request Type
38+
- Default Storage Location
3739
- Status
3840
- Date range
3941

spec/system/request_system_spec.rb

+11-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
let(:item1) { create(:item, name: "Good item") }
66
let(:item2) { create(:item, name: "Crap item") }
77
let(:partner1) { create(:partner, name: "This Guy", email: "[email protected]") }
8-
let(:partner2) { create(:partner, name: "That Guy", email: "[email protected]") }
8+
let(:partner2) { create(:partner, name: "That Guy", email: "[email protected]", default_storage_location_id: storage_location.id) }
99
let!(:storage_location) { create(:storage_location, organization: organization) }
1010

1111
before do
@@ -93,6 +93,16 @@
9393
end
9494
end
9595

96+
context "when filtering by default storage location" do
97+
it "constrains the list" do
98+
visit subject
99+
expect(page).to have_css("table tbody tr", count: 5)
100+
select(storage_location.name, from: "filters[by_default_storage_location]")
101+
click_on 'Filter'
102+
expect(page).to have_css("table tbody tr", count: 1)
103+
end
104+
end
105+
96106
context "when exporting as CSV" do
97107
it "respects the applied filters" do
98108
visit subject

0 commit comments

Comments
 (0)