diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index edf6b624d..0675d42ba 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -1,14 +1,21 @@ module FormattingHelper - def format_ending(value) - return value if value.blank? + def format_ending(text) + return text if text.blank? + + modified_text = lowercase_first_letter(text) + ensure_sentence_ending(modified_text) + end + + def ensure_sentence_ending(text) + return text if text.blank? - ends_with_any_punctuation = value.match?(/[[:punct:]]\z/) - ends_with_special_char = value.match?(/[%(){}\[\]]\z/) + ends_with_any_punctuation = text.match?(/[[:punct:]]\z/) + ends_with_special_char = text.match?(/[%(){}\[\]]\z/) - ends_with_any_punctuation && !ends_with_special_char ? value : "#{value}." + ends_with_any_punctuation && !ends_with_special_char ? text : "#{text}." end - def downcase_first_letter(text) + def lowercase_first_letter(text) return text if text.blank? text[0].downcase + text[1..] diff --git a/app/services/bulk_upload/lettings/year2023/row_parser.rb b/app/services/bulk_upload/lettings/year2023/row_parser.rb index 8c1d11ba5..8c435ad24 100644 --- a/app/services/bulk_upload/lettings/year2023/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2023/row_parser.rb @@ -544,9 +544,9 @@ private fields.each do |field| if setup_question?(question) - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field]))), category: :setup) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field])), category: :setup) else - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field])))) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field]))) end end end @@ -764,14 +764,14 @@ private fields.each do |field| if errors.select { |e| fields.include?(e.attribute) }.none? question_text = question.error_display_label.presence || "this question." - errors.add(field, I18n.t("validations.not_answered", question: downcase(question_text)), category: :setup) if field.present? + errors.add(field, I18n.t("validations.not_answered", question: format_ending(question_text)), category: :setup) if field.present? end end else fields.each do |field| unless errors.any? { |e| fields.include?(e.attribute) } question_text = question.error_display_label.presence || "this question." - errors.add(field, I18n.t("validations.not_answered", question: downcase(question_text)), category: :not_answered) + errors.add(field, I18n.t("validations.not_answered", question: format_ending(question_text)), category: :not_answered) end end end @@ -1607,8 +1607,4 @@ private def is_carehome field_127.present? ? 1 : 0 end - - def downcase(text) - downcase_first_letter(text) - end end diff --git a/app/services/bulk_upload/lettings/year2024/row_parser.rb b/app/services/bulk_upload/lettings/year2024/row_parser.rb index 4c9664a77..33e108d13 100644 --- a/app/services/bulk_upload/lettings/year2024/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2024/row_parser.rb @@ -568,9 +568,9 @@ private fields.each do |field| if setup_question?(question) - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field]))), category: :setup) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field])), category: :setup) else - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field])))) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field]))) end end end @@ -1642,8 +1642,4 @@ private def bulk_upload_organisation Organisation.find(bulk_upload.organisation_id) end - - def downcase(text) - downcase_first_letter(text) - end end diff --git a/app/services/bulk_upload/sales/year2023/row_parser.rb b/app/services/bulk_upload/sales/year2023/row_parser.rb index c90003d15..6a18512aa 100644 --- a/app/services/bulk_upload/sales/year2023/row_parser.rb +++ b/app/services/bulk_upload/sales/year2023/row_parser.rb @@ -1243,13 +1243,13 @@ private if setup_question?(question) fields.each do |field| unless errors.any? { |e| fields.include?(e.attribute) } - errors.add(field, I18n.t("validations.not_answered", question: downcase(question.error_display_label)), category: :setup) + errors.add(field, I18n.t("validations.not_answered", question: question.error_display_label), category: :setup) end end else fields.each do |field| unless errors.any? { |e| fields.include?(e.attribute) } - errors.add(field, I18n.t("validations.not_answered", question: downcase(question.error_display_label)), category: :not_answered) + errors.add(field, I18n.t("validations.not_answered", question: question.error_display_label), category: :not_answered) end end end @@ -1271,13 +1271,13 @@ private fields.each do |field| if errors[field].none? block_log_creation! - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field]))), category: :setup) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field])), category: :setup) end end else fields.each do |field| unless errors.any? { |e| fields.include?(e.attribute) } - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field])))) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field]))) end end end @@ -1335,8 +1335,4 @@ private errors.add(:field_35, "Buyer 1 cannot be a child under 16.") end end - - def downcase(text) - downcase_first_letter(text) - end end diff --git a/app/services/bulk_upload/sales/year2024/row_parser.rb b/app/services/bulk_upload/sales/year2024/row_parser.rb index a650ece92..e16b5d488 100644 --- a/app/services/bulk_upload/sales/year2024/row_parser.rb +++ b/app/services/bulk_upload/sales/year2024/row_parser.rb @@ -1407,13 +1407,13 @@ private fields.each do |field| if errors[field].none? block_log_creation! - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field]))), category: :setup) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field])), category: :setup) end end else fields.each do |field| unless errors.any? { |e| fields.include?(e.attribute) } - errors.add(field, I18n.t("validations.invalid_option", question: format_ending(downcase(QUESTIONS[field])))) + errors.add(field, I18n.t("validations.invalid_option", question: format_ending(QUESTIONS[field]))) end end end @@ -1509,8 +1509,4 @@ private def bulk_upload_organisation Organisation.find(bulk_upload.organisation_id) end - - def downcase(text) - downcase_first_letter(text) - end end