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

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Request DTO for player action validation
    /// </summary>
    public class ActionValidationRequestDto
    {
        /// <summary>
        /// Type of action to validate
        /// </summary>
        [Required]
        [StringLength(100)]
        public string ActionType { get; set; } = string.Empty;

        /// <summary>
        /// Target of the action (player ID, building ID, etc.)
        /// </summary>
        [Range(1, int.MaxValue)]
        public int? TargetId { get; set; }

        /// <summary>
        /// Parameters specific to the action being validated
        /// </summary>
        public Dictionary<string, object> ActionParameters { get; set; } = new();

        /// <summary>
        /// Whether to include detailed validation information
        /// </summary>
        public bool IncludeDetailedInfo { get; set; } = false;

        /// <summary>
        /// Whether to validate anti-pay-to-win balance
        /// </summary>
        public bool ValidateBalance { get; set; } = true;

        /// <summary>
        /// Whether to check for skill-based alternatives
        /// </summary>
        public bool CheckSkillAlternatives { get; set; } = true;

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