app/validators/filename.validator.ex

defmodule ExCnab.Cnab240.Validator.Filename do
  @moduledoc """
  An implementation of chain of responsibility to validate the filename.
  """

  @spec call(Map.t()) :: {:ok, Map.t()} | {:error, String.t()}
  def call(attrs) do
    {:ok, attrs}
  end

  # @possible_extensions ~w(.ret .rem .RET .REM .txt)
  # defp validate_extension(attrs) do
  #   case attrs.formato_arquivo in @possible_extensions do
  #     true -> :ok
  #     false -> {:error, "Invalid extension"}
  #   end
  # end

  # @possible_days Enum.to_list(1..31)
  # @possible_months ~w(1 2 3 4 5 6 7 8 9 O N D)
  # defp validate_date(%{codigo_mes_geracao_arquivo: month, formato_arquivo: file_format} = attrs)
  #      when file_format in [".rem", ".REM"] do
  #   day = attrs.dia_geracao_arquivo |> String.to_integer()

  #   case month in @possible_months and day in @possible_days do
  #     true -> :ok
  #     false -> {:error, "Invalid day and month"}
  #   end
  # end

  # defp validate_date(%{formato_arquivo: file_format} = attrs)
  #      when file_format in [".rem", ".REM"] do
  #   case attrs.dia_geracao_arquivo in @possible_days do
  #     true -> :ok
  #     false -> {:error, "Invalid day"}
  #   end
  # end

  # defp validate_date(%{formato_arquivo: file_format} = attrs)
  #      when file_format in [".rem", ".REM"] do
  #   case attrs.dia_geracao_arquivo in @possible_days do
  #     true -> :ok
  #     false -> {:error, "Invalid day"}
  #   end
  # end

  # defp validate_date(_attrs), do: :ok
end