/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceLeaveResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for alliance leave operations
 * Last Edit Notes: Individual file implementation for alliance leave results
 */

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for alliance leave operations
    /// </summary>
    public class AllianceLeaveResponseDto
    {
        /// <summary>
        /// Player ID who left the alliance
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Former alliance ID
        /// </summary>
        public int FormerAllianceId { get; set; }

        /// <summary>
        /// Former alliance name for reference
        /// </summary>
        public string FormerAllianceName { get; set; } = string.Empty;

        /// <summary>
        /// Whether the leave operation was successful
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// Reason for leaving (Voluntary, Kicked, AllianceDisbanded)
        /// </summary>
        public string LeaveReason { get; set; } = string.Empty;

        /// <summary>
        /// Alliance benefits that were lost
        /// </summary>
        public Dictionary<string, object> BenefitsLost { get; set; } = new();

        /// <summary>
        /// Research bonuses no longer available
        /// </summary>
        public Dictionary<string, decimal> ResearchBonusesLost { get; set; } = new();

        /// <summary>
        /// Coalition memberships that were affected
        /// </summary>
        public List<Dictionary<string, object>> CoalitionChanges { get; set; } = new();

        /// <summary>
        /// Cooldown period before joining another alliance
        /// </summary>
        public TimeSpan? JoinCooldown { get; set; }

        /// <summary>
        /// When the leave operation was processed
        /// </summary>
        public DateTime LeaveTime { get; set; }

        /// <summary>
        /// Additional separation data and consequences
        /// </summary>
        public Dictionary<string, object> SeparationData { get; set; } = new();
    }
}