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

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Request DTO for alliance role management operations
    /// </summary>
    public class RoleManagementRequestDto
    {
        /// <summary>
        /// Player to modify role for
        /// </summary>
        [Required]
        public int PlayerId { get; set; }

        /// <summary>
        /// Action to take (Promote, Demote, Assign, Remove, Transfer)
        /// </summary>
        [Required]
        [StringLength(50)]
        public string Action { get; set; } = string.Empty;

        /// <summary>
        /// Target role for the action
        /// </summary>
        [Required]
        [StringLength(50)]
        public string TargetRole { get; set; } = string.Empty;

        /// <summary>
        /// Previous role (for validation)
        /// </summary>
        [StringLength(50)]
        public string? PreviousRole { get; set; }

        /// <summary>
        /// Justification for the role change
        /// </summary>
        [StringLength(500)]
        public string? Justification { get; set; }

        /// <summary>
        /// Whether to notify the player of the change
        /// </summary>
        public bool NotifyPlayer { get; set; } = true;

        /// <summary>
        /// Custom permissions to grant (if supported)
        /// </summary>
        public Dictionary<string, bool>? CustomPermissions { get; set; }

        /// <summary>
        /// Role change parameters and conditions
        /// </summary>
        public Dictionary<string, object>? RoleParameters { get; set; }
    }
}