/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ContestedZoneResponseDto.cs
 * Created: 2025-10-22
 * Last Modified: 2025-10-22
 * Description: Response DTO for contested zone information and battles
 * Last Edit Notes: Initial creation following established Alliance DTO patterns
 */

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for contested zone information and battles
    /// </summary>
    public class ContestedZoneResponseDto
    {
        /// <summary>
        /// Unique identifier for the contested zone
        /// </summary>
        public int ZoneId { get; set; }

        /// <summary>
        /// Zone name or identifier
        /// </summary>
        public string ZoneName { get; set; } = string.Empty;

        /// <summary>
        /// Current controlling alliance
        /// </summary>
        public int? ControllingAllianceId { get; set; }

        /// <summary>
        /// Name of controlling alliance
        /// </summary>
        public string? ControllingAllianceName { get; set; }

        /// <summary>
        /// Alliances currently contesting this zone
        /// </summary>
        public List<Dictionary<string, object>> ContestingAlliances { get; set; } = new();

        /// <summary>
        /// Zone coordinates and boundaries
        /// </summary>
        public Dictionary<string, object> ZoneCoordinates { get; set; } = new();

        /// <summary>
        /// Resources and benefits provided by controlling this zone
        /// </summary>
        public Dictionary<string, object> ZoneBenefits { get; set; } = new();

        /// <summary>
        /// Active battles in this zone
        /// </summary>
        public List<Dictionary<string, object>> ActiveBattles { get; set; } = new();

        /// <summary>
        /// Control percentage for each alliance (0-100)
        /// </summary>
        public Dictionary<string, decimal> ControlPercentages { get; set; } = new();

        /// <summary>
        /// Time remaining in contest period
        /// </summary>
        public TimeSpan? ContestTimeRemaining { get; set; }

        /// <summary>
        /// Zone contest status (Open, Contested, Locked, Cooldown)
        /// </summary>
        public string ContestStatus { get; set; } = string.Empty;

        /// <summary>
        /// Historical control changes
        /// </summary>
        public List<Dictionary<string, object>> ControlHistory { get; set; } = new();

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