/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TerritoryDefenseResponseDto.cs
 * Created: 2025-10-22
 * Last Modified: 2025-10-22
 * Description: Response DTO for alliance territory defense operations
 * Last Edit Notes: Initial creation following established Alliance DTO patterns
 */

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for alliance territory defense operations
    /// </summary>
    public class TerritoryDefenseResponseDto
    {
        /// <summary>
        /// Unique identifier for the defense operation
        /// </summary>
        public int DefenseId { get; set; }

        /// <summary>
        /// Alliance ID defending the territory
        /// </summary>
        public int DefendingAllianceId { get; set; }

        /// <summary>
        /// Territory being defended
        /// </summary>
        public Dictionary<string, object> Territory { get; set; } = new();

        /// <summary>
        /// Current threat level (1-10)
        /// </summary>
        public int ThreatLevel { get; set; }

        /// <summary>
        /// Attacking forces detected
        /// </summary>
        public List<Dictionary<string, object>> AttackingForces { get; set; } = new();

        /// <summary>
        /// Defensive forces deployed
        /// </summary>
        public Dictionary<string, int> DefensiveForces { get; set; } = new();

        /// <summary>
        /// Defensive structures and their status
        /// </summary>
        public Dictionary<string, object> DefensiveStructures { get; set; } = new();

        /// <summary>
        /// Coalition allies providing support
        /// </summary>
        public List<Dictionary<string, object>> CoalitionSupport { get; set; } = new();

        /// <summary>
        /// Defense strategy being employed
        /// </summary>
        public string DefenseStrategy { get; set; } = string.Empty;

        /// <summary>
        /// Estimated time until attack arrives
        /// </summary>
        public TimeSpan? TimeToAttack { get; set; }

        /// <summary>
        /// Defense readiness percentage (0-100)
        /// </summary>
        public decimal ReadinessPercentage { get; set; }

        /// <summary>
        /// Recent defensive actions taken
        /// </summary>
        public List<Dictionary<string, object>> RecentActions { get; set; } = new();

        /// <summary>
        /// Defense status (Preparing, Ready, UnderAttack, Repelled, Breached)
        /// </summary>
        public string DefenseStatus { get; set; } = string.Empty;

        /// <summary>
        /// When this defense information was last updated
        /// </summary>
        public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
    }
}