Skip to content

Commit

Permalink
[CRIMAPP-992] Add passporting benefit partner section (#618)
Browse files Browse the repository at this point in the history
* Add passporting benefit partner section

* Fix linting errors

* WIP update application details to add partner

* WIP add partner to content

* Add partner trust fund, premium bonds and employment

* Add income payments and income benefits

* Update schema version

* Add partner journey feature flag
  • Loading branch information
hiboabd committed Jun 17, 2024
1 parent ec528be commit 0fcf9d4
Show file tree
Hide file tree
Showing 52 changed files with 926 additions and 120 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ gem 'laa-criminal-applications-datastore-api-client',

gem 'laa-criminal-legal-aid-schemas',
github: 'ministryofjustice/laa-criminal-legal-aid-schemas',
tag: 'v1.1.14'
tag: 'v1.1.15'

# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
gem 'sprockets-rails'
Expand Down
6 changes: 3 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ GIT

GIT
remote: https://github.com/ministryofjustice/laa-criminal-legal-aid-schemas.git
revision: 4dc64cdded4f21b042d561f6208b5b907f4d3c91
tag: v1.1.14
revision: ce1b54f373b302f6cb84dce421c2ac0b4d21fed0
tag: v1.1.15
specs:
laa-criminal-legal-aid-schemas (1.1.14)
laa-criminal-legal-aid-schemas (1.1.15)
dry-schema (~> 1.13)
dry-struct (~> 1.6.0)
json-schema (~> 4.0.0)
Expand Down
5 changes: 5 additions & 0 deletions app/controllers/casework/base_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,10 @@ def set_crime_application
app_id_param = params.key?(:crime_application_id) ? params[:crime_application_id] : params[:id]
@crime_application = CrimeApplication.find(app_id_param)
end

def current_crime_application
@crime_application
end
helper_method :current_crime_application
end
end
14 changes: 14 additions & 0 deletions app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,18 @@ def link_to_search_by_caseworker(user_name, user_id)
def closed_action?(action_name)
action_name == 'closed'
end

def subject_t(conjunction = 'and')
if partner_subject?
I18n.t('helpers.subjects.applicant_and_partner', conjunction:)
else
I18n.t('helpers.subjects.applicant')
end
end

def partner_subject?
return false if current_crime_application.partner.blank?

current_crime_application.partner.is_included_in_means_assessment
end
end
26 changes: 17 additions & 9 deletions app/presenters/income_benefits_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,35 @@ def initialize(income_benefits)
)
end

def formatted_income_benefits(ownership_type = 'applicant')
def applicant_income_benefits
formatted_income_benefits('applicant')
end

def partner_income_benefits
formatted_income_benefits('partner')
end

def formatted_income_benefits(ownership_type)
return {} if @income_benefits.blank?

benefits_by_owner(ownership_type)
ordered_benefits
owners_benefits = benefits_by_owner(ownership_type)
ordered_benefits(owners_benefits)
end

private

def benefits_by_owner(ownership_type)
@income_benefits.select! { |income_benefit| income_benefit.ownership_type == ownership_type }
@income_benefits.select { |income_benefit| income_benefit.ownership_type == ownership_type }
end

def ordered_benefits
return {} if @income_benefits.empty?
def ordered_benefits(owners_benefits)
return {} if owners_benefits.blank?

income_benefit_types.index_with { |val| income_benefit_of_type(val) }
income_benefit_types.index_with { |val| income_benefit_of_type(owners_benefits, val) }
end

def income_benefit_of_type(type)
@income_benefits.detect { |income_benefit| income_benefit.payment_type == type }
def income_benefit_of_type(owners_benefits, type)
owners_benefits.detect { |income_benefit| income_benefit.payment_type == type }
end

def income_benefit_types
Expand Down
26 changes: 17 additions & 9 deletions app/presenters/income_payments_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@ def initialize(income_payments)
)
end

def formatted_income_payments(ownership_type = 'applicant')
def applicant_income_payments
formatted_income_payments('applicant')
end

def partner_income_payments
formatted_income_payments('partner')
end

def formatted_income_payments(ownership_type)
return {} if @income_payments.blank?

payments_by_owner(ownership_type)
ordered_payments
owners_payments = payments_by_owner(ownership_type)
ordered_payments(owners_payments)
end

def employment_income
Expand All @@ -23,17 +31,17 @@ def other_work_benefits
private

def payments_by_owner(ownership_type)
@income_payments.select! { |income_payment| income_payment.ownership_type == ownership_type }
@income_payments.select { |income_payment| income_payment.ownership_type == ownership_type }
end

def ordered_payments
return {} if @income_payments.empty?
def ordered_payments(owners_payments)
return {} if owners_payments.blank?

income_payment_types.index_with { |val| income_payment_of_type(val) }
income_payment_types.index_with { |val| income_payment_of_type(owners_payments, val) }
end

