shoc-backend/SeaHaven.Services
Alexandre Brandizzi c02749a4ea fix: run work order edit reschedule under the mutation lock
UpdateWorkOrderAsync loaded the work order, applied the shared schedule
side effects (RescheduleCount, OriginalDate/OriginalWeek, lifecycle,
IsAddOn) and saved with no gate, transaction or row lock, so a
concurrent reschedule could interleave with the read-modify-write.

The read, the mutation, the save and the audit entry now run through
IWorkOrderDataService.ExecuteWorkOrderMutationAsync, which uses the
shared WorkOrderMutationLock: the per-work-order in-process gate, a
transaction, and an UPDLOCK on the work order row on SQL Server. A
reschedule committed by another holder of the lock is read before the
edit applies its own date and increments RescheduleCount.

Adds a regression test that holds the gate, commits a reschedule, and
asserts the edit waits and then builds on the committed schedule.
2026-10-01 00:19:37 -03:00
..
Configuration feat(permissions): protect configured account owner (SH-329) 2026-09-16 21:40:22 -03:00
Constants feat(team-members): support pending member creation (SH-325) 2026-09-16 21:41:55 -03:00
DependencyInjection Merge remote-tracking branch 'origin/main' into fix/ab/sh-403-reset-hardening-2 2026-09-25 19:49:24 -03:00
DTOs fix: apply shared schedule side effects on work order edit 2026-10-01 00:10:43 -03:00
Exceptions Sites API: site code uniqueness, soft delete with role check, open work orders, site notes 2026-09-25 11:19:29 -03:00
Helpers fix(workorders): persist explicit technician assignment 2026-09-29 17:58:52 -03:00
Implementation fix: run work order edit reschedule under the mutation lock 2026-10-01 00:19:37 -03:00
Interfaces Merge remote-tracking branch 'origin/main' into fix/ab/sh-403-reset-hardening-2 2026-09-25 19:49:24 -03:00
Validation feat(locations): manage ordered site contacts 2026-09-15 19:03:54 -03:00
SeaHaven.Services.csproj refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00