Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions lib/modules/billing/schemas/invoice.ex
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ defmodule PhoenixKit.Modules.Billing.Invoice do
|> validate_status_transition(invoice.status, new_status)

case new_status do
"sent" -> put_change(changeset, :sent_at, DateTime.utc_now())
"paid" -> put_change(changeset, :paid_at, DateTime.utc_now())
"void" -> put_change(changeset, :voided_at, DateTime.utc_now())
"sent" -> put_change(changeset, :sent_at, DateTime.truncate(DateTime.utc_now(), :second))
"paid" -> put_change(changeset, :paid_at, DateTime.truncate(DateTime.utc_now(), :second))
"void" -> put_change(changeset, :voided_at, DateTime.truncate(DateTime.utc_now(), :second))
_ -> changeset
end
end
Expand Down
15 changes: 11 additions & 4 deletions lib/modules/billing/schemas/order.ex
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,17 @@ defmodule PhoenixKit.Modules.Billing.Order do
|> validate_status_transition(order.status, new_status)

case new_status do
"confirmed" -> put_change(changeset, :confirmed_at, DateTime.utc_now())
"paid" -> put_change(changeset, :paid_at, DateTime.utc_now())
"cancelled" -> put_change(changeset, :cancelled_at, DateTime.utc_now())
_ -> changeset
"confirmed" ->
put_change(changeset, :confirmed_at, DateTime.truncate(DateTime.utc_now(), :second))

"paid" ->
put_change(changeset, :paid_at, DateTime.truncate(DateTime.utc_now(), :second))

"cancelled" ->
put_change(changeset, :cancelled_at, DateTime.truncate(DateTime.utc_now(), :second))

_ ->
changeset
end
end

Expand Down
4 changes: 3 additions & 1 deletion lib/modules/comments/comments.ex
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,9 @@ defmodule PhoenixKit.Modules.Comments do
def bulk_update_status(comment_ids, status)
when is_list(comment_ids) and status in ["published", "hidden", "deleted", "pending"] do
from(c in Comment, where: c.uuid in ^comment_ids)
|> repo().update_all(set: [status: status, updated_at: DateTime.utc_now()])
|> repo().update_all(
set: [status: status, updated_at: DateTime.truncate(DateTime.utc_now(), :second)]
)
end

