lib/requests/payments/senders.ex

defmodule Requests.Payments.Senders do
  alias Requests.Payments.Senders.{
    BankPayoutCorporate,
    BankPayoutIndividual,
    BankPayoutInstrument,
    Government,
    Corporate,
    Individual
  }

  def build(%{type: "government"} = params), do: Government.build(params)

  def build(%{type: "corporate"} = params), do: Corporate.build(params)

  def build(%{type: "individual"} = params), do: Individual.build(params)

  def build_bank_payout_sender(%{type: "corporate"} = params),
    do: BankPayoutCorporate.build(params)

  def build_bank_payout_sender(%{type: "instrument"} = params),
    do: BankPayoutInstrument.build(params)

  def build_bank_payout_sender(%{type: "individual"} = params),
    do: BankPayoutIndividual.build(params)

  def build_bank_payout_sender(_), do: nil
end