## Summary - Added label update support to the single transaction `update()` endpoint - Previously, labels could only be updated via the bulk update endpoint - Now both endpoints support label updates with consistent behavior ## Changes - **UpdateTransactionRequest**: Added `label_ids` validation (array of UUIDs that must belong to user) - **TransactionController@update**: Now handles label updates alongside other attributes - Syncs labels when `label_ids` is provided - Reloads labels relationship for fresh data in events - Fires single `updated` event after all changes - **AssignTransactionToBudget listener**: Ensures labels are loaded fresh after queue serialization - **Tests**: Added 6 comprehensive tests covering all label update scenarios ## Behavior - **Don't send `label_ids`** → labels unchanged (partial update) - **Send `label_ids: []`** → removes all labels - **Send `label_ids: [uuid1, uuid2]`** → replaces labels with these ## Testing When labels are updated, the `TransactionUpdated` event fires and the transaction is automatically assigned to matching budgets (via queued listener). All tests pass (29 tests, 134 assertions). Fixes the issue where transactions wouldn't appear in budget after adding a matching label via the single transaction update endpoint. |
||
|---|---|---|
| .. | ||
| Controllers | ||
| Middleware | ||
| Requests | ||
| Responses | ||