mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-01 05:13:14 +00:00
* feat(work-orders): enrich board search overdue filters and 0-based paging * fix(work-orders): align stacked services with CI build * fix(tests): pass userDataService in comment service unit test * fix(work-orders): use dedicated overdue query flag Stop treating WorkOrderType.Other as an overdue sentinel. Board and advanced search now accept overdue=true while types=Other filters real Other rows; combining both uses OR. * test(work-orders): cover overdue date/status boundary and Other type-filter Lock the PR #23 overdue regression boundary through the public advanced search service. Prove overdue filtering is driven by past-due date plus non-terminal status, not by the WorkOrderType.Other sentinel: - Other + future/not-completed excluded from overdue - past-due + Scheduled included; past-due + Completed/Canceled excluded - types=[PM, Other] keeps real Other rows and does not pull past-due rows - assert 0-based paging (Page=0) is preserved alongside overdue/type filters --------- Co-authored-by: Arthur Bassi <arthur.winiarski.ranger@outlook.com> Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
103 lines
3.9 KiB
C#
103 lines
3.9 KiB
C#
using Data.SeaHavenIndustries.Enums;
|
|
using SeaHaven.Services.Helpers;
|
|
|
|
namespace SeaHaven.Services.DTOs
|
|
{
|
|
public class WorkOrderBoardQueryDto
|
|
{
|
|
public DateOnly WeekStart { get; set; }
|
|
public DateOnly? WeekEnd { get; set; }
|
|
public List<string>? Dispatchers { get; set; }
|
|
public bool MyWorkOrders { get; set; }
|
|
public List<WorkOrderType>? Types { get; set; }
|
|
/// <summary>When true, include past-due (isPastDue) rows. Combined with Types via OR.</summary>
|
|
public bool Overdue { get; set; }
|
|
public string? Search { get; set; }
|
|
}
|
|
|
|
public class WorkOrderBoardCountsDto
|
|
{
|
|
public int Returned { get; set; }
|
|
public int Total { get; set; }
|
|
}
|
|
|
|
public class WorkOrderBoardRowDto
|
|
{
|
|
public int Id { get; set; }
|
|
public string? WoNumber { get; set; }
|
|
public int RescheduleCount { get; set; }
|
|
public int CarriedOver { get; set; }
|
|
public WorkOrderType? WorkOrderType { get; set; }
|
|
public bool IsPastDue { get; set; }
|
|
public string? SiteCode { get; set; }
|
|
public string? LocationName { get; set; }
|
|
public string? PocName { get; set; }
|
|
public string? PocPhone { get; set; }
|
|
public string? PocNotes { get; set; }
|
|
public LifecycleStatus? LifecycleStatus { get; set; }
|
|
public string? LifecycleStatusLabel { get; set; }
|
|
public string? LegacyStatus { get; set; }
|
|
public string? DispatcherId { get; set; }
|
|
public string? DispatcherName { get; set; }
|
|
public string? Initials { get; set; }
|
|
public string? Color { get; set; }
|
|
public DateTime? DueDate { get; set; }
|
|
public DateTime? ScheduledDate { get; set; }
|
|
public DateOnly? TargetWeek { get; set; }
|
|
public bool? ScheduleWeekOnly { get; set; }
|
|
public string? DayGroup { get; set; }
|
|
public int? VendorId { get; set; }
|
|
public string? VendorName { get; set; }
|
|
public string? TechName { get; set; }
|
|
public string? TechPhone { get; set; }
|
|
public DateTime? ApptDate { get; set; }
|
|
public string? ApptTime { get; set; }
|
|
public string? Pm { get; set; }
|
|
public string? ServiceNotes { get; set; }
|
|
public List<string>? ExtraServices { get; set; }
|
|
public DocStatus? DocStatus { get; set; }
|
|
/// <summary>Board flag color (#RRGGBB). Null = no flag. Distinct from Color (dispatcher avatar).</summary>
|
|
public string? FlagColor { get; set; }
|
|
public int? PrimaryDispatchId { get; set; }
|
|
public byte[]? RowVersion { get; set; }
|
|
public byte[]? DispatchRowVersion { get; set; }
|
|
}
|
|
|
|
public class WorkOrderBoardPatchRequestDto
|
|
{
|
|
public string Field { get; set; } = "";
|
|
public string? Value { get; set; }
|
|
public string? WorkOrderVersion { get; set; }
|
|
public string? DispatchVersion { get; set; }
|
|
public int? PrimaryDispatchId { get; set; }
|
|
}
|
|
|
|
public class WorkOrderBoardConflictDto
|
|
{
|
|
public string Message { get; set; } = "The record was modified by another user. Refresh and retry.";
|
|
public WorkOrderBoardRowDto? CurrentState { get; set; }
|
|
}
|
|
|
|
public class WorkOrderBoardValidationErrorDto
|
|
{
|
|
public string Code { get; set; } = "";
|
|
public string Message { get; set; } = "";
|
|
}
|
|
|
|
public class WorkOrderBoardResponseDto
|
|
{
|
|
public DateOnly WeekStart { get; set; }
|
|
public DateOnly WeekEnd { get; set; }
|
|
public WorkOrderBoardCountsDto Counts { get; set; } = new();
|
|
public List<WorkOrderBoardRowDto> Unscheduled { get; set; } = new();
|
|
public List<WorkOrderBoardRowDto> Scheduled { get; set; } = new();
|
|
}
|
|
|
|
public class DispatcherLookupDto
|
|
{
|
|
public string Id { get; set; } = "";
|
|
public string Name { get; set; } = "";
|
|
public string? Initials { get; set; }
|
|
public string? Color { get; set; }
|
|
}
|
|
}
|