defmodule ActiveCampaign.Tracking.Event do
@moduledoc """
Documentation for `ActiveCampaign.Tracking.Event`.
"""
alias ActiveCampaign.Http
# TODO endpoint is https://trackcmp.net/event ?
# @doc """
# Track event
# """
# @spec track() :: {:ok, map()} | {:error, any()}
# def track() do
# Http.post("")
# end
@doc """
Create a new event (name only)
"""
@spec create(String.t()) :: {:ok, map()} | {:error, any()}
def create(name) do
Http.post("eventTrackingEvents", %{eventTrackingEvent: %{name: name}})
end
@doc """
Retrieve Event Tracking Status
"""
@spec get_status :: {:ok, map()} | {:error, any()}
def get_status do
Http.get("eventTracking")
end
@doc """
Enable/disable
"""
@spec set_enabled(boolean()) :: {:ok, map()} | {:error, any()}
def set_enabled(bool) do
Http.put("eventTracking", %{eventTracking: %{enabled: bool}})
end
@doc """
Delete event (name only)
Spaces in the name should be left as spaces, they will automatically be encoded.
"""
@spec delete(String.t()) :: {:ok, map()} | {:error, any()}
def delete(name) do
Http.delete("eventTrackingEvent/#{URI.encode(name)}")
end
@doc """
List all events (names only)
"""
@spec list(map()) :: {:ok, map()} | {:error, any()}
def list(query_params \\ %{}) do
Http.get("eventTrackingEvents?" <> Http.encode_query(query_params))
end
@doc """
Get Contact's Tracking Logs/Events
"""
@spec get_contact_tracking(integer()) :: {:ok, map()} | {:error, any()}
def get_contact_tracking(contact_id) do
Http.get("contacts/#{contact_id}/trackingLogs")
end
@doc """
Get Contact By Event ID
"""
@spec get_contact_by_event_id(integer()) :: {:ok, map()} | {:error, any()}
def get_contact_by_event_id(event_id) do
Http.get("trackingLogs/#{event_id}/contact")
end
end