using ECMJobRunner.Domain.ValueObjects; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ECMJobRunner.Domain.Entities { /// /// Profile Execution History /// Stores the execution history and results of job runner profiles /// Result ID: 0 = OK; 1 = ERROR; 2 = WARNING /// [Table("TBJR_OUT_PROFILE_HISTORY", Schema = "dbo")] public class ProfileHistory { /// /// Primary Key /// [Key] [Column("PK_TBJR_OUT_PROFILE_HISTORY_ID")] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } /// /// Foreign Key to Profile /// [Required] [Column("FK_TBJR_CFG_PROFILE_ID")] [ForeignKey(nameof(CfgProfile))] public long ProfileId { get; set; } /// /// Result ID: 0 = OK; 1 = ERROR; 2 = WARNING /// [Required] [Column("RESULT_ID")] public byte ResultId { get; set; } /// /// Gets or sets the result type of the job execution. /// This property is not mapped to a database column; it wraps . /// If does not correspond to a defined value, returns . /// [NotMapped] public ResultType Result { get => Enum.IsDefined(typeof(ResultType), ResultId) ? (ResultType)ResultId : ResultType.Unknown; set => ResultId = (byte)value; } /// /// Result text/message /// [Required] [Column("RESULT_TEXT")] public string ResultText { get; set; } = string.Empty; /// /// Created by (max 50 chars) /// [Required] [Column("ADDED_WHO")] [MaxLength(50)] public string AddedWho { get; set; } = "DEFAULT"; /// /// Created at /// [Required] [Column("ADDED_WHEN")] public DateTime AddedWhen { get; set; } = DateTime.Now; /// /// Modified by (max 50 chars) /// [Column("CHANGED_WHO")] [MaxLength(50)] public string? ChangedWho { get; set; } /// /// Modified at /// [Column("CHANGED_WHEN")] public DateTime? ChangedWhen { get; set; } // Navigation properties /// /// Associated Profile /// public virtual CfgProfile? CfgProfile { get; set; } } }