# Sample Elixir module — samplefiles.com
defmodule Sample.Customer do
  defstruct [:id, :name, :balance]

  def vip?(%__MODULE__{balance: balance}), do: balance >= 10_000

  def total_balance(customers), do: customers |> Enum.map(& &1.balance) |> Enum.sum()
end

alias Sample.Customer

customers = [
  %Customer{id: 1, name: "Ada", balance: 12_500.0},
  %Customer{id: 2, name: "Grace", balance: 830.5},
  %Customer{id: 3, name: "Linus", balance: 10_000.0}
]

for c <- customers do
  IO.puts("#{String.pad_trailing(c.name, 6)} #{:erlang.float_to_binary(c.balance, decimals: 2)} #{if Customer.vip?(c), do: "VIP"}")
end

IO.puts("Total: #{Customer.total_balance(customers)}")
