class Notification::ContactsJob
  include Sidekiq::Worker

  def perform(id)
    @contact = Contact.find(id).decorate

    ActionCable.server.broadcast(
      "employee_contacts_#{@contact.school_id}",
      { action: 'update', data: props }
    )
  end

  private
    def props
      {
        id: @contact.id,
        full_name: @contact.full_name(:reverse),
        title_name: @contact.title_name,
        title_id: @contact.title_id,
        first_name: @contact.first_name,
        middle_name: @contact.middle_name,
        last_name: @contact.last_name,
        suffix: @contact.suffix,
        nickname: @contact.nickname,
        date_of_birth: @contact.date_of_birth,
        company_name: @contact.company_name,
        company_id: @contact.company_id,
        external_id: @contact.external_id,
        address: @contact.address,
        address_ext: @contact.address_ext,
        city: @contact.city,
        state: @contact.state,
        zip: @contact.zip,
        country_name: @contact.country_name,
        country_id: @contact.country_id,
        home_phone: @contact.home_phone,
        cell_phone: @contact.cell_phone,
        work_phone: @contact.work_phone,
        work_phone_2: @contact.work_phone_2,
        fax_phone: @contact.fax_phone,
        email: @contact.email,
        email2: @contact.email2,
        email3: @contact.email3,
        marital_status: @contact.unspecified? ? nil : @contact.marital_status,
        description: @contact.description,
        category_ids: @contact.category_ids,
        author_id: @contact.author_id? ? @contact.author_id : nil,
        private: @contact.private
      }
    end
end
