Commit graph

98 commits

Author SHA1 Message Date
af7ae2b722 refactor: use Enum.map_join instead of Enum.map |> Enum.join
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-12 18:16:55 +01:00
96729cb2f4 refactor: replace ContributionSettingsLive mockup with MembershipFeeSettingsLive in navigation 2025-12-12 18:05:19 +01:00
da1fd3da73 feat: implement full CRUD for membership fee types with settings UI
- Add interval immutability and deletion prevention validations
- Add settings validation for default_membership_fee_type_id
- Create MembershipFeeSettingsLive for admin UI with form handling
- Add comprehensive test coverage (unit, integration, settings)
2025-12-12 17:52:52 +01:00
82897d5cd3 refactor: improve cycle generation code quality and documentation
All checks were successful
continuous-integration/drone/push Build is passing
- Remove Process.sleep calls from integration tests (tests run synchronously in SQL sandbox)
- Improve error handling: membership_fee_type_not_found now returns changeset error instead of just logging
- Clarify partial_failure documentation: successful_cycles are not persisted on rollback
- Update documentation: joined_at → join_date, left_at → exit_date
- Document PostgreSQL advisory locks per member (not whole table lock)
- Document gap handling: explicitly deleted cycles are not recreated
2025-12-12 17:41:22 +01:00
f7fc1f4897 test: fix date dependencies in cycle generator tests
- Add create_member_with_cycles helper that uses fixed 'today' date
- Update tests to use explicit 'today:' option instead of Date.utc_today()
- Prevents test failures when current date changes (e.g., in 2026+)
- Tests now explicitly delete and regenerate cycles with fixed dates
- Ensures consistent test behavior regardless of execution date
2025-12-12 16:41:44 +01:00
0b986db635 fix: CycleGenerator generates from last cycle, not filling gaps
- Change algorithm to start from last existing cycle instead of start_date
- Deleted cycles (gaps) are no longer automatically filled
- Add test to verify gaps remain unfilled
- Update documentation to clarify gap handling behavior
2025-12-12 16:33:39 +01:00
272a8a8afc test: make CycleGenerator tests more robust
- Replace weak assertions (>= 0, if length > 0) with concrete expectations
- Remove unnecessary Process.sleep calls (tests run synchronously)
- Add get_member_cycles helper for direct cycle verification
- Tests now validate actual generated cycles instead of relying on async behavior
2025-12-12 16:25:41 +01:00
a99f56969d feat: include inactive members in batch cycle generation
- Remove exit_date filter from generate_cycles_for_all_members query
- Inactive members now get cycles generated up to their exit_date
- Add tests for inactive member processing and exit_date boundary
- Document exit_date == cycle_start behavior (cycle still generated)
2025-12-12 16:21:36 +01:00
162d06da21
feat: implement automatic cycle generation for members
All checks were successful
continuous-integration/drone/push Build is passing
- Add CycleGenerator module with advisory lock mechanism
- Add SetMembershipFeeStartDate change for auto-calculation
- Extend Settings with include_joining_cycle and default_membership_fee_type_id
- Add scheduled job skeleton for future Oban integration
2025-12-11 21:26:58 +01:00
b257c9897f
refactor: improve CalendarCycles API and tests based on code review
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-11 20:08:19 +01:00
822d06ed54
feat: implement calendar-based cycle calculation functions
All checks were successful
continuous-integration/drone/push Build is passing
Add CalendarCycles module with functions for all interval types.
Includes comprehensive tests for edge cases.
2025-12-11 19:45:01 +01:00
ebbf347e42 fix(membership-fees): add DB constraints for enum and decimal precision
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-11 18:46:48 +01:00
4d1b33357e feat(membership-fees): add database schema and Ash domain structure 2025-12-11 18:46:48 +01:00
9dba4d1019
fix: credo warnings
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-11 14:21:40 +01:00
00fe471bc0 fix: custom field substring search - pass id as parameter
All checks were successful
continuous-integration/drone/push Build is passing
Fragment 'member_id = id' did not resolve correctly. Now passes id as
Ash expression. Also changed LIKE to ILIKE for case-insensitive search.
2025-12-11 14:04:13 +01:00
a729d81bb9 test: adds tests for custom field search 2025-12-11 13:44:30 +01:00
b1f6d29ca1
Merge remote-tracking branch 'origin/main' into feature/220_ui_issues_2
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-11 01:49:12 +01:00
720f640229
fix: test
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-11 00:55:50 +01:00
1b06f885bf Merge branch 'main' into feature/223_member_checkbox
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-08 11:43:54 +01:00
5ae4450444
Merge branch 'main' into feature/209_hide_field_dropdown
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-03 18:58:40 +01:00
6029920c3f refactor: cleanup dropdown_menu component (required attr, remove redundant defaults, fix checkbox) 2025-12-03 18:42:49 +01:00
6cf955b024 fix: get_from_cookie now correctly handles list return from get_req_header 2025-12-03 18:37:51 +01:00
ecc6522571 test: restore deleted tests with dynamic field visibility support
Adapts icon distribution test for dynamic fields, restores empty cell test
2025-12-03 18:13:30 +01:00
f5b67de870
Merge branch 'main' into feature/209_hide_field_dropdown
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-03 17:38:50 +01:00
ba5fc34d80
Move custom fields to global admin settings
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-03 16:32:40 +01:00
c17445975c Merge branch 'main' into feature/209_hide_field_dropdown
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-03 14:57:56 +01:00
c9678231f9 fix: hide paid column and add tests
Some checks reported errors
continuous-integration/drone/push Build was killed
2025-12-03 14:56:39 +01:00
064c0df701 updated tests and fix merge conflict results 2025-12-03 14:55:20 +01:00
dfff2486b5
Fix postgres errors when running tests
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-03 14:47:58 +01:00
6b0ec28d9b
fix checkbox tests 2025-12-03 14:34:31 +01:00
e6c5a58c65
Show dates in european format
Some checks reported errors
continuous-integration/drone/push Build was killed
2025-12-03 14:20:14 +01:00
ee414c9440
Hide OIDC ID and ID columns for users 2025-12-03 14:20:14 +01:00
f0613fe1e5 Merge branch 'main' into feature/209_hide_field_dropdown
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-03 12:52:12 +01:00
ac2ad0a0d5 Merge pull request 'Implement filter for has_paid closes #227' (#237) from feature/227_payment_filter into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #237
2025-12-02 16:12:42 +01:00
6d75766dba
fix: add ESC key support, security comment, and disable async tests
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-02 15:55:27 +01:00
671e6ce804
feat: add payment status filter and paid column to member list
Add PaymentFilterComponent dropdown and colored paid column. Filter supports URL bookmarking and combines with search/sort.
2025-12-02 15:55:23 +01:00
45a9bc0cc0 tests: added tests 2025-12-02 14:59:38 +01:00
c8968636a8 feat: remove birth_date field from Member resource
All checks were successful
continuous-integration/drone/push Build is passing
Users who need birthday data can use custom fields instead.
Closes #161
2025-12-02 14:58:50 +01:00
13f77b5c0a
Refactor column visibility logic
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-02 14:18:27 +01:00
dce2053ce7 formatting and refactor member fields constant 2025-12-02 14:17:53 +01:00
944b868478 tests: adds tests 2025-12-02 14:16:02 +01:00
39d2cb7820 refactor: improve email copy with MapSet, RFC 5322 commas, and cond
All checks were successful
continuous-integration/drone/push Build is passing
Performance optimization, RFC-compliant separator, better tests
2025-12-02 12:10:59 +01:00
e2ace3d2a8 feat: add bulk email copy for selected members (#230)
All checks were successful
continuous-integration/drone/push Build is passing
Copy selected members' emails to clipboard in 'First Last <email>' format
2025-12-02 10:02:58 +01:00
d039e4bb7d formatting and refactor member fields constant
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-02 10:02:52 +01:00
f24d4985fc tests: adds tests 2025-12-02 09:22:26 +01:00
cf354bcf25 test updated 2025-12-01 10:43:19 +01:00
418b42d35a adds tests 2025-12-01 10:42:10 +01:00
82bd573276 formatting 2025-12-01 08:50:06 +01:00
4313703538 test: added tests 2025-12-01 08:50:06 +01:00
df05eafc99 refactor: simplify Member.available_for_linking action to 9 lines
Extract filter logic into apply_linking_filters/3 helper, add Credo disable for fuzzy search complexity
2025-11-20 21:44:29 +01:00