# frozen_string_literal: true

# Generates the PDF Document associated with the provided payment schedule, and send it to the customer
# If this is the case
class PaymentScheduleWorker
  include Sidekiq::Worker

  def perform(payment_schedule_id)
    # generate a payment schedule document
    ps = PaymentSchedule.find(payment_schedule_id)
    pdf = ::PDF::PaymentSchedule.new(ps).render

    # save the file on the disk
    File.binwrite(ps.file, pdf)

    # notify user, send schedule document by email
    NotificationCenter.call type: 'notify_user_when_payment_schedule_ready',
                            receiver: ps.user,
                            attached_object: ps
  end
end