# frozen_string_literal: true

# Provides methods for SupportingDocumentRefusal
class SupportingDocumentRefusalService
  def self.list(filters = {})
    refusals = []
    if filters[:supportable_id].present?
      refusals = SupportingDocumentRefusal.where(supportable_id: filters[:supportable_id],
                                                 supportable_type: filters[:supportable_type])
    end
    refusals
  end

  def self.create(supporting_document_refusal)
    saved = supporting_document_refusal.save

    if saved
      case supporting_document_refusal.supportable_type
      when 'User'
        NotificationCenter.call type: 'notify_admin_user_supporting_document_refusal',
                                receiver: User.admins_and_managers,
                                attached_object: supporting_document_refusal
        NotificationCenter.call type: 'notify_user_supporting_document_refusal',
                                receiver: supporting_document_refusal.supportable,
                                attached_object: supporting_document_refusal
      when 'Child'
        NotificationCenter.call type: 'notify_admin_user_child_supporting_document_refusal',
                                receiver: User.admins_and_managers,
                                attached_object: SupportingDocumentRefusal.last
        NotificationCenter.call type: 'notify_user_child_supporting_document_refusal',
                                receiver: SupportingDocumentRefusal.last.supportable.user,
                                attached_object: SupportingDocumentRefusal.last
      end
    end
    saved
  end
end