namespace JdeScoping.Domain.Models;
///
/// Represents a manually requested data sync operation.
///
public class ManualSyncRequest
{
///
/// Gets or sets the unique identifier.
///
public int Id { get; set; }
///
/// Gets or sets the name of the ETL pipeline to sync.
///
public string PipelineName { get; set; } = string.Empty;
///
/// Gets or sets the type of sync (mass, daily, hourly).
///
public string SyncType { get; set; } = string.Empty;
///
/// Gets or sets the UTC timestamp when the request was created.
///
public DateTime RequestDT { get; set; }
///
/// Gets or sets the username of the user who created the request.
///
public string RequestedBy { get; set; } = string.Empty;
///
/// Gets or sets the UTC timestamp when the sync completed, or null if pending.
///
public DateTime? CompletedDT { get; set; }
///
/// Gets or sets the UTC timestamp when the request was cancelled, or null if not cancelled.
///
public DateTime? CancelDT { get; set; }
///
/// Gets or sets the username of the user who cancelled the request, or null.
///
public string? CancelledBy { get; set; }
///
/// Gets or sets the row version for optimistic concurrency.
///
public byte[] RowVersion { get; set; } = Array.Empty();
///
/// Gets the derived status based on CompletedDT and CancelDT.
///
public string Status => CancelDT.HasValue ? "Cancelled"
: CompletedDT.HasValue ? "Completed"
: "Pending";
}