philomena/lib/philomena/badges/award.ex

36 lines
838 B
Elixir
Raw Normal View History

2019-08-28 18:38:53 +02:00
defmodule Philomena.Badges.Award do
use Ecto.Schema
import Ecto.Changeset
2019-11-17 00:42:41 +01:00
alias Philomena.Badges.Badge
alias Philomena.Users.User
2019-08-28 18:38:53 +02:00
schema "badge_awards" do
2019-11-17 00:42:41 +01:00
belongs_to :user, User
belongs_to :awarded_by, User
belongs_to :badge, Badge
2019-08-28 18:38:53 +02:00
field :label, :string
2019-12-08 07:11:16 +01:00
field :awarded_on, :utc_datetime
2019-08-28 18:38:53 +02:00
field :reason, :string
field :badge_name, :string
timestamps(inserted_at: :created_at, type: :utc_datetime)
2019-08-28 18:38:53 +02:00
end
@doc false
def changeset(badge_award, attrs) do
badge_award
2019-12-15 21:02:13 +01:00
|> cast(attrs, [:badge_id, :label, :reason, :badge_name])
|> put_awarded_on()
2019-08-28 18:38:53 +02:00
end
2019-12-15 21:02:13 +01:00
defp put_awarded_on(%{data: %{awarded_on: nil}} = changeset) do
now = DateTime.utc_now() |> DateTime.truncate(:second)
put_change(changeset, :awarded_on, now)
end
2020-01-11 05:20:19 +01:00
2019-12-15 21:02:13 +01:00
defp put_awarded_on(changeset), do: changeset
2019-08-28 18:38:53 +02:00
end