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

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for alliance role management and hierarchy
    /// </summary>
    public class RoleManagementResponseDto
    {
        /// <summary>
        /// Alliance ID for role management
        /// </summary>
        public int AllianceId { get; set; }

        /// <summary>
        /// Complete alliance hierarchy structure
        /// </summary>
        public Dictionary<string, object> AllianceHierarchy { get; set; } = new();

        /// <summary>
        /// Available roles and their permissions
        /// </summary>
        public List<Dictionary<string, object>> AvailableRoles { get; set; } = new();

        /// <summary>
        /// Current role assignments
        /// </summary>
        public List<Dictionary<string, object>> RoleAssignments { get; set; } = new();

        /// <summary>
        /// Role change history
        /// </summary>
        public List<Dictionary<string, object>> RoleHistory { get; set; } = new();

        /// <summary>
        /// Permission matrix for each role
        /// </summary>
        public Dictionary<string, Dictionary<string, bool>> PermissionMatrix { get; set; } = new();

        /// <summary>
        /// Members eligible for promotion
        /// </summary>
        public List<Dictionary<string, object>> PromotionCandidates { get; set; } = new();

        /// <summary>
        /// Pending role change requests
        /// </summary>
        public List<Dictionary<string, object>> PendingRequests { get; set; } = new();

        /// <summary>
        /// Role capacity limits
        /// </summary>
        public Dictionary<string, int> RoleCapacities { get; set; } = new();

        /// <summary>
        /// Current role utilization
        /// </summary>
        public Dictionary<string, int> RoleUtilization { get; set; } = new();

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