From 45f88396347d8d69ed731d42c57d3ba640c6791a Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 11 Sep 2024 16:33:15 +0100 Subject: [PATCH] Mark related bulk uploads as cancelled by user --- app/models/user.rb | 9 +++++++ .../20240911152702_add_moved_user_to_bu.rb | 5 ++++ db/schema.rb | 3 ++- spec/models/user_spec.rb | 26 +++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20240911152702_add_moved_user_to_bu.rb diff --git a/app/models/user.rb b/app/models/user.rb index bdf72d7e9..7a0c5485d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -312,6 +312,7 @@ class User < ApplicationRecord unassign_organisations(lettings_logs_to_reassign, sales_logs_to_reassign, current_organisation) end + cancel_related_bulk_uploads send_organisation_change_email(current_organisation, new_organisation, log_reassignment, logs_count) rescue StandardError => e Rails.logger.error("User update failed with: #{e.message}") @@ -401,4 +402,12 @@ private } DeviseNotifyMailer.new.send_email(email, template_id, personalisation) end + + def cancel_related_bulk_uploads + lettings_bu_ids = LettingsLog.where(assigned_to: self, status: "pending").map(&:bulk_upload_id).compact.uniq + BulkUpload.where(id: lettings_bu_ids).update!(choice: "cancelled-by-moved-user", moved_user_id: id) + + sales_bu_ids = SalesLog.where(assigned_to: self, status: "pending").map(&:bulk_upload_id).compact.uniq + BulkUpload.where(id: sales_bu_ids).update!(choice: "cancelled-by-moved-user", moved_user_id: id) + end end diff --git a/db/migrate/20240911152702_add_moved_user_to_bu.rb b/db/migrate/20240911152702_add_moved_user_to_bu.rb new file mode 100644 index 000000000..9a6079858 --- /dev/null +++ b/db/migrate/20240911152702_add_moved_user_to_bu.rb @@ -0,0 +1,5 @@ +class AddMovedUserToBu < ActiveRecord::Migration[7.0] + def change + add_column :bulk_uploads, :moved_user_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 05f9bfde2..2d6808e6f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_08_22_080228) do +ActiveRecord::Schema[7.0].define(version: 2024_09_11_152702) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -42,6 +42,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_08_22_080228) do t.text "choice" t.integer "total_logs_count" t.string "rent_type_fix_status", default: "not_applied" + t.integer "moved_user_id" t.index ["identifier"], name: "index_bulk_uploads_on_identifier", unique: true t.index ["user_id"], name: "index_bulk_uploads_on_user_id" end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 8e43b9f83..5cb6cb580 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -587,6 +587,32 @@ RSpec.describe User, type: :model do expect(user.organisation).not_to eq(new_organisation) end end + + context "and the user has pending logs assigned to them" do + let(:lettings_bu) { create(:bulk_upload, :lettings) } + let(:sales_bu) { create(:bulk_upload, :sales) } + let!(:pending_lettings_log) { build(:lettings_log, status: "pending", assigned_to: user, bulk_upload: lettings_bu) } + let!(:pending_sales_log) { build(:sales_log, status: "pending", assigned_to: user, bulk_upload: sales_bu) } + + before do + pending_lettings_log.skip_update_status = true + pending_lettings_log.save! + pending_sales_log.skip_update_status = true + pending_sales_log.save! + end + + it "sets choice for fixing the logs to cancelled-by-moved-user" do + user.reassign_logs_and_update_organisation(new_organisation, "reassign_all") + + expect(lettings_bu.reload.choice).to eq("cancelled-by-moved-user") + expect(sales_bu.reload.choice).to eq("cancelled-by-moved-user") + expect(lettings_bu.moved_user_id).to eq(user.id) + expect(sales_bu.moved_user_id).to eq(user.id) + + expect(pending_lettings_log.reload.status).to eq("pending") + expect(pending_sales_log.reload.status).to eq("pending") + end + end end context "when reassigning stock owners for logs" do