Browse Source

Add generate_unassigned_logs_report

pull/1883/head
Kat 3 years ago
parent
commit
01fce06e11
  1. 31
      app/services/imports/import_report_service.rb
  2. 31
      spec/services/imports/import_report_service_spec.rb

31
app/services/imports/import_report_service.rb

@ -11,6 +11,7 @@ module Imports
def create_reports(report_suffix)
generate_missing_data_coordinators_report(report_suffix)
generate_logs_report(report_suffix)
generate_unassigned_logs_report(report_suffix)
end
def generate_missing_data_coordinators_report(report_suffix)
@ -53,5 +54,35 @@ module Imports
@logger.info("Logs report available in s3 import bucket at #{report_name}")
end
def generate_unassigned_logs_report(report_suffix)
Rails.logger.info("Generating unassigned logs report")
rep = CSV.generate do |report|
headers = ["Owning Organisation ID", "Old Owning Organisation ID", "Managing Organisation ID", "Old Managing Organisation ID", "Log ID", "Old Log ID", "Tenancy code", "Purchaser code"]
report << headers
@institutions_csv.each do |row|
name = row[0]
organisation = Organisation.find_by(name:)
next unless organisation
unassigned_user = organisation.users.find_by(name: "Unassigned")
next unless unassigned_user
organisation.owned_lettings_logs.where(created_by: unassigned_user).each do |lettings_log|
report << [organisation.id, organisation.old_org_id, lettings_log.managing_organisation.id, lettings_log.managing_organisation.old_org_id, lettings_log.id, lettings_log.old_id, lettings_log.tenancycode, nil]
end
organisation.owned_sales_logs.where(created_by: unassigned_user).each do |sales_log|
report << [organisation.id, organisation.old_org_id, nil, nil, sales_log.id, sales_log.old_id, nil, sales_log.purchid]
end
end
end
report_name = "UnassignedLogsReport_#{report_suffix}"
@storage_service.write_file(report_name, BYTE_ORDER_MARK + rep)
@logger.info("Unassigned logs report available in s3 import bucket at #{report_name}")
end
end
end

31
spec/services/imports/import_report_service_spec.rb

@ -67,4 +67,35 @@ RSpec.describe Imports::ImportReportService do
report_service.generate_logs_report("report_suffix.csv")
end
end
describe "#generate_unassigned_logs_report" do
context "when there is no unassigned user (all the logs have ben assigned)" do
let(:institutions_csv) { CSV.parse("Institution name,Id,Old Completed lettings logs,Old In progress lettings logs,Old Completed sales logs,Old In progress sales logs\norg1,1,2,1,4,3", headers: true) }
it "writes an empty unassigned logs report" do
expect(storage_service).to receive(:write_file).with("UnassignedLogsReport_report_suffix.csv", "\uFEFFOwning Organisation ID,Old Owning Organisation ID,Managing Organisation ID,Old Managing Organisation ID,Log ID,Old Log ID,Tenancy code,Purchaser code\n")
report_service.generate_unassigned_logs_report("report_suffix.csv")
end
end
context "when some logs have been added to Unassigned user" do
let(:organisation) { create(:organisation, old_org_id: "1", name: "org1") }
let(:organisation2) { create(:organisation, old_org_id: "2", name: "org2") }
let(:unassigned_user) { create(:user, name: "Unassigned", organisation:) }
let(:institutions_csv) { CSV.parse("Institution name,Id,Old Completed lettings logs,Old In progress lettings logs,Old Completed sales logs,Old In progress sales logs\norg1,1,2,1,4,3", headers: true) }
let!(:lettings_log) { create(:lettings_log, owning_organisation: organisation, managing_organisation: organisation2, created_by: unassigned_user, tenancycode: "tenancycode", old_id: "12") }
let!(:sales_log) { create(:sales_log, owning_organisation: organisation, created_by: unassigned_user, purchid: "purchid", old_id: "23") }
before do
create(:organisation_relationship, parent_organisation: organisation, child_organisation: organisation2)
end
it "writes a report with all unassigned logs" do
expect(storage_service).to receive(:write_file).with("UnassignedLogsReport_report_suffix.csv", "\uFEFFOwning Organisation ID,Old Owning Organisation ID,Managing Organisation ID,Old Managing Organisation ID,Log ID,Old Log ID,Tenancy code,Purchaser code\n#{organisation.id},1,#{organisation2.id},2,#{lettings_log.id},12,tenancycode,\n#{organisation.id},1,,,#{sales_log.id},23,,purchid\n")
report_service.generate_unassigned_logs_report("report_suffix.csv")
end
end
end
end

Loading…
Cancel
Save