refactor: replace ContributionSettingsLive mockup with MembershipFeeSettingsLive in navigation
This commit is contained in:
parent
98b908abdb
commit
96729cb2f4
9 changed files with 76 additions and 334 deletions
|
|
@ -59,55 +59,67 @@ defmodule Mv.MembershipFees.MembershipFeeType do
|
|||
validations do
|
||||
# Prevent interval changes after creation
|
||||
validate fn changeset, _context ->
|
||||
if Ash.Changeset.changing_attribute?(changeset, :interval) do
|
||||
case changeset.data do
|
||||
nil -> :ok # Creating new resource, interval can be set
|
||||
_existing -> {:error, field: :interval, message: "Interval cannot be changed after creation"}
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end, on: [:update]
|
||||
if Ash.Changeset.changing_attribute?(changeset, :interval) do
|
||||
case changeset.data do
|
||||
# Creating new resource, interval can be set
|
||||
nil ->
|
||||
:ok
|
||||
|
||||
_existing ->
|
||||
{:error,
|
||||
field: :interval, message: "Interval cannot be changed after creation"}
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end,
|
||||
on: [:update]
|
||||
|
||||
# Prevent deletion if assigned to members
|
||||
validate fn changeset, _context ->
|
||||
if changeset.action_type == :destroy do
|
||||
require Ash.Query
|
||||
if changeset.action_type == :destroy do
|
||||
require Ash.Query
|
||||
|
||||
member_count =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Query.filter(membership_fee_type_id == ^changeset.data.id)
|
||||
|> Ash.count!()
|
||||
member_count =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Query.filter(membership_fee_type_id == ^changeset.data.id)
|
||||
|> Ash.count!()
|
||||
|
||||
if member_count > 0 do
|
||||
{:error, message: "Cannot delete membership fee type: #{member_count} member(s) are assigned to it"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end, on: [:destroy]
|
||||
if member_count > 0 do
|
||||
{:error,
|
||||
message:
|
||||
"Cannot delete membership fee type: #{member_count} member(s) are assigned to it"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end,
|
||||
on: [:destroy]
|
||||
|
||||
# Prevent deletion if cycles exist
|
||||
validate fn changeset, _context ->
|
||||
if changeset.action_type == :destroy do
|
||||
require Ash.Query
|
||||
if changeset.action_type == :destroy do
|
||||
require Ash.Query
|
||||
|
||||
cycle_count =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(membership_fee_type_id == ^changeset.data.id)
|
||||
|> Ash.count!()
|
||||
cycle_count =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(membership_fee_type_id == ^changeset.data.id)
|
||||
|> Ash.count!()
|
||||
|
||||
if cycle_count > 0 do
|
||||
{:error, message: "Cannot delete membership fee type: #{cycle_count} cycle(s) reference it"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end, on: [:destroy]
|
||||
if cycle_count > 0 do
|
||||
{:error,
|
||||
message:
|
||||
"Cannot delete membership fee type: #{cycle_count} cycle(s) reference it"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end,
|
||||
on: [:destroy]
|
||||
end
|
||||
|
||||
attributes do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue