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

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Request DTO for resource spending operations
    /// </summary>
    public class ResourceSpendingRequestDto
    {
        /// <summary>
        /// Resources to spend by type
        /// </summary>
        [Required]
        public Dictionary<string, long> ResourcesToSpend { get; set; } = new();

        /// <summary>
        /// Purpose or category of the spending
        /// </summary>
        [Required]
        [StringLength(100)]
        public string SpendingCategory { get; set; } = string.Empty;

        /// <summary>
        /// Specific item or upgrade being purchased
        /// </summary>
        [Required]
        [StringLength(100)]
        public string TargetItem { get; set; } = string.Empty;

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

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

        /// <summary>
        /// Priority level for the spending operation
        /// </summary>
        [Range(1, 5)]
        public int Priority { get; set; } = 3;

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