Files
2024-03-10 00:43:57 +07:00

45 lines
1.1 KiB
C#

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;
}
}