defmodule Mobilizon.Events.Utils do
  @moduledoc """
  Utils related to events
  """

  @spec calculate_notification_time(DateTime.t()) :: DateTime.t()
  def calculate_notification_time(begins_on, options \\ []) do
    now = Keyword.get(options, :now, DateTime.utc_now())
    notify_at = DateTime.add(now, 1800)

    # If the event begins in less than half an hour, send the notification right now
    if DateTime.compare(notify_at, begins_on) == :lt do
      notify_at
    else
      now
    end
  end
end