using System;
using System.Collections.Generic;
using System.Linq;
namespace MCPForUnity.Editor.Dependencies.Models
{
///
/// Result of a comprehensive dependency check
///
[Serializable]
public class DependencyCheckResult
{
///
/// List of all dependency statuses checked
///
public List Dependencies { get; set; }
///
/// Overall system readiness for MCP operations
///
public bool IsSystemReady { get; set; }
///
/// Whether all required dependencies are available
///
public bool AllRequiredAvailable => Dependencies?.Where(d => d.IsRequired).All(d => d.IsAvailable) ?? false;
///
/// Whether any optional dependencies are missing
///
public bool HasMissingOptional => Dependencies?.Where(d => !d.IsRequired).Any(d => !d.IsAvailable) ?? false;
///
/// Summary message about the dependency state
///
public string Summary { get; set; }
///
/// Recommended next steps for the user
///
public List RecommendedActions { get; set; }
///
/// Timestamp when this check was performed
///
public DateTime CheckedAt { get; set; }
public DependencyCheckResult()
{
Dependencies = new List();
RecommendedActions = new List();
CheckedAt = DateTime.UtcNow;
}
///
/// Get dependencies by availability status
///
public List GetMissingDependencies()
{
return Dependencies?.Where(d => !d.IsAvailable).ToList() ?? new List();
}
///
/// Get missing required dependencies
///
public List GetMissingRequired()
{
return Dependencies?.Where(d => d.IsRequired && !d.IsAvailable).ToList() ?? new List();
}
///
/// Generate a user-friendly summary of the dependency state
///
public void GenerateSummary()
{
var missing = GetMissingDependencies();
var missingRequired = GetMissingRequired();
if (missing.Count == 0)
{
Summary = "All dependencies are available and ready.";
IsSystemReady = true;
}
else if (missingRequired.Count == 0)
{
Summary = $"System is ready. {missing.Count} optional dependencies are missing.";
IsSystemReady = true;
}
else
{
Summary = $"System is not ready. {missingRequired.Count} required dependencies are missing.";
IsSystemReady = false;
}
}
}
}