diff --git a/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs b/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs
index f72501c..f3d5ca9 100644
--- a/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs
+++ b/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs
@@ -82,6 +82,12 @@ namespace Api.SeaHavenIndustries.Controllers
_workOrderBoardService = workOrderBoardService;
}
+ ///
+ /// Weekly board payload.
+ /// When is true, the authenticated user filter wins and
+ /// is ignored (not AND-combined).
+ /// Weekend WOs in a Mon–Sun window may have dayGroup = null; FE should handle that.
+ ///
[HttpGet("board")]
public async Task GetBoard(
[FromQuery, BindRequired] DateOnly weekStart,
@@ -96,21 +102,32 @@ namespace Api.SeaHavenIndustries.Controllers
if (weekValidationError != null)
return BadRequest(weekValidationError);
- var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
- var query = new WorkOrderBoardQueryDto
+ try
{
- WeekStart = weekStart,
- WeekEnd = weekEnd,
- Dispatchers = dispatchers,
- MyWorkOrders = myWorkOrders,
- Types = types,
- Search = search
- };
+ var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
+ var query = new WorkOrderBoardQueryDto
+ {
+ WeekStart = weekStart,
+ WeekEnd = weekEnd,
+ Dispatchers = dispatchers,
+ MyWorkOrders = myWorkOrders,
+ Types = types,
+ Search = search
+ };
- var result = await _workOrderBoardService.GetBoardAsync(query, userId);
- return Ok(result);
+ var result = await _workOrderBoardService.GetBoardAsync(query, userId);
+ return Ok(result);
+ }
+ catch (ArgumentException ex)
+ {
+ return BadRequest(ex.Message);
+ }
}
+ ///
+ /// Dispatcher dropdown options. Currently returns all non-deleted users
+ /// (role-filtered assignee list deferred until roles settle).
+ ///
[HttpGet("lookups/dispatchers")]
public async Task GetDispatcherLookups()
{
diff --git a/SeaHaven.DataServices/Helpers/WorkOrderBoardQueryFilters.cs b/SeaHaven.DataServices/Helpers/WorkOrderBoardQueryFilters.cs
index c57fc5f..d13b4d3 100644
--- a/SeaHaven.DataServices/Helpers/WorkOrderBoardQueryFilters.cs
+++ b/SeaHaven.DataServices/Helpers/WorkOrderBoardQueryFilters.cs
@@ -8,6 +8,11 @@ namespace SeaHaven.DataServices.Helpers
public static IQueryable ApplyBaseScope(IQueryable query)
=> query.Where(w => w.istemplate != true && (w.IsDeleted != true || w.IsDeleted == null));
+ ///
+ /// Applies assignee filters. When is true and
+ /// is set, that takes precedence and
+ /// is ignored.
+ ///
public static IQueryable ApplyDispatcherFilter(
IQueryable query,
IReadOnlyList? dispatchers,