fix: prevent nil assignment for membership_fee_type_id
Reject attempts to set membership_fee_type_id to nil when a current type exists.
This commit is contained in:
parent
032db2a4ba
commit
28b2be1125
1 changed files with 13 additions and 2 deletions
|
|
@ -42,9 +42,9 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
||||||
is_nil(current_type_id) ->
|
is_nil(current_type_id) ->
|
||||||
changeset
|
changeset
|
||||||
|
|
||||||
# If new type is nil, that's allowed (removing type)
|
# If new type is nil, reject the change (membership_fee_type_id is required)
|
||||||
is_nil(new_type_id) ->
|
is_nil(new_type_id) ->
|
||||||
changeset
|
add_nil_type_error(changeset)
|
||||||
|
|
||||||
# Both types exist - validate intervals match
|
# Both types exist - validate intervals match
|
||||||
true ->
|
true ->
|
||||||
|
|
@ -125,6 +125,17 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Add validation error when trying to set membership_fee_type_id to nil
|
||||||
|
defp add_nil_type_error(changeset) do
|
||||||
|
message = "Cannot remove membership fee type. A membership fee type is required."
|
||||||
|
|
||||||
|
Ash.Changeset.add_error(
|
||||||
|
changeset,
|
||||||
|
field: :membership_fee_type_id,
|
||||||
|
message: message
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
# Format interval atom to human-readable string
|
# Format interval atom to human-readable string
|
||||||
defp format_interval(:monthly), do: "monthly"
|
defp format_interval(:monthly), do: "monthly"
|
||||||
defp format_interval(:quarterly), do: "quarterly"
|
defp format_interval(:quarterly), do: "quarterly"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue