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

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for player action validation results
    /// </summary>
    public class ActionValidationResponseDto
    {
        /// <summary>
        /// Player ID who requested the action
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Action that was validated
        /// </summary>
        public string ActionType { get; set; } = string.Empty;

        /// <summary>
        /// Whether the action is valid and can be performed
        /// </summary>
        public bool IsValid { get; set; }

        /// <summary>
        /// Validation errors if action is not valid
        /// </summary>
        public List<string> ValidationErrors { get; set; } = new();

        /// <summary>
        /// Requirements that must be met for the action
        /// </summary>
        public Dictionary<string, object> Requirements { get; set; } = new();

        /// <summary>
        /// Player's current status against requirements
        /// </summary>
        public Dictionary<string, object> PlayerStatus { get; set; } = new();

        /// <summary>
        /// Costs associated with performing the action
        /// </summary>
        public Dictionary<string, object> ActionCosts { get; set; } = new();

        /// <summary>
        /// Expected benefits from performing the action
        /// </summary>
        public Dictionary<string, object> ExpectedBenefits { get; set; } = new();

        /// <summary>
        /// Cooldown information if applicable
        /// </summary>
        public Dictionary<string, object>? CooldownInfo { get; set; }

        /// <summary>
        /// Anti-pay-to-win validation results
        /// </summary>
        public Dictionary<string, object> BalanceValidation { get; set; } = new();

        /// <summary>
        /// When validation was performed
        /// </summary>
        public DateTime ValidationTime { get; set; }

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