def income_payment_of_type(type)
@income_payments.detect { |income_payment| income_payment.payment_type == type }
def income_payment_of_type(owners_payments, type)
owners_payments.detect { |income_payment| income_payment.payment_type == type }
end

def income_payment_types
Expand Down
2 changes: 1 addition & 1 deletion app/presenters/person_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ def phone_number
format_telephone_number(telephone_number)
end

def formatted_applicant_nino
def formatted_nino
return if nino.nil?

nino
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@
locals: {
crime_application: crime_application,
applicant: crime_application.client_details.applicant,
nino: crime_application.applicant.formatted_applicant_nino,
nino: crime_application.applicant.formatted_nino,
applicant_tel: crime_application.applicant.phone_number
} %>
<% if FeatureFlags.partner_journey.enabled? %>
<%= render partial: 'partner_details',
locals: {
crime_application: crime_application,
applicant: crime_application.client_details.applicant,
partner: crime_application.client_details.partner,
nino: crime_application.partner.formatted_nino,
} %>
<% end %>
<%= render partial: 'case_details', object: crime_application.case_details %>
<%= render partial: 'offences', object: crime_application.case_details.offences %>
<%= render partial: 'codefendants', object: crime_application.case_details.codefendants %>
Expand Down
13 changes: 9 additions & 4 deletions app/views/casework/crime_applications/_capital_details.html.erb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<% return if crime_application.means_details.capital_details.will_benefit_from_trust_fund.blank? %>
<%= render(
partial: 'casework/crime_applications/sections/properties',
locals: { capital_details: crime_application.means_details.capital_details }
Expand All @@ -12,10 +14,10 @@
locals: { capital_details: crime_application.means_details.capital_details }
) %>
<%= render(
partial: 'casework/crime_applications/sections/premium_bonds',
locals: { details: crime_application.means_details.capital_details }
) %>
<%= render(partial: 'casework/crime_applications/sections/premium_bonds', locals: { details: crime_application.means_details.capital_details }) %>
<% if FeatureFlags.partner_journey.enabled? %>
<%= render(partial: 'casework/crime_applications/sections/premium_bonds_partner', locals: { details: crime_application.means_details.capital_details }) %>
<% end %>
<%= render(
partial: 'casework/crime_applications/sections/national_savings_certificates',
Expand All @@ -28,5 +30,8 @@
) %>
<%= render partial: 'casework/crime_applications/sections/trust_fund', locals: { capital_details: crime_application.means_details.capital_details } %>
<% if FeatureFlags.partner_journey.enabled? %>
<%= render partial: 'casework/crime_applications/sections/trust_fund_partner', locals: { capital_details: crime_application.means_details.capital_details } %>
<% end %>
<%= render partial: 'casework/crime_applications/sections/other_capital_details', locals: { capital_details: crime_application.means_details.capital_details } %>
26 changes: 24 additions & 2 deletions app/views/casework/crime_applications/_client_details.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,32 @@
<%= label_text(:partner) %>
</dt>
<dd class="govuk-summary-list__value">
<%# TODO Update this when has_partner provided by datastore %>
<%= t(false, scope: 'values') %>
<%= t(applicant.has_partner.presence, scope: 'values') || t(false, scope: 'values') %>
</dd>
</div>

<% if FeatureFlags.partner_journey.enabled? %>
<% if applicant.has_partner == 'no' %>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:relationship_status) %>
</dt>
<dd class="govuk-summary-list__value">
<%= t(applicant.relationship_status, scope: 'values.relationship_status')%>
</dd>
</div>
<% if applicant.relationship_status == 'separated' %>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:separation_date) %>
</dt>
<dd class="govuk-summary-list__value">
<%= l applicant.separation_date, format: :compact %>
</dd>
</div>
<% end %>
<% end %>
<% end %>
<% end %>
</dl>
<% end %>
10 changes: 7 additions & 3 deletions app/views/casework/crime_applications/_income_details.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

