historyforge/historyforge

View on GitHub
app/jobs/generate_audit_logs_job.rb

Summary

Maintainability
A
2 hrs
Test Coverage
# frozen_string_literal: true

class GenerateAuditLogsJob < ApplicationJob
  def perform
    PaperTrail::Version.find_each do |version|
      person_change = version.changeset[:person_id]
      if person_change
        from_person_id, to_person_id = person_change
        next if version.item.blank?

        user = User.find_by id: version.whodunnit
        next if user.blank?

        if to_person_id.present?
          Person.find_by(id: to_person_id)&.audit_logs&.create message: "Connected to #{version.item.year} Census Record for #{version.item.name}",
                                                               logged_at: version.created_at,
                                                               user_id: version.whodunnit
        end
        if from_person_id.present?
          Person.find_by(id: from_person_id)&.audit_logs&.create message: "Disconnected from #{version.item.year} Census Record for #{version.item.name}",
                                                                 logged_at: version.created_at,
                                                                 user_id: version.whodunnit
        end
      end
    end
  end
end