# frozen_string_literal: true

class PaymentSerializer < ApplicationSerializer
  attributes  :payment_intent_id,
              :receipt_email,
              :url,
              :created_at_age,
              :amount,
              :amount_currency,
              :username,
              :user_id

  def created_at_age
    Time.now - object.created_at
  end

  def amount_currency
    ActiveSupport::NumberHelper.number_to_currency(
      object.amount / 100,
      precision: 2,
      unit: currency_unit
    )
  end

  def username
    user&.username
  end

  private

  def user
    begin
      User.find(object.user_id)
    rescue
      nil
    end
  end

  def currency_unit
    case object.currency
    when "eur"
      "€"
    when "gbp"
      "£"
    else
      "$"
    end
  end
end
