namespace InServiceQue.Core.Models; public class QueueTask: IQueueTask { private string _type; public Guid Id { get; init; } public string TaskType { get; init; } = default!; public DateTime DateCreated { get; init; } public DateTime? DateProcessed { get; private set; } public DateTime? DateClosed { get; private set; } public int Attempts { get; private set; } public string? Payload { get; init; } public QueueTask(string taskType, string? payload) { Id = Guid.NewGuid(); TaskType = taskType; DateCreated = DateTime.UtcNow; Payload = payload; } public QueueTask(IQueueTask task): this(task.GetTypeString(), task.GetPayloadString()) { } public void MarkAttempt() { DateProcessed = DateTime.UtcNow; Attempts++; } public void SolveTask() { DateClosed = DateTime.UtcNow; } string IQueueTask.GetTypeString() { return TaskType; } string IQueueTask.GetPayloadString() { return Payload ?? string.Empty; } }