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

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Request DTO for casualty processing operations
    /// </summary>
    public class CasualtyProcessingRequestDto
    {
        /// <summary>
        /// Combat log ID for casualty processing
        /// </summary>
        [Required]
        [Range(1, int.MaxValue)]
        public int CombatLogId { get; set; }

        /// <summary>
        /// Player ID whose casualties to process
        /// </summary>
        [Required]
        [Range(1, int.MaxValue)]
        public int PlayerId { get; set; }

        /// <summary>
        /// Battle casualties by troop type
        /// </summary>
        [Required]
        public Dictionary<string, long> BattleCasualties { get; set; } = new();

        /// <summary>
        /// Whether to apply VIP casualty reduction bonuses
        /// </summary>
        public bool ApplyVipReductions { get; set; } = true;

        /// <summary>
        /// Whether to apply alliance hospital bonuses
        /// </summary>
        public bool ApplyAllianceBonuses { get; set; } = true;

        /// <summary>
        /// Dragon healing abilities to apply
        /// </summary>
        public List<string> DragonHealingSkills { get; set; } = new();

        /// <summary>
        /// Equipment protection bonuses active
        /// </summary>
        public Dictionary<string, decimal> ProtectionBonuses { get; set; } = new();

        /// <summary>
        /// Hospital capacity overrides if applicable
        /// </summary>
        public Dictionary<string, long>? HospitalCapacityOverrides { get; set; }

        /// <summary>
        /// Whether to use premium healing acceleration
        /// </summary>
        public bool UsePremiumHealing { get; set; } = false;

        /// <summary>
        /// Resources to spend on casualty recovery
        /// </summary>
        public Dictionary<string, long> RecoveryResourceBudget { get; set; } = new();

        /// <summary>
        /// Additional casualty processing parameters
        /// </summary>
        public Dictionary<string, object> ProcessingParameters { get; set; } = new();
    }
}