diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index cd501146..3c30a5f0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -29,7 +29,6 @@ def current_partner def verify_status_in_diaper_base if current_partner.status_in_diaper_base == "deactivated" flash[:alert] = 'Your account has been disabled, contact the organization via their email to reactivate' - redirect_to partner_requests_path end end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index e3934f69..98c932f6 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -1,5 +1,6 @@ # Prepares data to be shown to the users for their dashboard. class DashboardController < ApplicationController + before_action :verify_status_in_diaper_base respond_to :html, :js def index diff --git a/app/controllers/family_requests_controller.rb b/app/controllers/family_requests_controller.rb index fb227a7b..b610e9df 100644 --- a/app/controllers/family_requests_controller.rb +++ b/app/controllers/family_requests_controller.rb @@ -14,13 +14,33 @@ def new end def create - children = current_partner.children.active.where.not(item_needed_diaperid: [nil, 0]) - request = FamilyRequestPayloadService.execute(children: children, partner: current_partner) - - FamilyRequestService.execute(request) - - redirect_to partner_requests_path, notice: "Requested items successfuly!" - rescue ActiveModel::ValidationError - render :new + children = current_partner.children.active + children_grouped_by_diaperid = children.group_by(&:item_needed_diaperid) + api_response = DiaperBankClient.send_family_request( + children: children, + partner: current_partner + ) + if api_response + flash[:notice] = "Request sent to diaper bank successfully" + partner_request = PartnerRequest.new( + api_response + .slice("organization_id") + .merge(partner_id: current_partner.id, sent: true, for_families: true) + ) + api_response["requested_items"].each do |item_hash| + partner_request.item_requests.new( + name: item_hash["item_name"], + item_id: item_hash["item_id"], + quantity: item_hash["count"], + ).tap do |item_request| + item_request.children = + children_grouped_by_diaperid[item_hash["item_id"]].to_a + end + end + partner_request.save! + redirect_to partner_requests_path + else + render :new + end end end diff --git a/app/controllers/partner_requests_controller.rb b/app/controllers/partner_requests_controller.rb index e23d4bae..ad244a0e 100644 --- a/app/controllers/partner_requests_controller.rb +++ b/app/controllers/partner_requests_controller.rb @@ -11,8 +11,12 @@ def index end def new - @partner_request = PartnerRequest.new - @partner_request.item_requests.build # required to render the empty items form + if current_partner.partner_status.casecmp("verified").zero? + @partner_request = PartnerRequest.new + @partner_request.item_requests.build # required to render the empty items form + else + redirect_to partner_requests_path, notice: "Please review your application details and submit for approval in order to make a new request." + end end def create diff --git a/app/views/partner_requests/index.html.erb b/app/views/partner_requests/index.html.erb index cf353511..37a779e8 100644 --- a/app/views/partner_requests/index.html.erb +++ b/app/views/partner_requests/index.html.erb @@ -23,6 +23,30 @@ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
diff --git a/spec/features/family_requests_feature_spec.rb b/spec/features/family_requests_feature_spec.rb index a3a2376e..1b8dcbfa 100644 --- a/spec/features/family_requests_feature_spec.rb +++ b/spec/features/family_requests_feature_spec.rb @@ -114,7 +114,6 @@ visit partner_requests_path find_link("Create New Family Essentials Request").click expect(page).to have_text("Your account has been disabled, contact the organization via their email to reactivate") - expect(current_path).to eq(partner_requests_path) end end end diff --git a/spec/requests/partner_requests_spec.rb b/spec/requests/partner_requests_spec.rb index 4337fa06..c96f2995 100644 --- a/spec/requests/partner_requests_spec.rb +++ b/spec/requests/partner_requests_spec.rb @@ -44,23 +44,6 @@ end end - context "when user is authenticated but the status in diaper base is deactivated" do - let!(:partner) { create(:partner, :verified, status_in_diaper_base: "deactivated") } - let!(:user) { create(:user, partner: partner) } - - before do - sign_in user - end - - describe "GET #new" do - it "should not send a request" do - get :new - - expect(response).to have_http_status(302) - end - end - end - context "when user not authenticated" do let!(:partner) { create(:partner) }