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