diff --git a/lib/accounts/accounts.ex b/lib/accounts/accounts.ex index 7bc5073..13218e0 100644 --- a/lib/accounts/accounts.ex +++ b/lib/accounts/accounts.ex @@ -1,6 +1,15 @@ defmodule Mv.Accounts do @moduledoc """ AshAuthentication specific domain to handle Authentication for users. + + ## Resources + - `User` - User accounts with authentication methods (password, OIDC) + - `Token` - Session tokens for authentication + + ## Public API + The domain exposes these main actions: + - User CRUD: `create_user/1`, `list_users/0`, `update_user/2`, `destroy_user/1` + - Authentication: `create_register_with_rauthy/1`, `read_sign_in_with_rauthy/1` """ use Ash.Domain, extensions: [AshAdmin.Domain, AshPhoenix] diff --git a/lib/accounts/token.ex b/lib/accounts/token.ex index ab9c3a7..e76d8f1 100644 --- a/lib/accounts/token.ex +++ b/lib/accounts/token.ex @@ -1,6 +1,10 @@ defmodule Mv.Accounts.Token do @moduledoc """ - AshAuthentication specific ressource + AshAuthentication Token Resource for session management. + + This resource is used by AshAuthentication to manage authentication tokens + for user sessions. Tokens are automatically created and managed by the + authentication system. """ use Ash.Resource, data_layer: AshPostgres.DataLayer, diff --git a/lib/membership/membership.ex b/lib/membership/membership.ex index 982b837..97ac4be 100644 --- a/lib/membership/membership.ex +++ b/lib/membership/membership.ex @@ -12,8 +12,8 @@ defmodule Mv.Membership do The domain exposes these main actions: - Member CRUD: `create_member/1`, `list_members/0`, `update_member/2`, `destroy_member/1` - Custom field value management: `create_custom_field_value/1`, `list_custom_field_values/0`, etc. - - Custom field management: `create_custom_field/1`, `list_custom_fields/0`, etc. - - Settings management: `get_settings/0`, `update_settings/2` + - Custom field management: `create_custom_field/1`, `list_custom_fields/0`, `list_required_custom_fields/0`, etc. + - Settings management: `get_settings/0`, `update_settings/2`, `update_member_field_visibility/2`, `update_single_member_field_visibility/3` ## Admin Interface The domain is configured with AshAdmin for management UI. diff --git a/lib/membership_fees/membership_fees.ex b/lib/membership_fees/membership_fees.ex index 114f34c..37b4bc9 100644 --- a/lib/membership_fees/membership_fees.ex +++ b/lib/membership_fees/membership_fees.ex @@ -11,6 +11,8 @@ defmodule Mv.MembershipFees do - MembershipFeeType CRUD: `create_membership_fee_type/1`, `list_membership_fee_types/0`, `update_membership_fee_type/2`, `destroy_membership_fee_type/1` - MembershipFeeCycle CRUD: `create_membership_fee_cycle/1`, `list_membership_fee_cycles/0`, `update_membership_fee_cycle/2`, `destroy_membership_fee_cycle/1` + Note: LiveViews may use direct Ash calls instead of these domain functions for performance or flexibility. + ## Overview This domain handles the complete membership fee lifecycle including: - Fee type definitions (monthly, quarterly, half-yearly, yearly) diff --git a/lib/mv/authorization/authorization.ex b/lib/mv/authorization/authorization.ex index aac07a9..57942d1 100644 --- a/lib/mv/authorization/authorization.ex +++ b/lib/mv/authorization/authorization.ex @@ -7,7 +7,7 @@ defmodule Mv.Authorization do ## Public API The domain exposes these main actions: - - Role CRUD: `create_role/1`, `list_roles/0`, `update_role/2`, `destroy_role/1` + - Role CRUD: `create_role/1`, `list_roles/0`, `get_role/1`, `update_role/2`, `destroy_role/1` ## Admin Interface The domain is configured with AshAdmin for management UI. diff --git a/lib/mv/membership/import/member_csv.ex b/lib/mv/membership/import/member_csv.ex index 60cfadf..b4f4318 100644 --- a/lib/mv/membership/import/member_csv.ex +++ b/lib/mv/membership/import/member_csv.ex @@ -303,7 +303,9 @@ defmodule Mv.Membership.Import.MemberCSV do {inserted, failed, errors, _collected_error_count, truncated?} = Enum.reduce(chunk_rows_with_lines, {0, 0, [], 0, false}, fn {line_number, row_map}, - {acc_inserted, acc_failed, acc_errors, acc_error_count, acc_truncated?} -> + {acc_inserted, acc_failed, + acc_errors, acc_error_count, + acc_truncated?} -> current_error_count = existing_error_count + acc_error_count case process_row(row_map, line_number, custom_field_lookup) do @@ -325,7 +327,13 @@ defmodule Mv.Membership.Import.MemberCSV do end end) - {:ok, %{inserted: inserted, failed: failed, errors: Enum.reverse(errors), errors_truncated?: truncated?}} + {:ok, + %{ + inserted: inserted, + failed: failed, + errors: Enum.reverse(errors), + errors_truncated?: truncated? + }} end @doc """ diff --git a/lib/mv_web/controllers/page_controller.ex b/lib/mv_web/controllers/page_controller.ex index 6e1bc92..8cd38a6 100644 --- a/lib/mv_web/controllers/page_controller.ex +++ b/lib/mv_web/controllers/page_controller.ex @@ -1,4 +1,10 @@ defmodule MvWeb.PageController do + @moduledoc """ + Controller for rendering the homepage. + + This controller handles the root route and renders the application's + homepage view. + """ use MvWeb, :controller def home(conn, _params) do diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex index b319fa1..c0b034e 100644 --- a/lib/mv_web/live/member_live/form.ex +++ b/lib/mv_web/live/member_live/form.ex @@ -13,7 +13,7 @@ defmodule MvWeb.MemberLive.Form do ## Form Sections - Personal Data: Name, address, contact information, membership dates, notes - Custom Fields: Dynamic fields in uniform grid layout (displayed sorted by name) - - Payment Data: Mockup section (not editable) + - Membership Fee: Selection of membership fee type with interval validation ## Events - `validate` - Real-time form validation