@doc """
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/emails/event.ex
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ defmodule PhoenixKit.Modules.Emails.Event do
# Set occurred_at if not provided
defp maybe_set_occurred_at(changeset) do
case get_field(changeset, :occurred_at) do
nil -> put_change(changeset, :occurred_at, DateTime.utc_now())
nil -> put_change(changeset, :occurred_at, DateTime.truncate(DateTime.utc_now(), :second))
_ -> changeset
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/emails/log.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1217,7 +1217,7 @@ defmodule PhoenixKit.Modules.Emails.Log do
# Set queued_at if not provided
defp maybe_set_queued_at(changeset) do
case get_field(changeset, :queued_at) do
nil -> put_change(changeset, :queued_at, DateTime.utc_now())
nil -> put_change(changeset, :queued_at, DateTime.truncate(DateTime.utc_now(), :second))
_ -> changeset
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/emails/templates.ex
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ defmodule PhoenixKit.Modules.Emails.Templates do
template
|> Template.usage_changeset(%{
usage_count: template.usage_count + 1,
last_used_at: DateTime.utc_now()
last_used_at: DateTime.truncate(DateTime.utc_now(), :second)
})
|> repo().update()
end
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/referrals/referrals.ex
Original file line number Diff line number Diff line change
Expand Up @@ -757,7 +757,7 @@ defmodule PhoenixKit.Modules.Referrals do

defp maybe_set_date_created(changeset) do
if changeset.data.__meta__.state == :built do
put_change(changeset, :date_created, DateTime.utc_now())
put_change(changeset, :date_created, DateTime.truncate(DateTime.utc_now(), :second))
else
changeset
end
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/referrals/schemas/referral_code_usage.ex
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ defmodule PhoenixKit.Modules.Referrals.ReferralCodeUsage do
# Private helper to set date_used on new records
defp maybe_set_date_used(changeset) do
if changeset.data.__meta__.state == :built do
put_change(changeset, :date_used, DateTime.utc_now())
put_change(changeset, :date_used, DateTime.truncate(DateTime.utc_now(), :second))
else
changeset
end
Expand Down
12 changes: 9 additions & 3 deletions lib/modules/shop/shop.ex
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,9 @@ defmodule PhoenixKit.Modules.Shop do

{count, _} =
query
|> repo().update_all(set: [status: status, updated_at: DateTime.utc_now()])
|> repo().update_all(
set: [status: status, updated_at: DateTime.truncate(DateTime.utc_now(), :second)]
)

if count > 0 do
Events.broadcast_products_bulk_status_changed(ids, status)
Expand Down Expand Up @@ -963,7 +965,9 @@ defmodule PhoenixKit.Modules.Shop do

{count, _} =
query
|> repo().update_all(set: [status: status, updated_at: DateTime.utc_now()])
|> repo().update_all(
set: [status: status, updated_at: DateTime.truncate(DateTime.utc_now(), :second)]
)

if count > 0 do
Events.broadcast_categories_bulk_status_changed(ids, status)
Expand Down Expand Up @@ -2385,7 +2389,9 @@ defmodule PhoenixKit.Modules.Shop do
{count, _} =
Cart
|> where([c], c.id == ^cart_id and c.status == "active")
|> repo().update_all(set: [status: "converting", updated_at: DateTime.utc_now()])
|> repo().update_all(
set: [status: "converting", updated_at: DateTime.truncate(DateTime.utc_now(), :second)]
)

if count == 1 do
# Successfully locked - reload cart with new status
Expand Down
15 changes: 11 additions & 4 deletions lib/modules/tickets/tickets.ex
Original file line number Diff line number Diff line change
Expand Up @@ -586,10 +586,17 @@ defmodule PhoenixKit.Modules.Tickets do
# Set timestamps based on new status
attrs =
case new_status do
"resolved" -> Map.put(attrs, :resolved_at, DateTime.utc_now())
"closed" -> Map.put(attrs, :closed_at, DateTime.utc_now())
"open" -> Map.merge(attrs, %{resolved_at: nil, closed_at: nil})
_ -> attrs
"resolved" ->
Map.put(attrs, :resolved_at, DateTime.truncate(DateTime.utc_now(), :second))

"closed" ->
Map.put(attrs, :closed_at, DateTime.truncate(DateTime.utc_now(), :second))

"open" ->
Map.merge(attrs, %{resolved_at: nil, closed_at: nil})

_ ->
attrs
end

# Use raw update to avoid double broadcast from update_ticket
Expand Down
8 changes: 7 additions & 1 deletion lib/phoenix_kit/dashboard/registry.ex
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,13 @@ defmodule PhoenixKit.Dashboard.Registry do

@impl true
def handle_call({:register_groups, groups}, _from, state) do
:ets.insert(@ets_table, {:groups, groups})
converted =
Enum.map(groups, fn
%Group{} = g -> g
map when is_map(map) -> Group.new(map)
end)

:ets.insert(@ets_table, {:groups, converted})
broadcast_refresh()
{:reply, :ok, state}
end
Expand Down
4 changes: 3 additions & 1 deletion lib/phoenix_kit/scheduled_jobs.ex
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,9 @@ defmodule PhoenixKit.ScheduledJobs do
where: j.resource_id == ^resource_id,
where: j.status == "pending"
)
|> repo().update_all(set: [status: "cancelled", updated_at: DateTime.utc_now()])
|> repo().update_all(
set: [status: "cancelled", updated_at: DateTime.truncate(DateTime.utc_now(), :second)]
)
end

@doc """
Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/scheduled_jobs/scheduled_job.ex
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ defmodule PhoenixKit.ScheduledJobs.ScheduledJob do
scheduled_job
|> change(%{
status: "executed",
executed_at: DateTime.utc_now()
executed_at: DateTime.truncate(DateTime.utc_now(), :second)
})
end

Expand Down
6 changes: 3 additions & 3 deletions lib/phoenix_kit/settings/setting.ex
Original file line number Diff line number Diff line change
Expand Up @@ -122,21 +122,21 @@ defmodule PhoenixKit.Settings.Setting do
|> validate_setting_value()
|> validate_value_exclusivity()
|> validate_length(:module, max: 255)
|> put_change(:date_updated, DateTime.utc_now())
|> put_change(:date_updated, DateTime.truncate(DateTime.utc_now(), :second))
end

# Private helper to set timestamps on new records
defp maybe_set_timestamps(changeset) do
case changeset.data.uuid do
nil ->
now = DateTime.utc_now()
now = DateTime.truncate(DateTime.utc_now(), :second)

changeset
|> put_change(:date_added, now)
|> put_change(:date_updated, now)

_uuid ->
put_change(changeset, :date_updated, DateTime.utc_now())
put_change(changeset, :date_updated, DateTime.truncate(DateTime.utc_now(), :second))
end
end

Expand Down
26 changes: 20 additions & 6 deletions lib/phoenix_kit/users/auth.ex
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,16 @@ defmodule PhoenixKit.Users.Auth do
|> Repo.all()
end

@doc """
Gets multiple users by their UUIDs.
"""
def get_users_by_uuids([]), do: []

