defmodule ExCnab.Cnab240.Templates.Details do @moduledoc """ Module responsible to send the file to the correct template """ import Helpers.ConvertPosition alias ExCnab.Cnab240.Templates.Details.{ ModelA, ModelB, ModelJ, ModelJ52, ModelO, ModelW, ModelZ } @spec generate(List.t()) :: {:ok, List.t(Map.t())} def generate(details) do formated_details = Enum.map(details, fn register_detail -> {:ok, detail_object} = register_detail |> convert_position(14) |> generate_payment_template(register_detail) detail_object end) {:ok, formated_details} end defp generate_payment_template("A", regsiter_detail), do: ModelA.generate(regsiter_detail) defp generate_payment_template("B", regsiter_detail), do: ModelB.generate(regsiter_detail) defp generate_payment_template("J", regsiter_detail), do: ModelJ.generate(regsiter_detail) defp generate_payment_template("J-52", regsiter_detail), do: ModelJ52.generate(regsiter_detail) defp generate_payment_template("O", regsiter_detail), do: ModelO.generate(regsiter_detail) defp generate_payment_template("W", regsiter_detail), do: ModelW.generate(regsiter_detail) defp generate_payment_template("Z", regsiter_detail), do: ModelZ.generate(regsiter_detail) end