using Microsoft.EntityFrameworkCore; using PARR.Domain.Constants; using PARR.Domain.Entities.Attributes; using PARR.Domain.Entities.Base; using PARR.Domain.Entities.Base.History; using PARR.Domain.Enums; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace PARR.Domain.Entities.TaskEntities { [Table("Tasks", Schema = DatabaseSchemas.Task)] [Comment("Таблица заданий")] public class TaskItem : IBaseEntity, IHistoryInitiator { [Key] public Guid Id { get; set; } public DateTimeOffset DateCreated { get; set; } [ManualControl] public DateTimeOffset? DateModified { get; set; } public TaskTypeEnum TypeCode { get; set; } public TaskItemStatusEnum StatusCode { get; set; } public string? Payload { get; set; } /// /// Кол-во попыток /// public int RetryCount { get; set; } /// /// Дата завершения (устанавливается или когда Успех или когда Ошибка) /// public DateTimeOffset? ProcessedAt { get; set; } /// /// Процент выполнения задачи (0-100). /// null = ожидает начала, 100 = успешно завершена. /// При ошибке сохраняется последнее значение. /// [Comment("Процент выполнения задачи")] public int? ProgressPercent { get; set; } public string? InitiatorIp { get; set; } public ParrComponentsEnum? InitiatorParrComponentId { get; set; } public string? InitiatorComment { get; set; } [ForeignKey(nameof(TypeCode))] public TaskType? TaskType { get; set; } [ForeignKey(nameof(StatusCode))] public TaskStatus? TaskStatus { get; set; } public ICollection TaskErrors { get; set; } = new HashSet(); } }