defmodule ExCnab.Cnab240.Services.EncodeDetails do
@moduledoc """
Service to encode params to details
"""
alias ExCnab.Cnab240.Templates.ChunkFooter
alias ExCnab.Cnab240.Templates.Details
alias ExCnab.Cnab240.Templates.ChunkHeader
@spec run(List.t()) :: List.t(Map.t())
def run(details) do
Enum.map(details, fn detail ->
%{header_lote: header, lotes: details, trailer_lote: footer} = detail
encoded_header = ChunkHeader.encode(header)
encoded_detail = Details.encode(details)
encoded_footer = ChunkFooter.encode(footer)
[encoded_header, encoded_detail, encoded_footer] |> Enum.join("\r\n")
end)
|> Enum.join("\r\n")
end
end