shoc-backend/SeaHaven.DataServices/Implementation
Alexandre Brandizzi 8086b6c85f fix(vendors): resolve list location from company address when city/state blank
The Vendors directory renders Location from City/State only, but the roster
form keeps its City/State inputs hidden, so vendors captured through the UI
store their location in the free-text Address field and the column falls back
to an em dash while the detail drawer shows the value.

Resolve location through a single rule -- structured City/State when present,
otherwise the free-text Address -- and apply it consistently so the column,
search, the location facet and the location filter cannot disagree.

- Directory rows fall back to the linked company's Address when the technician
  has none, matching the Email precedence already established for these rows.
- BuildLocationLabelBody, which backs both the filter and the facet label,
  falls back to Address when City/State are blank.
- Directory search matches Address so a row is findable by what it displays.
- The locations facet offers address-only companies as filter options.
2026-08-25 13:30:01 -03:00
..
AccountDataService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00
AssetDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
CalendarDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CategoryDataService.cs refactor 2026-04-28 18:55:14 -05:00
CommentDataService.cs fix(work-orders): scope legacy GET GetComments by account [SH-221] 2026-08-11 15:18:29 -03:00
CommonDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
CompletionDocTemplateDataService.cs feat(work-orders): add Phase 6 slide-over detail comments audit and media API 2026-07-13 13:13:00 -03:00
ContactDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
DashboardDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
DispatchDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
DropdownOptionsDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
EmployeeDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
FollowUpDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
ForgetPasswordDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
LocationDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
PMScheduleDataService.cs backend architectural template 2026-05-06 10:49:33 -05:00
QuotesDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
SettingsDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
SyncDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
TaskListTemplateDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
UpliftDataService.cs fix(work-orders): serialize uplift create and atomic cancel (SH-196) 2026-08-18 10:20:05 -03:00
UserDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
VendorCompanyRosterDataService.cs fix(vendor-roster): conflict on colliding rename, reject no-op company update (SH-250) 2026-08-18 17:33:16 -03:00
VendorDataService.cs fix(vendors): resolve list location from company address when city/state blank 2026-08-25 13:30:01 -03:00
VendorDocumentDataService.cs feat(uplifts): complete SH-101 approval lifecycle 2026-08-11 08:58:19 -03:00
VendorOperationsDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderAdvancedSearchDataService.cs feat(work-orders): board search facets for SH-121/SH-196 2026-08-13 16:34:21 -03:00
WorkOrderAuditDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderBoardDataService.cs feat(work-orders): expose pendingUpliftCount on board rows (SH-188) 2026-08-12 09:43:10 -03:00
WorkOrderBoardMutationDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderCompletionDataService.cs fix(work-orders): scope comments and completion-doc by account [SH-221] 2026-08-11 14:52:02 -03:00
WorkOrderDataService.cs fix(work-orders): scope legacy list/detail GETs by account [SH-221] 2026-08-11 11:57:37 -03:00
WorkOrderDetailDataService.cs !fix(work-orders): fail-closed media account scope with org_scope claim [SH-221] 2026-08-06 10:26:04 -03:00
WorkOrderDomainJobDataService.cs fix(work-orders): derive Past Due from DueDate instead of ScheduledDate 2026-08-13 13:28:25 -03:00
WorkOrderFieldLockDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderIngestDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderMediaDataService.cs !fix(work-orders): fail-closed media account scope with org_scope claim [SH-221] 2026-08-06 10:26:04 -03:00
WorkOrderOpsHealthDataService.cs refactor: enforce backend boundaries and optimize dispatch (#30) 2026-07-24 17:35:34 -03:00
WorkOrderReconciliationDataService.cs feat: complete SH-133 procurement reconciliation 2026-07-24 22:13:25 -03:00
WorkOrderWebhookDataService.cs fix(work-orders): apply account scope across create and reads [SH-221] 2026-08-11 10:45:37 -03:00