mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 18:53:12 +00:00
59 lines
2.3 KiB
C#
59 lines
2.3 KiB
C#
using Data.SeaHavenIndustries.Enums;
|
|
|
|
namespace SeaHaven.DataServices.Interfaces
|
|
{
|
|
public interface IWorkOrderWebhookDataService
|
|
{
|
|
Task<WorkOrderWebhookPersistenceResult> ApplyAsync(
|
|
WorkOrderWebhookMutation mutation,
|
|
CancellationToken cancellationToken);
|
|
}
|
|
|
|
public sealed record WorkOrderWebhookMutation
|
|
{
|
|
public required string DeliveryId { get; init; }
|
|
public required string EventType { get; init; }
|
|
public required DateTimeOffset OccurredAt { get; init; }
|
|
public required DateTimeOffset ProcessedAt { get; init; }
|
|
public required string BodySha256 { get; init; }
|
|
public required string ExternalWorkOrderId { get; init; }
|
|
public required string WorkerOrderNumber { get; init; }
|
|
public required string Source { get; init; }
|
|
public required DateTimeOffset UpdatedAt { get; init; }
|
|
public required string VersionHash { get; init; }
|
|
public bool IsStateEvent { get; init; }
|
|
public bool IsCancelled { get; init; }
|
|
public string? Title { get; init; }
|
|
public string? Description { get; init; }
|
|
public string? Status { get; init; }
|
|
public LifecycleStatus? LifecycleStatus { get; init; }
|
|
public string? Severity { get; init; }
|
|
public string? Priority { get; init; }
|
|
public string? AssignedTo { get; init; }
|
|
public string? RecordType { get; init; }
|
|
public string? SourceEmailS3Key { get; init; }
|
|
public string? Customer { get; init; }
|
|
public string? SiteCode { get; init; }
|
|
public string? Building { get; init; }
|
|
public string? Address { get; init; }
|
|
public DateTime? DueDate { get; init; }
|
|
public DateTime? DateReported { get; init; }
|
|
public DateTime? ScheduledStart { get; init; }
|
|
public DateTime? CreatedAt { get; init; }
|
|
public string? CommentId { get; init; }
|
|
public string? CommentText { get; init; }
|
|
public string? Commenter { get; init; }
|
|
public string? CommentType { get; init; }
|
|
}
|
|
|
|
public enum WorkOrderWebhookPersistenceStatus
|
|
{
|
|
Applied,
|
|
Duplicate,
|
|
HashConflict
|
|
}
|
|
|
|
public sealed record WorkOrderWebhookPersistenceResult(
|
|
WorkOrderWebhookPersistenceStatus Status,
|
|
bool StateMutationSkipped = false);
|
|
}
|