namespace Haoliang.Models.System
{
    public class SystemConfigDetailed
    {
        public int ConfigId { get; set; }
        public string ConfigKey { get; set; }
        public string ConfigValue { get; set; }
        public string Category { get; set; }
        public string Description { get; set; }
        public DateTime CreateTime { get; set; }
        public DateTime LastUpdated { get; set; }
        public bool IsSystem { get; set; }
    }

    public class ScheduledTaskDetailed
    {
        public string TaskId { get; set; }
        public string TaskName { get; set; }
        public string CronExpression { get; set; }
        public TaskStatus TaskStatus { get; set; }
        public bool IsActive { get; set; }
        public string Description { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime? LastRunAt { get; set; }
        public DateTime? CompletedAt { get; set; }
        public string ErrorMessage { get; set; }
    }

    public class TaskExecutionResultDetailed
    {
        public string TaskId { get; set; }
        public bool IsSuccess { get; set; }
        public string ErrorMessage { get; set; }
        public object Result { get; set; }
        public DateTime ExecutionTime { get; set; }
        public TimeSpan Duration { get; set; }
    }

    public enum TaskStatusDetailed
    {
        Pending = 1,
        Running = 2,
        Completed = 3,
        Failed = 4,
        Cancelled = 5
    }

    public class SystemMessage
    {
        public int MessageId { get; set; }
        public string MessageType { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime Timestamp { get; set; }
        public bool IsRead { get; set; }
        Dictionary<string, object> Metadata { get; set; }
    }

    public class SystemHealthDetailed
    {
        public string Status { get; set; }
        public DateTime Timestamp { get; set; }
        public List<HealthCheck> Checks { get; set; }
        public Dictionary<string, object> Metrics { get; set; }
    }

    public class HealthCheck
    {
        public string Name { get; set; }
        public string Status { get; set; }
        public string Message { get; set; }
        public Exception Error { get; set; }
    }
}