@ -104,17 +104,17 @@ module MergeRequestsHelper
end
end
def total_users_after_merge_text ( merge_request )
def total_users_after_merge_text ( merge_request )
count = merge_request . total_visible_users_after_merge || 0
count = merge_request . total_visible_users_after_merge
" #{ " #{ count } user " . pluralize ( count ) } after merge "
" #{ " #{ count } user " . pluralize ( count ) } after merge "
end
end
def total_stock_owners_after_merge_text ( merge_request )
def total_stock_owners_after_merge_text ( merge_request )
count = merge_request . total_stock_owners_after_merge || 0
count = merge_request . total_stock_owners_after_merge
" #{ " #{ count } stock owner " . pluralize ( count ) } after merge "
" #{ " #{ count } stock owner " . pluralize ( count ) } after merge "
end
end
def total_managing_agents_after_merge_text ( merge_request )
def total_managing_agents_after_merge_text ( merge_request )
count = merge_request . total_managing_agents_after_merge || 0
count = merge_request . total_managing_agents_after_merge
" #{ " #{ count } managing agent " . pluralize ( count ) } after merge "
" #{ " #{ count } managing agent " . pluralize ( count ) } after merge "
end
end
@ -126,50 +126,52 @@ module MergeRequestsHelper
relationship_text ( merge_request , " managing_agent " , :managing_agents_organisation_path )
relationship_text ( merge_request , " managing_agent " , :managing_agents_organisation_path )
end
end
def relationship_text ( merge_request , relationship_type , relationship_path_helper )
def related_organisations ( merge_request , relationship_type )
html_content = " "
organisations = merge_request . absorbing_organisation . send ( relationship_type . pluralize ) . visible + merge_request . merging_organisations . flat_map { | org | org . send ( relationship_type . pluralize ) . visible }
duplicates = duplicate_relationships ( merge_request , relationship_type )
organisations += [ merge_request . absorbing_organisation ] + merge_request . merging_organisations
organisations_without_relationships = ( [ merge_request . absorbing_organisation ] + merge_request . merging_organisations ) . select { | org | org . send ( relationship_type . pluralize ) . visible . empty? }
organisations . group_by { | relationship | relationship } . select { | _ , occurrences | occurrences . size > 1 } . keys
end
if duplicates . any?
def relationship_text ( merge_request , relationship_type , organisation_path_helper )
html_content += " Some of the organisations merging have common #{ relationship_type . humanize ( capitalize : false ) . pluralize } .<br><br> "
text = " "
end
organisations_without_relationships = organisations_without_relationships ( merge_request , relationship_type )
if organisations_without_relationships . any?
text += related_organisations_text ( merge_request , relationship_type )
org_names = organisations_without_relationships . map ( & :name ) . to_sentence
text += organisations_without_relationships_text ( organisations_without_relationships , relationship_type )
verb = organisations_without_relationships . count > 1 ? " have " : " has "
html_content += " #{ org_names } #{ verb } no #{ relationship_type . humanize ( capitalize : false ) . pluralize } .<br><br> "
end
( [ merge_request . absorbing_organisation ] + merge_request . merging_organisations ) . each do | org |
( [ merge_request . absorbing_organisation ] + merge_request . merging_organisations ) . each do | org |
relationship_count = org . send ( relationship_type . pluralize ) . visible . count
organisation_count = org . send ( relationship_type . pluralize ) . visible . count
next if relationship_count . zero?
next if organisation_count . zero?
link_text = if relationship_count == 1
link_text = generate_link_text ( organisation_count , org , relationship_type )
" View the #{ relationship_count } #{ org . name } #{ relationship_type . humanize ( capitalize : false ) } (opens in a new tab) "
text += " #{ govuk_link_to ( link_text , send ( organisation_path_helper , org ) , target : '_blank' ) } <br><br> "
else
" View all #{ relationship_count } #{ org . name } #{ relationship_type . humanize ( capitalize : false ) . pluralize } (opens in a new tab) "
end
html_content += " #{ govuk_link_to ( link_text , send ( relationship_path_helper , org ) , target : '_blank' ) } <br><br> "
end
end
html_conten t. html_safe
text . html_safe
end
end
def duplicate_relationships ( merge_request , relationship_type )
def organisations_without_relationships ( merge_request , relationship_type )
relationships = merge_request . absorbing_organisation . send ( relationship_type . pluralize ) + merge_request . merging_organisations . flat_map { | org | org . send ( relationship_type . pluralize ) }
( [ merge_request . absorbing_organisation ] + merge_request . merging_organisations ) . select { | org | org . send ( relationship_type . pluralize ) . visible . empty? }
seen = Set . new
end
duplicates = [ ]
relationships . each do | relationship |
def related_organisations_text ( merge_request , relationship_type )
if seen . include? ( relationship )
if related_organisations ( merge_request , relationship_type ) . any?
duplicates << relationship
" Some of the organisations merging have common #{ relationship_type . humanize ( capitalize : false ) . pluralize } .<br><br> "
else
else
seen . add ( relationship )
" "
end
end
end
end
def organisations_without_relationships_text ( organisations_without_relationships , relationship_type )
return " " unless organisations_without_relationships . any?
org_names = organisations_without_relationships . map ( & :name ) . to_sentence
verb = organisations_without_relationships . count > 1 ? " have " : " has "
" #{ org_names } #{ verb } no #{ relationship_type . humanize ( capitalize : false ) . pluralize } .<br><br> "
end
duplicates
def generate_link_text ( organisation_count , org , relationship_type )
" View #{ organisation_count == 1 ? 'the' : 'all' } #{ organisation_count } #{ org . name } #{ relationship_type . humanize ( capitalize : false ) . pluralize ( organisation_count ) } (opens in a new tab) "
end
end
def merging_organisations_without_schemes_text ( organisations )
def merging_organisations_without_schemes_text ( organisations )
@ -188,7 +190,7 @@ module MergeRequestsHelper
end
end
def total_schemes_after_merge_text ( merge_request )
def total_schemes_after_merge_text ( merge_request )
count = merge_request . total_visible_schemes_after_merge || 0
count = merge_request . total_visible_schemes_after_merge
" #{ " #{ count } scheme " . pluralize ( count ) } after merge "
" #{ " #{ count } scheme " . pluralize ( count ) } after merge "
end
end
end
end