mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 07:13:12 +00:00
Add JSON column, DTO/mapper, create + PATCH field, board projection, FluentValidation, and regression tests for additional POC contacts round-trip.
71 lines
3.3 KiB
C#
71 lines
3.3 KiB
C#
using Data.SeaHavenIndustries.Enums;
|
|
using SeaHaven.Services.Helpers;
|
|
|
|
namespace SeaHaven.Services.DTOs
|
|
{
|
|
/// <summary>
|
|
/// Payload for creating a board work order (SHOC create wizard).
|
|
/// FE follow-up: extend WorkOrderBoardCreatePayload + mapper with PrimaryService,
|
|
/// ExtraServices, ServiceNotes, PocName, PocPhone, VendorNotes, TechPhone; stop embedding
|
|
/// POC/vendor/service notes in description (pocNotes already exists). Prefer structured
|
|
/// fields; keep Trade+Description temporarily for legacy clients.
|
|
/// </summary>
|
|
public class WorkOrderBoardCreateRequestDto
|
|
{
|
|
public string? WoNumber { get; set; }
|
|
public WorkOrderType WorkOrderType { get; set; }
|
|
public string? SiteCode { get; set; }
|
|
/// <summary>
|
|
/// Optional CRM customer name. Required when the caller is org-wide (no account_id)
|
|
/// so AccountId can be resolved server-side.
|
|
/// </summary>
|
|
public string? Customer { get; set; }
|
|
public string? Description { get; set; }
|
|
/// <summary>Legacy alias for primary service; prefer <see cref="PrimaryService"/>.</summary>
|
|
public string? Trade { get; set; }
|
|
/// <summary>Primary service label; persisted as Trade / board pm.</summary>
|
|
public string? PrimaryService { get; set; }
|
|
public List<string>? ExtraServices { get; set; }
|
|
public string? ServiceNotes { get; set; }
|
|
public int? LocationId { get; set; }
|
|
public DateTime? DueDate { get; set; }
|
|
public string? AssignTo { get; set; }
|
|
public DateTime? ScheduledDate { get; set; }
|
|
public DateOnly? TargetWeek { get; set; }
|
|
public bool? ScheduleWeekOnly { get; set; }
|
|
public DocStatus? DocStatus { get; set; }
|
|
public int? VendorId { get; set; }
|
|
public DateTime? ApptDate { get; set; }
|
|
public string? ApptTime { get; set; }
|
|
public int? PocContactId { get; set; }
|
|
public string? PocName { get; set; }
|
|
public string? PocPhone { get; set; }
|
|
public string? PocNotes { get; set; }
|
|
public List<WorkOrderAdditionalContactDto>? AdditionalContacts { get; set; }
|
|
public string? TechPhone { get; set; }
|
|
public string? VendorNotes { get; set; }
|
|
}
|
|
|
|
/// <summary>Advanced search / filter query for the board.</summary>
|
|
public class WorkOrderAdvancedSearchQueryDto
|
|
{
|
|
public int Page { get; set; } = 0;
|
|
public int PageSize { get; set; } = 50;
|
|
public string? Search { get; set; }
|
|
public WorkOrderAdvancedSearchDatePreset? DatePreset { get; set; }
|
|
public DateOnly? DateFrom { get; set; }
|
|
public DateOnly? DateTo { get; set; }
|
|
public List<string>? Sites { 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 List<string>? Dispatchers { get; set; }
|
|
public List<LifecycleStatus>? Statuses { get; set; }
|
|
public List<string>? PmTypes { get; set; }
|
|
public List<int>? VendorIds { get; set; }
|
|
public List<DocStatus>? DocStatuses { get; set; }
|
|
public bool MyWorkOrders { get; set; }
|
|
public string? SortBy { get; set; }
|
|
public string? SortDir { get; set; }
|
|
}
|
|
}
|