Skip to content

Commit a01d987

Browse files
committed
Adding new column on assessments table to calculate working day between application being submitted and prioritisation decision being made
1 parent ed53ddb commit a01d987

9 files changed

+145
-79
lines changed

app/jobs/update_working_days_job.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ def perform
1010
update_assessments_submission_to_started
1111
update_assessment_started_to_verification
1212
update_assessment_submission_to_verification
13+
update_assessment_submission_to_prioritisation_decision
1314

1415
update_further_information_requests_assessment_started_to_requested
1516
end
@@ -131,6 +132,23 @@ def update_assessment_submission_to_verification
131132
end
132133
end
133134

135+
def update_assessment_submission_to_prioritisation_decision
136+
Assessment
137+
.joins(:application_form)
138+
.includes(:application_form)
139+
.where.not(application_form: { submitted_at: nil })
140+
.where.not(prioritisation_decision_at: nil)
141+
.find_each do |assessment|
142+
assessment.update!(
143+
working_days_between_submitted_and_prioritisation_decision:
144+
calendar.business_days_between(
145+
assessment.application_form.submitted_at,
146+
assessment.prioritisation_decision_at,
147+
),
148+
)
149+
end
150+
end
151+
134152
def update_further_information_requests_assessment_started_to_requested
135153
FurtherInformationRequest
136154
.joins(:assessment)

app/models/assessment.rb

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,33 @@
44
#
55
# Table name: assessments
66
#
7-
# id :bigint not null, primary key
8-
# age_range_max :integer
9-
# age_range_min :integer
10-
# age_range_note :text default(""), not null
11-
# induction_required :boolean
12-
# prioritisation_decision_at :datetime
13-
# prioritised :boolean
14-
# qualifications_assessor_note :text default(""), not null
15-
# recommendation :string default("unknown"), not null
16-
# recommendation_assessor_note :text default(""), not null
17-
# recommended_at :datetime
18-
# references_verified :boolean
19-
# scotland_full_registration :boolean
20-
# started_at :datetime
21-
# subjects :text default([]), not null, is an Array
22-
# subjects_note :text default(""), not null
23-
# unsigned_consent_document_generated :boolean default(FALSE), not null
24-
# verification_started_at :datetime
25-
# working_days_between_started_and_completed :integer
26-
# working_days_between_started_and_today :integer
27-
# working_days_between_started_and_verification_started :integer
28-
# working_days_between_submitted_and_started :integer
29-
# working_days_between_submitted_and_verification_started :integer
30-
# created_at :datetime not null
31-
# updated_at :datetime not null
32-
# application_form_id :bigint not null
7+
# id :bigint not null, primary key
8+
# age_range_max :integer
9+
# age_range_min :integer
10+
# age_range_note :text default(""), not null
11+
# induction_required :boolean
12+
# prioritisation_decision_at :datetime
13+
# prioritised :boolean
14+
# qualifications_assessor_note :text default(""), not null
15+
# recommendation :string default("unknown"), not null
16+
# recommendation_assessor_note :text default(""), not null
17+
# recommended_at :datetime
18+
# references_verified :boolean
19+
# scotland_full_registration :boolean
20+
# started_at :datetime
21+
# subjects :text default([]), not null, is an Array
22+
# subjects_note :text default(""), not null
23+
# unsigned_consent_document_generated :boolean default(FALSE), not null
24+
# verification_started_at :datetime
25+
# working_days_between_started_and_completed :integer
26+
# working_days_between_started_and_today :integer
27+
# working_days_between_started_and_verification_started :integer
28+
# working_days_between_submitted_and_prioritisation_decision :integer
29+
# working_days_between_submitted_and_started :integer
30+
# working_days_between_submitted_and_verification_started :integer
31+
# created_at :datetime not null
32+
# updated_at :datetime not null
33+
# application_form_id :bigint not null
3334
#
3435
# Indexes
3536
#

config/analytics.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
- working_days_between_submitted_and_started
102102
- working_days_between_started_and_verification_started
103103
- working_days_between_submitted_and_verification_started
104+
- working_days_between_submitted_and_prioritisation_decision
104105
:consent_requests:
105106
- assessment_id
106107
- created_at
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# frozen_string_literal: true
2+
3+
class AddWorkingDayBetweenSubmittedToPrioritisationDecisionToAssessments < ActiveRecord::Migration[
4+
8.0
5+
]
6+
def change
7+
add_column :assessments,
8+
:working_days_between_submitted_and_prioritisation_decision,
9+
:integer
10+
end
11+
end

db/schema.rb

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/diagram.pdf

57 Bytes
Binary file not shown.

