f7c33bfc7d
fix: resolve notification handling and maintain after_action for cycle regeneration
2025-12-16 15:15:36 +01:00
6a91f7c711
fix: correct return_notifications? logic to prevent missed notifications
...
Fix the logic for return_notifications? in create_cycles
2025-12-16 15:15:36 +01:00
358b1bfdb1
fix: address code review points for cycle regeneration
...
1. Fix critical notifications bug
2. Fix today inconsistency
3. Add advisory lock around deletion
4. Improve helper function documentation
5. Improve error message UX
2025-12-16 15:15:35 +01:00
b8791cbcfe
refactor: reduce complexity of with_advisory_lock function
...
Split the complex with_advisory_lock function into smaller, focused
functions to improve readability and reduce cyclomatic complexity
2025-12-16 15:15:35 +01:00
5b66d49fcd
fix: prevent deadlocks by detecting existing transactions
2025-12-16 15:15:35 +01:00
82897d5cd3
refactor: improve cycle generation code quality and documentation
...
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
e6ac5d1ab1
fix: handle Ash notifications in CycleGenerator transactions
...
continuous-integration/drone/push Build is passing
- Use return_notifications?: true when creating cycles within transaction
- Collect notifications and send them after transaction commits
- Prevents 'Missed notifications' warnings in test output
- Notifications are now properly sent via Ash.Notifier.notify/1
2025-12-12 16:53:57 +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
cf8a1fa30d
feat: improve error handling in CycleGenerator
...
- Handle Task crashes in async_stream with {:exit, reason}
- Return {:error, {:partial_failure, successes, errors}} when some cycles fail
- Previously returned {:ok, successful} even on partial failures
- Improves debuggability and allows callers to handle partial failures
2025-12-12 16:23:12 +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
...
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
ecddf55331
docs: fix CalendarCycles documentation to match actual implementation
continuous-integration/drone/push Build is passing
2025-12-11 20:21:20 +01:00
b257c9897f
refactor: improve CalendarCycles API and tests based on code review
continuous-integration/drone/push Build is passing
2025-12-11 20:08:19 +01:00
822d06ed54
feat: implement calendar-based cycle calculation functions
...
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
4d1b33357e
feat(membership-fees): add database schema and Ash domain structure
2025-12-11 18:46:48 +01:00
cf6a108049
refactor: DRY - use Mv.Constants.custom_field_prefix() instead of string literals
continuous-integration/drone/push Build is passing
2025-12-03 18:47:27 +01:00
c8968636a8
feat: remove birth_date field from Member resource
...
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
dce2053ce7
formatting and refactor member fields constant
2025-12-02 14:17:53 +01:00
831149f463
chore: adds constant for member_fields
2025-12-02 14:16:02 +01:00
52a62bd679
fix: extract member_id from relationship changes during validation ( #168 )
2025-11-20 16:51:43 +01:00
7375b83167
docs: add @doc to public functions in EmailSync, Validations, and Senders
...
continuous-integration/drone/push Build is passing
Document public API functions with @doc for better tooling support:
- EmailSync Changes: sync_user_email_to_member, sync_member_email_to_user
- Validations: email_not_used_by_other_member, email_not_used_by_other_user
- Senders: send_new_user_confirmation_email, send_password_reset_email
2025-11-13 11:20:33 +01:00
150bba2ef8
docs: enable Credo ModuleDoc check and fix remaining modules
...
Add @moduledoc to Secrets, LiveHelpers, AuthOverrides, and Membership domain.
Enable Credo.Check.Readability.ModuleDoc in .credo.exs.
2025-11-13 11:20:33 +01:00
c7c6d329fb
chore: enable trigram extension
2025-10-30 16:48:45 +01:00
1495ef4592
fix validation behaviour
2025-10-23 13:13:29 +02:00
001fca1d16
refactor: email sync changes
2025-10-23 13:13:28 +02:00
2693f67d33
refactor: email validations
2025-10-23 13:13:28 +02:00
7522724945
refactor: email sync changes
2025-10-23 13:13:28 +02:00
39afaf3999
feat: email uniqueness constraint between user and member
2025-10-23 13:13:27 +02:00
5a0a261cd6
add action changes for email sync
2025-10-23 13:13:27 +02:00
0334260de5
feat: migration to phoenix 1.8 - merge changed files
2025-07-17 18:01:12 +02:00
38db637495
fix: linting issue
continuous-integration/drone/push Build is passing
2025-07-09 17:23:05 +02:00
c7b13c0ecb
format: formated files
2025-07-02 17:03:37 +02:00
565aaddd94
feat(secrets): updated as recommended in ashauthentication docs
2025-07-02 17:03:37 +02:00
192ceaed45
chore(AshAuthenticationPhoenix): added library and updated ressources testing password strategy
2025-07-02 17:03:37 +02:00
dce8fbc232
Add Release scripts & Dockerfile
continuous-integration/drone/push Build is passing
2025-05-22 02:12:20 +02:00
86437cbb9d
Add ash framework
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-04-21 12:37:55 +02:00
f2eeb95960
Add generated starter app
2025-03-18 15:05:27 +01:00