From 2f46c05690e6537a885fa4394169a55c91e2e375 Mon Sep 17 00:00:00 2001 From: Sean Craig <110493538+seancva@users.noreply.github.com> Date: Thu, 21 Dec 2023 15:38:18 -0600 Subject: [PATCH] SeanC/APPEALS-5034 Decided non-comp issues are not getting closed as decided (#20126) * added basic code to meet ac * updated code in decsion reveiw task * updated code to set the completed_by as well * started refactoring handle_issues_with_no_decision_date! * refactored function to reduce cyclomatic complexity * fixed a code climate issue * attempting to fix a code climate issue * moved handle_issues_with_no_decision_date! to decision_review to fix code climate issue * Empty-Commit * put function back * fixed the failing tests in decision_review_task_spec * Added _current_user to complete_with_payload in business_line_task * fixed a test in board_grant_effectuation_task_spec * created a new def in request_issues for active or decided * added the new def to the serializer * changed the name of activeRequestIssues to activeOrDecidedRequestIssues * updated business_line_task to set completed_by for board grants * added basic code to meet ac * updated code in decsion reveiw task * updated code to set the completed_by as well * started refactoring handle_issues_with_no_decision_date! * refactored function to reduce cyclomatic complexity * fixed a code climate issue * attempting to fix a code climate issue * moved handle_issues_with_no_decision_date! to decision_review to fix code climate issue * Empty-Commit * put function back * fixed the failing tests in decision_review_task_spec * Added _current_user to complete_with_payload in business_line_task * fixed a test in board_grant_effectuation_task_spec * created a new def in request_issues for active or decided * added the new def to the serializer * changed the name of activeRequestIssues to activeOrDecidedRequestIssues * updated business_line_task to set completed_by for board grants * addressing first comment from review * addressed the second comment of review --- .../decision_reviews_controller.rb | 2 +- app/models/claim_review.rb | 6 ++-- app/models/concerns/business_line_task.rb | 4 +-- app/models/request_issue.rb | 4 +++ .../decision_review_task_serializer.rb | 3 +- app/models/tasks/decision_review_task.rb | 7 +++-- client/.storybook/utils.js | 28 +++++++++---------- client/app/nonComp/components/Disposition.jsx | 2 +- .../nonCompTaskPage/nonCompTaskPageData.js | 2 +- ...grant_effectuation_task_serializer_spec.rb | 6 ++-- .../decision_review_task_serializer_spec.rb | 8 +++--- .../board_grant_effectuation_task_spec.rb | 2 +- .../models/tasks/decision_review_task_spec.rb | 10 +++++-- 13 files changed, 49 insertions(+), 35 deletions(-) diff --git a/app/controllers/decision_reviews_controller.rb b/app/controllers/decision_reviews_controller.rb index 4d9363b1481..0d46cfaa441 100644 --- a/app/controllers/decision_reviews_controller.rb +++ b/app/controllers/decision_reviews_controller.rb @@ -52,7 +52,7 @@ def show def update if task - if task.complete_with_payload!(decision_issue_params, decision_date) + if task.complete_with_payload!(decision_issue_params, decision_date, current_user) business_line.tasks.reload render json: { task_filter_details: task_filter_details }, status: :ok else diff --git a/app/models/claim_review.rb b/app/models/claim_review.rb index b56e7cd4a56..952236380c3 100644 --- a/app/models/claim_review.rb +++ b/app/models/claim_review.rb @@ -102,11 +102,13 @@ def handle_issues_with_no_decision_date! # Guard clause to only perform this update for VHA claim reviews for now return nil if benefit_type != "vha" + review_task = tasks.find { |task| task.is_a?(DecisionReviewTask) } + + return nil unless review_task&.open? + if request_issues_without_decision_dates? - review_task = tasks.find { |task| task.is_a?(DecisionReviewTask) } review_task&.on_hold! elsif !request_issues_without_decision_dates? - review_task = tasks.find { |task| task.is_a?(DecisionReviewTask) } review_task&.assigned! end end diff --git a/app/models/concerns/business_line_task.rb b/app/models/concerns/business_line_task.rb index 3faf4a5ee35..978e6692316 100644 --- a/app/models/concerns/business_line_task.rb +++ b/app/models/concerns/business_line_task.rb @@ -3,10 +3,10 @@ module BusinessLineTask extend ActiveSupport::Concern - def complete_with_payload!(_decision_issue_params, _decision_date) + def complete_with_payload!(_decision_issue_params, _decision_date, user) return false unless validate_task - update!(status: Constants.TASK_STATUSES.completed, closed_at: Time.zone.now) + update!(status: Constants.TASK_STATUSES.completed, closed_at: Time.zone.now, completed_by: user) end private diff --git a/app/models/request_issue.rb b/app/models/request_issue.rb index 3ae0da375b7..99fdbc5ad4b 100644 --- a/app/models/request_issue.rb +++ b/app/models/request_issue.rb @@ -160,6 +160,10 @@ def active_or_ineligible_or_withdrawn active_or_ineligible.or(withdrawn) end + def active_or_decided + active.or(decided).order(id: :asc) + end + def active_or_decided_or_withdrawn active.or(decided).or(withdrawn).order(id: :asc) end diff --git a/app/models/serializers/work_queue/decision_review_task_serializer.rb b/app/models/serializers/work_queue/decision_review_task_serializer.rb index 7455091447b..3d7940f3ce7 100644 --- a/app/models/serializers/work_queue/decision_review_task_serializer.rb +++ b/app/models/serializers/work_queue/decision_review_task_serializer.rb @@ -72,7 +72,8 @@ def self.representative_tz(object) uuid: decision_review(object).uuid, isLegacyAppeal: false, issueCount: issue_count(object), - activeRequestIssues: skip_acquiring_request_issues || request_issues(object).active.map(&:serialize), + activeOrDecidedRequestIssues: + skip_acquiring_request_issues || request_issues(object).active_or_decided.map(&:serialize), appellant_type: decision_review(object).claimant&.type } end diff --git a/app/models/tasks/decision_review_task.rb b/app/models/tasks/decision_review_task.rb index 40c42443f5c..534e897e7cd 100644 --- a/app/models/tasks/decision_review_task.rb +++ b/app/models/tasks/decision_review_task.rb @@ -25,12 +25,15 @@ def ui_hash serialize_task[:attributes] end - def complete_with_payload!(decision_issue_params, decision_date) + def complete_with_payload!(decision_issue_params, decision_date, user) return false unless validate_task(decision_issue_params) transaction do appeal.create_decision_issues_for_tasks(decision_issue_params, decision_date) - update!(status: Constants.TASK_STATUSES.completed, closed_at: Time.zone.now) + update!(status: Constants.TASK_STATUSES.completed, closed_at: Time.zone.now, completed_by: user) + decision_issue_params.each do |param| + RequestIssue.find(param[:request_issue_id]).close_decided_issue! + end end appeal.on_decision_issues_sync_processed if appeal.is_a?(HigherLevelReview) diff --git a/client/.storybook/utils.js b/client/.storybook/utils.js index ae01c37f17a..caa9039b69f 100644 --- a/client/.storybook/utils.js +++ b/client/.storybook/utils.js @@ -12,7 +12,7 @@ module.exports = { "id": "6115", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Caregiver | Eligibility", @@ -41,7 +41,7 @@ module.exports = { "id": "6114", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Initial Eligibility and Enrollment in VHA Healthcare", @@ -70,7 +70,7 @@ module.exports = { "id": "17", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Initial Eligibility and Enrollment in VHA Healthcare", @@ -99,7 +99,7 @@ module.exports = { "id": "3f67e4b2-392b-4248-a722-0845b2d3a29e", "isLegacyAppeal": false, "issueCount": 0, - "activeRequestIssues": 0 + "activeOrDecidedRequestIssues": 0 }, "issue_count": 0, "issue_types": "", @@ -128,7 +128,7 @@ module.exports = { "id": "14", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Caregiver | Revocation/Discharge", @@ -157,7 +157,7 @@ module.exports = { "id": "13", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Initial Eligibility and Enrollment in VHA Healthcare", @@ -186,7 +186,7 @@ module.exports = { "id": "5061", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Initial Eligibility and Enrollment in VHA Healthcare", @@ -243,7 +243,7 @@ module.exports = { "id": "5105", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Foreign Medical Program", @@ -272,7 +272,7 @@ module.exports = { "id": "5096", "isLegacyAppeal": false, "issueCount": 2, - "activeRequestIssues": 2 + "activeOrDecidedRequestIssues": 2 }, "issue_count": 2, "issue_types": "Foreign Medical Program,Spina Bifida Treatment (Non-Compensation)", @@ -301,7 +301,7 @@ module.exports = { "id": "5083", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Spina Bifida Treatment (Non-Compensation)", @@ -330,7 +330,7 @@ module.exports = { "id": "5081", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Camp Lejune Family Member", @@ -359,7 +359,7 @@ module.exports = { "id": "5106", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Camp Lejune Family Member", @@ -388,7 +388,7 @@ module.exports = { "id": "5101", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Other", @@ -417,7 +417,7 @@ module.exports = { "id": "5094", "isLegacyAppeal": false, "issueCount": 1, - "activeRequestIssues": 1 + "activeOrDecidedRequestIssues": 1 }, "issue_count": 1, "issue_types": "Caregiver | Other", diff --git a/client/app/nonComp/components/Disposition.jsx b/client/app/nonComp/components/Disposition.jsx index bbbae5ab3b6..14bb3dd0e12 100644 --- a/client/app/nonComp/components/Disposition.jsx +++ b/client/app/nonComp/components/Disposition.jsx @@ -100,7 +100,7 @@ class NonCompDispositions extends React.PureComponent { this.state = { requestIssues: formatRequestIssuesWithDecisionIssues( - this.props.task.appeal.activeRequestIssues, this.props.appeal.decisionIssues), + this.props.task.appeal.activeOrDecidedRequestIssues, this.props.appeal.decisionIssues), decisionDate: '', isFilledOut: false }; diff --git a/client/test/data/queue/nonCompTaskPage/nonCompTaskPageData.js b/client/test/data/queue/nonCompTaskPage/nonCompTaskPageData.js index b1f9cacaf35..f9b5a73ea86 100644 --- a/client/test/data/queue/nonCompTaskPage/nonCompTaskPageData.js +++ b/client/test/data/queue/nonCompTaskPage/nonCompTaskPageData.js @@ -19,7 +19,7 @@ const completedHLRTaskData = { id: '17', isLegacyAppeal: false, issueCount: 1, - activeRequestIssues: [ + activeOrDecidedRequestIssues: [ { id: 3710, rating_issue_reference_id: null, diff --git a/spec/models/serializers/work_queue/board_grant_effectuation_task_serializer_spec.rb b/spec/models/serializers/work_queue/board_grant_effectuation_task_serializer_spec.rb index 298888ba62c..0ea771d2fe1 100644 --- a/spec/models/serializers/work_queue/board_grant_effectuation_task_serializer_spec.rb +++ b/spec/models/serializers/work_queue/board_grant_effectuation_task_serializer_spec.rb @@ -21,7 +21,7 @@ id: appeal.external_id, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: appeal.uuid, appellant_type: appeal.claimant.type }, @@ -75,7 +75,7 @@ id: appeal.external_id, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: appeal.uuid, appellant_type: appeal.claimant.type }, @@ -134,7 +134,7 @@ id: appeal.external_id, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: appeal.uuid, appellant_type: appeal.claimant.type }, diff --git a/spec/models/serializers/work_queue/decision_review_task_serializer_spec.rb b/spec/models/serializers/work_queue/decision_review_task_serializer_spec.rb index 950ed5d22bd..14bde4b4541 100644 --- a/spec/models/serializers/work_queue/decision_review_task_serializer_spec.rb +++ b/spec/models/serializers/work_queue/decision_review_task_serializer_spec.rb @@ -27,7 +27,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: task.appeal.uuid, appellant_type: "VeteranClaimant" }, @@ -76,7 +76,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: task.appeal.uuid, appellant_type: nil }, @@ -128,7 +128,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: task.appeal.uuid, appellant_type: claimant.type }, @@ -192,7 +192,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 2, - activeRequestIssues: serialized_issues, + activeOrDecidedRequestIssues: serialized_issues, appellant_type: "VeteranClaimant", uuid: task.appeal.uuid }, diff --git a/spec/models/tasks/board_grant_effectuation_task_spec.rb b/spec/models/tasks/board_grant_effectuation_task_spec.rb index a89cde82fce..a5ed6ed09e1 100644 --- a/spec/models/tasks/board_grant_effectuation_task_spec.rb +++ b/spec/models/tasks/board_grant_effectuation_task_spec.rb @@ -13,7 +13,7 @@ end describe "#complete_with_payload!" do - subject { task.complete_with_payload!(nil, nil) } + subject { task.complete_with_payload!(nil, nil, nil) } context "assigned task" do it "can be completed" do diff --git a/spec/models/tasks/decision_review_task_spec.rb b/spec/models/tasks/decision_review_task_spec.rb index a7a25ff472f..8268fe2ca42 100644 --- a/spec/models/tasks/decision_review_task_spec.rb +++ b/spec/models/tasks/decision_review_task_spec.rb @@ -5,6 +5,8 @@ let(:benefit_type) { "education" } + let(:user) { create(:default_user) } + describe "#label" do subject { create(:higher_level_review_task) } @@ -60,7 +62,7 @@ ] end let(:task) { create(:higher_level_review_task, trait, appeal: hlr) } - subject { task.complete_with_payload!(decision_issue_params, decision_date) } + subject { task.complete_with_payload!(decision_issue_params, decision_date, user) } context "assigned task" do it "can be completed" do @@ -85,6 +87,8 @@ caseflow_decision_date: caseflow_decision_date )).to_not be_nil expect(task.status).to eq "completed" + expect(task.completed_by_id).to eq user.id + expect(task.appeal.request_issues.first.closed_status).to eq "decided" remand_sc = hlr.remand_supplemental_claims.first expect(remand_sc).to_not be_nil @@ -123,7 +127,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], appellant_type: "VeteranClaimant", uuid: hlr.uuid }, @@ -167,7 +171,7 @@ id: hlr.id.to_s, isLegacyAppeal: false, issueCount: 0, - activeRequestIssues: [], + activeOrDecidedRequestIssues: [], uuid: hlr.uuid, appellant_type: "VeteranClaimant" },