Skip to content

Commit

Permalink
PWNN-1653 Request Case Origin from E&O during Create Case
Browse files Browse the repository at this point in the history
  • Loading branch information
cocoaken committed Sep 22, 2023
1 parent 5a6827d commit 3b1628f
Show file tree
Hide file tree
Showing 24 changed files with 202 additions and 68 deletions.
44 changes: 23 additions & 21 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ GEM
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (6.0.1)
brow (0.4.1)
builder (3.2.4)
bullet (7.0.7)
activesupport (>= 3.0.0)
Expand Down Expand Up @@ -187,7 +188,7 @@ GEM
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
dry-schema (1.13.2)
dry-schema (1.13.3)
concurrent-ruby (~> 1.0)
dry-configurable (~> 1.0, >= 1.0.1)
dry-core (~> 1.0, < 2)
Expand Down Expand Up @@ -220,7 +221,7 @@ GEM
exception_notification (4.5.0)
actionmailer (>= 5.2, < 8)
activesupport (>= 5.2, < 8)
execjs (2.8.1)
execjs (2.9.0)
factory_bot (6.2.1)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
Expand All @@ -241,23 +242,24 @@ GEM
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
flipper (0.28.3)
flipper (1.0.0)
brow (~> 0.4.1)
concurrent-ruby (< 2)
flipper-active_record (0.28.3)
flipper-active_record (1.0.0)
activerecord (>= 4.2, < 8)
flipper (~> 0.28.3)
flipper-ui (0.28.3)
flipper (~> 1.0.0)
flipper-ui (1.0.0)
erubi (>= 1.0.0, < 2.0.0)
flipper (~> 0.28.3)
rack (>= 1.4, < 3)
flipper (~> 1.0.0)
rack (>= 1.4, < 4)
rack-protection (>= 1.5.3, <= 4.0.0)
sanitize (< 7)
foreman (0.87.2)
fugit (1.8.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
globalid (1.1.0)
activesupport (>= 5.0)
globalid (1.2.1)
activesupport (>= 6.1)
govuk_design_system_formbuilder (4.1.1)
actionview (>= 6.1)
activemodel (>= 6.1)
Expand Down Expand Up @@ -341,7 +343,7 @@ GEM
mini_mime (1.1.5)
mini_racer (0.8.0)
libv8-node (~> 18.16.0.0)
minitest (5.19.0)
minitest (5.20.0)
mock_redis (0.37.0)
msgpack (1.7.2)
multi_json (1.15.0)
Expand All @@ -358,11 +360,11 @@ GEM
net-smtp (0.3.3)
net-protocol
nio4r (2.5.9)
nokogiri (1.15.3-arm64-darwin)
nokogiri (1.15.4-arm64-darwin)
racc (~> 1.4)
nokogiri (1.15.3-x86_64-darwin)
nokogiri (1.15.4-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.15.3-x86_64-linux)
nokogiri (1.15.4-x86_64-linux)
racc (~> 1.4)
notifications-ruby-client (5.4.0)
jwt (>= 1.5, < 3)
Expand Down Expand Up @@ -397,7 +399,7 @@ GEM
parser (3.2.2.3)
ast (~> 2.4.1)
racc
pg (1.5.3)
pg (1.5.4)
pg_search (2.3.6)
activerecord (>= 5.2)
activesupport (>= 5.2)
Expand Down Expand Up @@ -454,7 +456,7 @@ GEM
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (7.0.7)
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_layout (1.0.42)
Expand Down Expand Up @@ -491,7 +493,7 @@ GEM
redis-actionpack (>= 5.0, < 6)
redis-activesupport (>= 5.0, < 6)
redis-store (>= 1.2, < 2)
redis-store (1.9.2)
redis-store (1.10.0)
redis (>= 4, < 6)
regexp_parser (2.8.1)
request_store (1.5.1)
Expand Down Expand Up @@ -591,7 +593,7 @@ GEM
spring (4.1.1)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
sprockets (4.2.0)
sprockets (4.2.1)
concurrent-ruby (~> 1.0)
rack (>= 2.2.4, < 4)
sprockets-rails (3.4.2)
Expand All @@ -607,7 +609,7 @@ GEM
faraday-follow_redirects
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terser (1.1.17)
terser (1.1.18)
execjs (>= 0.3.0, < 3)
thor (1.2.2)
timeout (0.4.0)
Expand All @@ -628,7 +630,7 @@ GEM
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
web-console (4.2.0)
web-console (4.2.1)
actionview (>= 6.0.0)
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
Expand All @@ -637,7 +639,7 @@ GEM
activesupport
faraday (~> 2.0)
faraday-follow_redirects
webmock (3.18.1)
webmock (3.19.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
Expand Down
1 change: 1 addition & 0 deletions app/assets/config/manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
//= link_tree ../../javascript/faf
//= link_tree ../../javascript/misc
//= link_tree ../../javascript/request
//= link_tree ../../javascript/discovery_method
//= link_tree ../../javascript/google-tag-manager
2 changes: 2 additions & 0 deletions app/controllers/engagement/cases_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ def form_params
:email,
:phone_number,
:extension_number,
:discovery_method,
:discovery_method_other_text,
:category_id,
:query_id,
:other_category,
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/support/cases/previews_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ def form_params
:email,
:phone_number,
:extension_number,
:discovery_method,
:discovery_method_other_text,
:category_id,
:query_id,
:other_category,
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/support/cases_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ def form_params
:email,
:phone_number,
:extension_number,
:discovery_method,
:discovery_method_other_text,
:category_id,
:query_id,
:estimated_procurement_completion_date,
Expand Down
2 changes: 2 additions & 0 deletions app/forms/support/create_case_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ class CreateCaseForm
option :email, optional: true
option :phone_number, optional: true
option :extension_number, optional: true
option :discovery_method, optional: true
option :discovery_method_other_text, optional: true
option :source, optional: true
option :creation_source, optional: true
option :procurement_amount, ->(value) { value&.gsub(/[£,]/, "") }, optional: true
Expand Down
14 changes: 14 additions & 0 deletions app/forms/support/create_case_form_schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ class CreateCaseFormSchema < ::Support::Schema
required(:last_name).value(:string)
required(:email).value(:string)
required(:source).value(:string)

required(:discovery_method).value(:integer)
required(:discovery_method_other_text).value(:str?)

optional(:organisation_id).value(:string)
optional(:organisation_type).value(:string)
optional(:organisation_name).value(:string)
Expand Down Expand Up @@ -60,6 +64,16 @@ class CreateCaseFormSchema < ::Support::Schema
key(:source).failure(:missing) if value.blank?
end

rule(:discovery_method) do
key.failure(:invalid) if
value < (Support::Case::discovery_methods.values.min()) ||
value > (Support::Case::discovery_methods.values.max())
end

rule(:discovery_method_other_text) do
key(:discovery_method_other_text).failure(:missing) if value.blank? && values[:discovery_method].eql?(Support::Case::discovery_methods.keys.index("other"))
end

rule(:procurement_amount) do
validator = Support::Forms::ValidateProcurementAmount.new(value)
key(:procurement_amount).failure(:invalid) if validator.invalid_number?
Expand Down
12 changes: 12 additions & 0 deletions app/models/support/case.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,18 @@ class Case < ApplicationRecord
# faf - find a framework
enum source: { digital: 0, nw_hub: 1, sw_hub: 2, incoming_email: 3, faf: 4, engagement_and_outreach: 5, schools_commercial_team: 6, engagement_and_outreach_cms: 7 }

# Discovery Method
#
# used_before - I've used this service before
# meeting_or_event - Meeting or event
# newsletter - Newsletter
# recommendation - Recommendation
# search_engine - Search engine, such as Google
# social_media - Social media, such as Twitter
# website - Website, such as GOV.UK
# other - Other
enum discovery_method: { used_before: 0, meeting_or_event: 1, newsletter: 2, recommendation: 3, search_engine: 4, social_media: 5, website: 6, other: 7 }

# Creation Source
#
# default - created by a member of the ProcOps team
Expand Down
2 changes: 2 additions & 0 deletions app/services/support/create_case.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ def call
email: @attrs[:email],
phone_number: @attrs[:phone_number],
extension_number: @attrs[:extension_number],
discovery_method: @attrs[:discovery_method],
discovery_method_other_text: @attrs[:discovery_method_other_text],
request_text: @attrs[:request_text],
action_required: @attrs.fetch(:action_required, false),
procurement_amount: @attrs[:procurement_amount],
Expand Down
2 changes: 2 additions & 0 deletions app/views/engagement/cases/forms/_create_case_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
<%= form.govuk_phone_field :phone_number, label: { text: I18n.t("support.case_hub_migration.label.phone_number", optional: I18n.t("support.generic.form.optional")) } %>
<%= form.govuk_phone_field :extension_number, label: { text: I18n.t("support.case_hub_migration.label.extension_number", optional: I18n.t("support.generic.form.optional")) } %>

<%= render "support/cases/discovery_method/discovery_method", form: form %>

<%= render "support/cases/request_details/form_fields", form: form, show_request_text: false %>

<%= form.govuk_text_field :procurement_amount, width: 5,
Expand Down
35 changes: 20 additions & 15 deletions app/views/engagement/cases/previews/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,26 @@
</dd>
</div>
</dl>

<h2 class="govuk-heading-m">
<%= I18n.t("support.case.label.discovery_method.legend") %>
</h2>

<dl class="govuk-summary-list govuk-!-margin-bottom-9">
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= I18n.t("support.case.label.discovery_method.field") %>
</dt>
<dd class="govuk-summary-list__value">
<%= I18n.t("support.case.label.discovery_method.#{Support::Case::discovery_methods.keys[@form.discovery_method]}") %>
<%= if @form.discovery_method == Support::Case::discovery_methods[:other] && !@form.discovery_method_other_text.empty? then "- #{@form.discovery_method_other_text}" end %>
</dd>
<dd id="changeDiscoveryMethod" class="govuk-summary-list__actions">
<%= form.button I18n.t("generic.button.change_answer"), class: "govuk-link", value: "change" %>
</dd>
</div>
</dl>


<h2 class="govuk-heading-m">
<%= I18n.t("support.case_hub_migration.edit.section.case") %>
Expand Down Expand Up @@ -163,21 +183,6 @@
<% end %>
</dl>

<h2 class="govuk-heading-m">
<%= I18n.t("support.case_hub_migration.edit.section.source") %>
</h2>

<dl class="govuk-summary-list govuk-!-margin-bottom-9">
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= I18n.t("support.case_hub_migration.label.case_source") %>
</dt>
<dd class="govuk-summary-list__value">
<%= I18n.t("support.case.label.source.#{@form.source}") %>
</dd>
</div>
</dl>

<h2 class="govuk-heading-m">
<%= I18n.t("support.case_hub_migration.edit.section.request_text") %>
</h2>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<%= form.govuk_radio_buttons_fieldset :discovery_method, class: "discovery-method-radios", legend: { size: 'm', text: I18n.t("support.case.label.discovery_method.legend") }, "data-controller": "discovery-method" do %>

<%= form.govuk_radio_button :discovery_method, '0', label: { text: I18n.t("support.case.label.discovery_method.used_before") }, link_errors: true %>
<%= form.govuk_radio_button :discovery_method, '1', label: { text: I18n.t("support.case.label.discovery_method.meeting_or_event") } %>
<%= form.govuk_radio_button :discovery_method, '2', label: { text: I18n.t("support.case.label.discovery_method.newsletter") } %>
<%= form.govuk_radio_button :discovery_method, '3', label: { text: I18n.t("support.case.label.discovery_method.recommendation") } %>
<%= form.govuk_radio_button :discovery_method, '4', label: { text: I18n.t("support.case.label.discovery_method.search_engine") } %>
<%= form.govuk_radio_button :discovery_method, '5', label: { text: I18n.t("support.case.label.discovery_method.social_media") } %>
<%= form.govuk_radio_button :discovery_method, '6', label: { text: I18n.t("support.case.label.discovery_method.website") } %>
<%= form.govuk_radio_button :discovery_method, '7', label: { text: I18n.t("support.case.label.discovery_method.other") } do %>
<%= form.govuk_text_field :discovery_method_other_text,
id: "discovery_method_other_text",
label: { text: I18n.t("support.case.label.discovery_method.other_text_field") },
link_errors: true
%>
<% end %>
<% end %>
4 changes: 2 additions & 2 deletions app/views/support/cases/forms/_create_case_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
label: { text: I18n.t("support.case_hub_migration.label.extension_number", optional: I18n.t("support.generic.form.optional")) }
%>

<%= render "support/cases/discovery_method/discovery_method", form: form %>

<%= render "support/cases/request_details/form_fields", form: form, show_request_text: false %>

<%= form.govuk_text_field :procurement_amount, width: 5,
Expand All @@ -55,8 +57,6 @@
<%= form.govuk_select(:source,
[
["Please select", ""],
[I18n.t("support.case.label.source.nw_hub"), "nw_hub"],
[I18n.t("support.case.label.source.sw_hub"), "sw_hub"],
[I18n.t("support.case.label.source.engagement_and_outreach"), "engagement_and_outreach"],
[I18n.t("support.case.label.source.schools_commercial_team"), "schools_commercial_team"]
],
Expand Down
Loading

0 comments on commit 3b1628f

Please sign in to comment.