module Legacy
  class UserDestroyJob < ::ApplicationJob
    queue_as :default

    def perform(user_params)
      user = ::User.new(user_params)
      legacy_title = Legacy::Title.find_by(name: Legacy::Title.name_with_prefix(user.title.name)) if user.title
      @legacy_user = Legacy::User.find_by(email: user.email, title_id: legacy_title&.id)
      @legacy_user&.destroy!

      # destroy title after user.title called
      title = user.destroy_automatic_title_creation
      Legacy::TitleDestroyJob.perform_later(title.name) if title
    rescue ::Exception => e
      attr = { user: user_params }
      ::ActiveJobMailer.error(self.class.to_s, e, attr).deliver_now
    end
  end
end
