Skip to main content

lib/cnpja/shared/office_links.ex

defmodule Cnpja.OfficeLinks do
  @moduledoc "Links to public documents of an establishment (certificates, map, street view)."

  defstruct [
    :rfb_certificate,
    :simples_certificate,
    :ccc_certificate,
    :suframa_certificate,
    :office_map,
    :office_street
  ]

  @type t :: %__MODULE__{
          rfb_certificate: String.t() | nil,
          simples_certificate: String.t() | nil,
          ccc_certificate: String.t() | nil,
          suframa_certificate: String.t() | nil,
          office_map: String.t() | nil,
          office_street: String.t() | nil
        }

  @spec from_map(map()) :: t()
  def from_map(map) do
    %__MODULE__{
      rfb_certificate: map["rfbCertificate"],
      simples_certificate: map["simplesCertificate"],
      ccc_certificate: map["cccCertificate"],
      suframa_certificate: map["suframaCertificate"],
      office_map: map["officeMap"],
      office_street: map["officeStreet"]
    }
  end

  @spec from_map_nullable(map() | nil) :: t() | nil
  def from_map_nullable(nil), do: nil
  def from_map_nullable(map), do: from_map(map)
end