<%= render partial: 'casework/crime_applications/sections/employment', locals: { income_details: crime_application.means_details.income_details } %>
<%= render partial: 'casework/crime_applications/sections/income', locals: { income_details: crime_application.means_details.income_details } %>
<%= render partial: 'casework/crime_applications/sections/income_payments', locals: { income_details: crime_application.means_details.income_details, income_payments: crime_application.income_payments.formatted_income_payments } %>
<%= render partial: 'casework/crime_applications/sections/income_benefits', locals: { income_details: crime_application.means_details.income_details, income_benefits: crime_application.income_benefits.formatted_income_benefits } %>
<%= render partial: 'casework/crime_applications/sections/income_payments', locals: { income_details: crime_application.means_details.income_details, income_payments: crime_application.income_payments.applicant_income_payments } %>
<%= render partial: 'casework/crime_applications/sections/income_benefits', locals: { income_details: crime_application.means_details.income_details, income_benefits: crime_application.income_benefits.applicant_income_benefits } %>
<% if FeatureFlags.employment_journey.enabled? %>
<%= render partial: 'casework/crime_applications/sections/employments', locals: { income_details: crime_application.means_details.income_details } %>
<%= render partial: 'casework/crime_applications/sections/employment_income', locals: { employment_income: crime_application.income_payments.employment_income } %>
Expand All @@ -22,5 +22,9 @@
income_details: crime_application.means_details.income_details
}
) %>
<% if FeatureFlags.partner_journey.enabled? %>
<%= render partial: 'casework/crime_applications/sections/income_payments_partner', locals: { income_details: crime_application.means_details.income_details, income_payments: crime_application.income_payments.partner_income_payments } %>
<%= render partial: 'casework/crime_applications/sections/income_benefits_partner', locals: { income_details: crime_application.means_details.income_details, income_benefits: crime_application.income_benefits.partner_income_benefits } %>
<%= render partial: 'casework/crime_applications/sections/partner_employment', locals: { income_details: crime_application.means_details.income_details } %>
<% end %>
<%= render partial: 'casework/crime_applications/sections/other_income_details', locals: { income_details: crime_application.means_details.income_details } %>
12 changes: 11 additions & 1 deletion app/views/casework/crime_applications/_initial.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,19 @@
locals: {
crime_application: crime_application,
applicant: crime_application.client_details.applicant,
nino: crime_application.applicant.formatted_applicant_nino,
nino: crime_application.applicant.formatted_nino,
applicant_tel: crime_application.applicant.phone_number
} %>
<% if FeatureFlags.partner_journey.enabled? %>
<%= render partial: 'partner_details',
locals: {
crime_application: crime_application,
applicant: crime_application.client_details.applicant,
partner: crime_application.client_details.partner,
nino: crime_application.partner.formatted_nino,
} %>
<% end %>
<%= render partial: 'casework/crime_applications/sections/passporting_benefit_check_client',
locals: { crime_application: crime_application, applicant: crime_application.applicant } %>
<%= render partial: 'casework/crime_applications/sections/passporting_benefit_check_partner',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<% return if crime_application.outgoings_details.blank? %>
<% return if crime_application.outgoings_details.housing_payment_type.blank? %>

<h2 class="govuk-heading-l">
<%= label_text(:outgoings_details) %>
Expand Down
98 changes: 98 additions & 0 deletions app/views/casework/crime_applications/_partner_details.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<% if applicant.has_partner == 'yes' %>
<%= govuk_summary_card(title: label_text(:partner_details)) do %>
<dl class="govuk-summary-list">
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:relationship_to_client) %>
</dt>
<dd class="govuk-summary-list__value">
<%= t(applicant.relationship_to_partner, scope: 'values.relationship_to_client') %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:first_name) %>
</dt>
<dd class="govuk-summary-list__value">
<%= partner.first_name %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:last_name) %>
</dt>
<dd class="govuk-summary-list__value">
<%= partner.last_name %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:other_names) %>
</dt>
<dd class="govuk-summary-list__value">
<%= partner.other_names.presence || t(:not_provided, scope: 'values') %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:date_of_birth) %>
</dt>
<dd class="govuk-summary-list__value">
<%= l partner.date_of_birth, format: :compact %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:national_insurance_number) %>
</dt>
<dd class="govuk-summary-list__value">
<%= nino.presence || t(:not_provided, scope: 'values') %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:involvement_in_case) %>
</dt>
<dd class="govuk-summary-list__value">
<%= t(partner.involvement_in_case, scope: 'values.involvement_in_case')%>
</dd>
</div>
<% if partner.involvement_in_case == 'codefendant' %>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:conflict_of_interest) %>
</dt>
<dd class="govuk-summary-list__value">
<%= t(partner.conflict_of_interest, scope: 'values.conflict_of_interest') %>
</dd>
</div>
<% end %>
<% if partner.has_same_address_as_client.present? %>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:has_same_address_as_client) %>
</dt>
<dd class="govuk-summary-list__value">
<%= t(partner.has_same_address_as_client, scope: 'values') %>
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
<%= label_text(:home_address) %>
</dt>
<dd class="govuk-summary-list__value">
<% if partner.has_same_address_as_client == 'yes' %>
<% if applicant.home_address %>
<%= render 'address', address: applicant.home_address %>
<% else %>
<%= t(:no_home_address, scope: 'values') %>
<% end %>
<% else %>
<%= render 'address', address: partner.home_address %>
<% end %>
</dd>
</div>
<% end %>
</dl>
<% end %>
<% end %>
2 changes: 1 addition & 1 deletion app/views/casework/crime_applications/_pse.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
locals: {
crime_application: crime_application,
applicant: crime_application.client_details.applicant,
nino: crime_application.applicant.formatted_applicant_nino,
nino: crime_application.applicant.formatted_nino,
applicant_tel: crime_application.applicant.phone_number
} %>
<%= render partial: 'supporting_evidence', locals: { crime_application: } %>
Expand Down
Loading

0 comments on commit 0fcf9d4

Please sign in to comment.