def get_users_by_uuids(uuids) when is_list(uuids) do
from(u in User, where: u.uuid in ^uuids)
|> Repo.all()
end

@doc """
Gets the first admin user (Owner or Admin role).

Expand Down Expand Up @@ -2447,7 +2457,11 @@ defmodule PhoenixKit.Users.Auth do

from(o in module, where: ^dynamic_query)
|> Repo.repo().update_all(
set: [user_id: nil, user_uuid: nil, anonymized_at: DateTime.utc_now()]
set: [
user_id: nil,
user_uuid: nil,
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second)
]
)
|> elem(0)
else
Expand All @@ -2470,7 +2484,7 @@ defmodule PhoenixKit.Users.Auth do
user_id: nil,
user_uuid: nil,
author_deleted: true,
anonymized_at: DateTime.utc_now()
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second)
]
)
|> elem(0)
Expand Down Expand Up @@ -2504,7 +2518,7 @@ defmodule PhoenixKit.Users.Auth do
user_id: nil,
user_uuid: nil,
author_deleted: true,
anonymized_at: DateTime.utc_now()
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second)
]
)
|> elem(0)
Expand Down Expand Up @@ -2543,7 +2557,7 @@ defmodule PhoenixKit.Users.Auth do
set: [
user_id: nil,
user_uuid: nil,
anonymized_at: DateTime.utc_now(),
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second),
original_user_email: nil
]
)
Expand All @@ -2568,7 +2582,7 @@ defmodule PhoenixKit.Users.Auth do
set: [
user_id: nil,
user_uuid: nil,
anonymized_at: DateTime.utc_now()
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second)
]
)
|> elem(0)
Expand All @@ -2591,7 +2605,7 @@ defmodule PhoenixKit.Users.Auth do
set: [
user_id: nil,
user_uuid: nil,
anonymized_at: DateTime.utc_now()
anonymized_at: DateTime.truncate(DateTime.utc_now(), :second)
]
)
|> elem(0)
Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/users/auth/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ defmodule PhoenixKit.Users.Auth.User do
Confirms the account by setting `confirmed_at`.
"""
def confirm_changeset(user) do
now = DateTime.utc_now()
now = DateTime.truncate(DateTime.utc_now(), :second)
change(user, confirmed_at: now)
end

Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/users/magic_link_registration.ex
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ defmodule PhoenixKit.Users.MagicLinkRegistration do
attrs =
attrs
|> Map.put("email", email)
|> Map.put("confirmed_at", DateTime.utc_now())
|> Map.put("confirmed_at", DateTime.truncate(DateTime.utc_now(), :second))

track_geolocation = Settings.get_boolean_setting("track_registration_geolocation", false)

Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/users/permissions.ex
Original file line number Diff line number Diff line change
Expand Up @@ -735,7 +735,7 @@ defmodule PhoenixKit.Users.Permissions do

# Bulk insert new permissions
if MapSet.size(to_add) > 0 do
now = DateTime.utc_now()
now = DateTime.truncate(DateTime.utc_now(), :second)
granted_by_int = resolve_user_id(granted_by_id)
granted_by_uuid = resolve_user_uuid(granted_by_id)

Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/users/role_assignment.ex
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ defmodule PhoenixKit.Users.RoleAssignment do
put_change(
changeset,
:assigned_at,
DateTime.utc_now()
DateTime.truncate(DateTime.utc_now(), :second)
)

_ ->
Expand Down
2 changes: 1 addition & 1 deletion lib/phoenix_kit/users/roles.ex
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,7 @@ defmodule PhoenixKit.Users.Roles do

# Add confirmed_at timestamp if user email is not confirmed
defp maybe_add_confirmed_at(changes, nil) do
Map.put(changes, :confirmed_at, DateTime.utc_now())
Map.put(changes, :confirmed_at, DateTime.truncate(DateTime.utc_now(), :second))
end

defp maybe_add_confirmed_at(changes, _confirmed_at), do: changes
Expand Down
6 changes: 3 additions & 3 deletions lib/phoenix_kit_web/live/users/live_sessions.ex
Original file line number Diff line number Diff line change
Expand Up @@ -226,15 +226,15 @@ defmodule PhoenixKitWeb.Live.Users.LiveSessions do
end

defp preload_users_for_sessions(sessions) do
user_ids =
user_uuids =
sessions
|> Enum.filter(&(&1.type == :authenticated))
|> Enum.map(& &1.user_id)
|> Enum.uniq()

case user_ids do
case user_uuids do
[] -> %{}
ids -> Auth.get_users_by_ids(ids) |> Map.new(&{&1.id, &1})
uuids -> Auth.get_users_by_uuids(uuids) |> Map.new(&{&1.uuid, &1})
end
end

Expand Down
Loading