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

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for alliance member removal operations and results
    /// </summary>
    public class MemberRemovalResponseDto
    {
        /// <summary>
        /// Unique identifier for the removal operation
        /// </summary>
        public int RemovalId { get; set; }

        /// <summary>
        /// Alliance performing the removal
        /// </summary>
        public int AllianceId { get; set; }

        /// <summary>
        /// Player being removed
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Name of the player being removed
        /// </summary>
        public string PlayerName { get; set; } = string.Empty;

        /// <summary>
        /// Type of removal (Kick, Ban, Voluntary, Inactive, Disciplinary)
        /// </summary>
        public string RemovalType { get; set; } = string.Empty;

        /// <summary>
        /// Officer who initiated the removal
        /// </summary>
        public int InitiatedBy { get; set; }

        /// <summary>
        /// Name of the officer who initiated removal
        /// </summary>
        public string InitiatedByName { get; set; } = string.Empty;

        /// <summary>
        /// Reason for removal
        /// </summary>
        public string RemovalReason { get; set; } = string.Empty;

        /// <summary>
        /// Player's alliance statistics at time of removal
        /// </summary>
        public Dictionary<string, object> PlayerStats { get; set; } = new();

        /// <summary>
        /// Resources or assets to be handled
        /// </summary>
        public Dictionary<string, object> AssetHandling { get; set; } = new();

        /// <summary>
        /// Impact on ongoing alliance operations
        /// </summary>
        public Dictionary<string, object> OperationalImpact { get; set; } = new();

        /// <summary>
        /// Cooldown period before player can rejoin
        /// </summary>
        public TimeSpan? RejoinCooldown { get; set; }

        /// <summary>
        /// Whether removal was successful
        /// </summary>
        public bool RemovalSuccessful { get; set; }

        /// <summary>
        /// Any errors or issues during removal
        /// </summary>
        public string? RemovalErrors { get; set; }

        /// <summary>
        /// Post-removal alliance statistics
        /// </summary>
        public Dictionary<string, object> PostRemovalStats { get; set; } = new();

        /// <summary>
        /// When the removal was completed
        /// </summary>
        public DateTime RemovalCompleted { get; set; } = DateTime.UtcNow;
    }
}