spec/factories/assessments.rb

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,33 @@
44
#
55
# Table name: assessments
66
#
7-
# id :bigint not null, primary key
8-
# age_range_max :integer
9-
# age_range_min :integer
10-
# age_range_note :text default(""), not null
11-
# induction_required :boolean
12-
# prioritisation_decision_at :datetime
13-
# prioritised :boolean
14-
# qualifications_assessor_note :text default(""), not null
15-
# recommendation :string default("unknown"), not null
16-
# recommendation_assessor_note :text default(""), not null
17-
# recommended_at :datetime
18-
# references_verified :boolean
19-
# scotland_full_registration :boolean
20-
# started_at :datetime
21-
# subjects :text default([]), not null, is an Array
22-
# subjects_note :text default(""), not null
23-
# unsigned_consent_document_generated :boolean default(FALSE), not null
24-
# verification_started_at :datetime
25-
# working_days_between_started_and_completed :integer
26-
# working_days_between_started_and_today :integer
27-
# working_days_between_started_and_verification_started :integer
28-
# working_days_between_submitted_and_started :integer
29-
# working_days_between_submitted_and_verification_started :integer
30-
# created_at :datetime not null
31-
# updated_at :datetime not null
32-
# application_form_id :bigint not null
7+
# id :bigint not null, primary key
8+
# age_range_max :integer
9+
# age_range_min :integer
10+
# age_range_note :text default(""), not null
11+
# induction_required :boolean
12+
# prioritisation_decision_at :datetime
13+
# prioritised :boolean
14+
# qualifications_assessor_note :text default(""), not null
15+
# recommendation :string default("unknown"), not null
16+
# recommendation_assessor_note :text default(""), not null
17+
# recommended_at :datetime
18+
# references_verified :boolean
19+
# scotland_full_registration :boolean
20+
# started_at :datetime
21+
# subjects :text default([]), not null, is an Array
22+
# subjects_note :text default(""), not null
23+
# unsigned_consent_document_generated :boolean default(FALSE), not null
24+
# verification_started_at :datetime
25+
# working_days_between_started_and_completed :integer
26+
# working_days_between_started_and_today :integer
27+
# working_days_between_started_and_verification_started :integer
28+
# working_days_between_submitted_and_prioritisation_decision :integer
29+
# working_days_between_submitted_and_started :integer
30+
# working_days_between_submitted_and_verification_started :integer
31+
# created_at :datetime not null
32+
# updated_at :datetime not null
33+
# application_form_id :bigint not null
3334
#
3435
# Indexes
3536
#

spec/jobs/update_working_days_job_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,38 @@
312312
end
313313
end
314314

315+
describe "assessment working days from application form submitted to assessment prioritisation decision" do
316+
let(:assessment_without_prioritisation_flow) do
317+
create(:assessment, application_form: friday_application_form)
318+
end
319+
320+
let(:wednesday_assessment_prioritised) do
321+
create(
322+
:assessment,
323+
started_at: wednesday_today,
324+
prioritisation_decision_at: wednesday_today,
325+
application_form: friday_application_form,
326+
)
327+
end
328+
let(:friday_application_form) do
329+
create(:application_form, submitted_at: friday_previous)
330+
end
331+
332+
it "ignores assessment without prioritisation flow" do
333+
expect { perform }.not_to(
334+
change do
335+
assessment_without_prioritisation_flow.reload.working_days_between_submitted_and_prioritisation_decision
336+
end,
337+
)
338+
end
339+
340+
it "sets the working days for assessment that has prioritisation decision" do
341+
expect { perform }.to change {
342+
wednesday_assessment_prioritised.reload.working_days_between_submitted_and_prioritisation_decision
343+
}.to(2)
344+
end
345+
end
346+
315347
describe "assessment working days from application form started to verification" do
316348
let(:not_started_assessment) do
317349
create(:assessment, application_form: friday_application_form)

spec/models/assessment_spec.rb

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,33 @@
44
#
55
# Table name: assessments
66
#
7-
# id :bigint not null, primary key
8-
# age_range_max :integer
9-
# age_range_min :integer
10-
# age_range_note :text default(""), not null
11-
# induction_required :boolean
12-
# prioritisation_decision_at :datetime
13-
# prioritised :boolean
14-
# qualifications_assessor_note :text default(""), not null
15-
# recommendation :string default("unknown"), not null
16-
# recommendation_assessor_note :text default(""), not null
17-
# recommended_at :datetime
18-
# references_verified :boolean
19-
# scotland_full_registration :boolean
20-
# started_at :datetime
21-
# subjects :text default([]), not null, is an Array
22-
# subjects_note :text default(""), not null
23-
# unsigned_consent_document_generated :boolean default(FALSE), not null
24-
# verification_started_at :datetime
25-
# working_days_between_started_and_completed :integer
26-
# working_days_between_started_and_today :integer
27-
# working_days_between_started_and_verification_started :integer
28-
# working_days_between_submitted_and_started :integer
29-
# working_days_between_submitted_and_verification_started :integer
30-
# created_at :datetime not null
31-
# updated_at :datetime not null
32-
# application_form_id :bigint not null
7+
# id :bigint not null, primary key
8+
# age_range_max :integer
9+
# age_range_min :integer
10+
# age_range_note :text default(""), not null
11+
# induction_required :boolean
12+
# prioritisation_decision_at :datetime
13+
# prioritised :boolean
14+
# qualifications_assessor_note :text default(""), not null
15+
# recommendation :string default("unknown"), not null
16+
# recommendation_assessor_note :text default(""), not null
17+
# recommended_at :datetime
18+
# references_verified :boolean
19+
# scotland_full_registration :boolean
20+
# started_at :datetime
21+
# subjects :text default([]), not null, is an Array
22+
# subjects_note :text default(""), not null
23+
# unsigned_consent_document_generated :boolean default(FALSE), not null
24+
# verification_started_at :datetime
25+
# working_days_between_started_and_completed :integer
26+
# working_days_between_started_and_today :integer
27+
# working_days_between_started_and_verification_started :integer
28+
# working_days_between_submitted_and_prioritisation_decision :integer
29+
# working_days_between_submitted_and_started :integer
30+
# working_days_between_submitted_and_verification_started :integer
31+
# created_at :datetime not null
32+
# updated_at :datetime not null
33+
# application_form_id :bigint not null
3334
#
3435
# Indexes
3536
#

0 commit comments

Comments
 (0)