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

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Request DTO for alliance leave operations
    /// </summary>
    public class AllianceLeaveRequestDto
    {
        /// <summary>
        /// Reason for leaving the alliance
        /// </summary>
        [StringLength(500)]
        public string? LeaveReason { get; set; }

        /// <summary>
        /// Whether this is an immediate leave or scheduled
        /// </summary>
        public bool ImmediateLeave { get; set; } = true;

        /// <summary>
        /// Scheduled leave time if not immediate
        /// </summary>
        public DateTime? ScheduledLeaveTime { get; set; }

        /// <summary>
        /// Whether to forfeit leadership roles immediately
        /// </summary>
        public bool ForfeitLeadership { get; set; } = true;

        /// <summary>
        /// Transfer leadership to specific player ID (for leaders)
        /// </summary>
        [Range(1, int.MaxValue)]
        public int? TransferLeadershipTo { get; set; }

        /// <summary>
        /// Message to leave for alliance members
        /// </summary>
        [StringLength(500)]
        public string? FarewellMessage { get; set; }

        /// <summary>
        /// Additional leave preferences
        /// </summary>
        public Dictionary<string, object> LeavePreferences { get; set; } = new();
    }
}