/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CombatResultsRequestDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Request DTO for querying combat results
 * Last Edit Notes: Individual file implementation for combat results query parameters
 */

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Request DTO for querying combat results
    /// </summary>
    public class CombatResultsRequestDto
    {
        /// <summary>
        /// Specific combat log ID to retrieve (optional)
        /// </summary>
        [Range(1, int.MaxValue)]
        public int? CombatLogId { get; set; }

        /// <summary>
        /// Filter by battle outcome
        /// </summary>
        [StringLength(50)]
        public string? OutcomeFilter { get; set; }

        /// <summary>
        /// Filter by player role in battles
        /// </summary>
        [StringLength(50)]
        public string? RoleFilter { get; set; }

        /// <summary>
        /// Start date for battle history query
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// End date for battle history query
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// Maximum number of results to return
        /// </summary>
        [Range(1, 100)]
        public int MaxResults { get; set; } = 20;

        /// <summary>
        /// Whether to include detailed battle statistics
        /// </summary>
        public bool IncludeDetailedStats { get; set; } = false;

        /// <summary>
        /// Whether to include dragon participation data
        /// </summary>
        public bool IncludeDragonData { get; set; } = false;

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