Vereinfacht accounting software API closes #431 #432
1 changed files with 16 additions and 12 deletions
|
|
@ -1300,20 +1300,24 @@ defmodule Mv.Membership.Member do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Extracts custom field values from existing member data (update scenario)
|
# Extracts custom field values from existing member data (update scenario).
|
||||||
|
# Actor must come from context; no system-actor fallback (per guidelines).
|
||||||
|
# When no actor is present we skip the load and return empty map.
|
||||||
defp extract_existing_values(member_data, changeset) do
|
defp extract_existing_values(member_data, changeset) do
|
||||||
actor =
|
case Map.get(changeset.context, :actor) do
|
||||||
Map.get(changeset.context, :actor) ||
|
nil ->
|
||||||
Mv.Helpers.SystemActor.get_system_actor()
|
|
||||||
|
|
||||||
opts = Helpers.ash_actor_opts(actor)
|
|
||||||
|
|
||||||
case Ash.load(member_data, :custom_field_values, opts) do
|
|
||||||
{:ok, %{custom_field_values: existing_values}} ->
|
|
||||||
Enum.reduce(existing_values, %{}, &extract_value_from_cfv/2)
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
%{}
|
%{}
|
||||||
|
|
||||||
|
actor ->
|
||||||
|
opts = Helpers.ash_actor_opts(actor)
|
||||||
|
|
||||||
|
case Ash.load(member_data, :custom_field_values, opts) do
|
||||||
|
{:ok, %{custom_field_values: existing_values}} ->
|
||||||
|
Enum.reduce(existing_values, %{}, &extract_value_from_cfv/2)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
%{}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue