From d066ec40bebaec82fbe07bbc4e5460ab5cb82314 Mon Sep 17 00:00:00 2001 From: Peter Yates Date: Thu, 3 Oct 2024 15:17:21 +0100 Subject: [PATCH] Add low-fi induction recoreding for ABs --- .../teachers/record_outcome_controller.rb | 43 +++++++++++++++++++ .../appropriate_bodies/record_outcome.rb | 17 ++++++++ .../teachers/record_outcome/new.html.erb | 28 ++++++++++++ .../teachers/record_outcome/show.html.erb | 10 +++++ .../teachers/release_ect/new.html.erb | 4 +- .../appropriate_bodies/teachers/show.html.erb | 2 +- config/routes.rb | 2 +- 7 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 app/controllers/appropriate_bodies/teachers/record_outcome_controller.rb create mode 100644 app/services/appropriate_bodies/record_outcome.rb create mode 100644 app/views/appropriate_bodies/teachers/record_outcome/new.html.erb create mode 100644 app/views/appropriate_bodies/teachers/record_outcome/show.html.erb diff --git a/app/controllers/appropriate_bodies/teachers/record_outcome_controller.rb b/app/controllers/appropriate_bodies/teachers/record_outcome_controller.rb new file mode 100644 index 00000000..623b0eac --- /dev/null +++ b/app/controllers/appropriate_bodies/teachers/record_outcome_controller.rb @@ -0,0 +1,43 @@ +module AppropriateBodies + module Teachers + class RecordOutcomeController < AppropriateBodiesController + def new + @teacher = Teacher.find(params[:ab_teacher_id]) + + @pending_induction_submission = PendingInductionSubmission.new + end + + def create + @teacher = Teacher.find(params[:ab_teacher_id]) + @pending_induction_submission = PendingInductionSubmission.new( + **pending_induction_submission_params, + **pending_induction_submission_attributes + ) + + record_outcome = AppropriateBodies::RecordOutcome.new(appropriate_body: @appropriate_body, pending_induction_submission: @pending_induction_submission) + + PendingInductionSubmission.transaction do + if @pending_induction_submission.save(context: :record_outcome) && record_outcome.record_outcome! + redirect_to ab_teacher_record_outcome_path(@teacher) + else + render :new + end + end + end + + def show + @teacher = Teacher.find(params[:ab_teacher_id]) + end + + private + + def pending_induction_submission_params + params.require(:pending_induction_submission).permit(:finished_on, :number_of_terms, :outcome) + end + + def pending_induction_submission_attributes + { appropriate_body_id: @appropriate_body.id, trn: @teacher.trn } + end + end + end +end diff --git a/app/services/appropriate_bodies/record_outcome.rb b/app/services/appropriate_bodies/record_outcome.rb new file mode 100644 index 00000000..01da4e9e --- /dev/null +++ b/app/services/appropriate_bodies/record_outcome.rb @@ -0,0 +1,17 @@ +module AppropriateBodies + class RecordOutcome + def initialize(appropriate_body:, pending_induction_submission:) + @appropriate_body = appropriate_body + @pending_induction_submission = pending_induction_submission + end + + def record_outcome! + # FIXME: implement a proper release process here, + # it needs to close the open inductoin + # period and send an update to TRS with the + # outcome and finish date + + true + end + end +end diff --git a/app/views/appropriate_bodies/teachers/record_outcome/new.html.erb b/app/views/appropriate_bodies/teachers/record_outcome/new.html.erb new file mode 100644 index 00000000..94e83cbb --- /dev/null +++ b/app/views/appropriate_bodies/teachers/record_outcome/new.html.erb @@ -0,0 +1,28 @@ +<% page_data(title: "Record outcome for #{Teachers::Name.new(@teacher).full_name}", error: @pending_induction_submission.errors.any?) %> + +<%= form_with(model: @pending_induction_submission, url: ab_teacher_record_outcome_path(@teacher), method: 'post') do |form| %> + <%= form.govuk_error_summary %> + + <%= + form.govuk_date_field :finished_on, + legend: { + text: "When did #{Teachers::Name.new(@teacher).full_name} finish their induction with you?" + } + %> + + <%= + form.govuk_number_field :number_of_terms, + width: 4, + label: { + size: 'm', + text: "How many terms of induction did #{Teachers::Name.new(@teacher).full_name} spend with you?" + } + %> + + <%= + form.govuk_collection_radio_buttons :outcome, induction_outcome_choices, :identifier, :name, + legend: { text: "What was the outcome of #{Teachers::Name.new(@teacher).full_name}'s induction?", size: 'm' } + %> + + <%= form.govuk_submit %> +<% end %> diff --git a/app/views/appropriate_bodies/teachers/record_outcome/show.html.erb b/app/views/appropriate_bodies/teachers/record_outcome/show.html.erb new file mode 100644 index 00000000..e7c84300 --- /dev/null +++ b/app/views/appropriate_bodies/teachers/record_outcome/show.html.erb @@ -0,0 +1,10 @@ +<% page_data( + title: "#{Teachers::Name.new(@teacher).full_name}'s induction outcome has been recorded", + header: false) +%> + +<%= + govuk_panel(title_text: "Success", text: "#{Teachers::Name.new(@teacher).full_name} has finished their induction") +%> + +<%= govuk_button_link_to("Return to the homepage", ab_path, secondary: true) %> diff --git a/app/views/appropriate_bodies/teachers/release_ect/new.html.erb b/app/views/appropriate_bodies/teachers/release_ect/new.html.erb index aeeabbbf..55366858 100644 --- a/app/views/appropriate_bodies/teachers/release_ect/new.html.erb +++ b/app/views/appropriate_bodies/teachers/release_ect/new.html.erb @@ -1,4 +1,4 @@ -<% page_data(title: "Release #{Teachers::Name.new(@teacher).full_name}", error: false) %> +<% page_data(title: "Release #{Teachers::Name.new(@teacher).full_name}", error: @pending_induction_submission.errors.any?) %> <%= form_with(model: @pending_induction_submission, url: ab_teacher_release_ect_path(@teacher), method: 'post') do |form| %> <%= form.govuk_error_summary %> @@ -17,7 +17,7 @@ size: 'm', text: "How many terms of induction did #{Teachers::Name.new(@teacher).full_name} spend with you?" } - %> + %> <%= form.govuk_submit %> <% end %> diff --git a/app/views/appropriate_bodies/teachers/show.html.erb b/app/views/appropriate_bodies/teachers/show.html.erb index 0c27b72d..fd5178a3 100644 --- a/app/views/appropriate_bodies/teachers/show.html.erb +++ b/app/views/appropriate_bodies/teachers/show.html.erb @@ -2,7 +2,7 @@
<%= govuk_button_link_to("Release ECT", new_ab_teacher_release_ect_path(@teacher), secondary: true) %> - <%= govuk_button_link_to("Record induction outcome", "#", secondary: true) %> + <%= govuk_button_link_to("Record induction outcome", new_ab_teacher_record_outcome_path(@teacher), secondary: true) %>

Early career teacher

diff --git a/config/routes.rb b/config/routes.rb index c2f0d17b..3b7e9104 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -38,7 +38,7 @@ collection do resources :teachers, only: %i[show], controller: 'appropriate_bodies/teachers', as: 'ab_teachers' do resource :release_ect, only: %i[new create show], path: 'release', controller: 'appropriate_bodies/teachers/release_ect' - resource :record_outcome, only: %i[new create show], path: 'record-outcome', controller: 'appropriate_bodies/teachers/release_ect' + resource :record_outcome, only: %i[new create show], path: 'record-outcome', controller: 'appropriate_bodies/teachers/record_outcome' end end namespace :claim_an_ect, path: 'claim-an-ect' do