/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\PlayerProfileResponseDto.cs
 * Created: 2025-10-19
 * Last Modified: 2025-10-19
 * Description: Response DTO for player profile information including core stats and progression
 * Last Edit Notes: Individual file implementation with complete player profile data structure
 */

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for comprehensive player profile information
    /// </summary>
    public class PlayerProfileResponseDto
    {
        /// <summary>
        /// Player's unique identifier
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Player's username
        /// </summary>
        [Required]
        public string PlayerName { get; set; } = string.Empty;

        /// <summary>
        /// Current castle level (capped at 30)
        /// </summary>
        public int CastleLevel { get; set; }

        /// <summary>
        /// Overall player power rating
        /// </summary>
        public decimal Power { get; set; }

        /// <summary>
        /// Current VIP tier
        /// </summary>
        public int VipTier { get; set; }

        /// <summary>
        /// Kingdom the player belongs to
        /// </summary>
        public int KingdomId { get; set; }

        /// <summary>
        /// Alliance ID if player is in an alliance
        /// </summary>
        public int? AllianceId { get; set; }

        /// <summary>
        /// Alliance name if applicable
        /// </summary>
        public string? AllianceName { get; set; }

        /// <summary>
        /// Player's position on the map
        /// </summary>
        public (int X, int Y) Position { get; set; }

        /// <summary>
        /// Player's current resource counts
        /// </summary>
        public Dictionary<string, decimal> Resources { get; set; } = new();

        /// <summary>
        /// Combat statistics
        /// </summary>
        public Dictionary<string, object> CombatStats { get; set; } = new();

        /// <summary>
        /// Account creation date
        /// </summary>
        public DateTime CreatedAt { get; set; }

        /// <summary>
        /// Last active timestamp
        /// </summary>
        public DateTime LastActiveAt { get; set; }

        /// <summary>
        /// Whether player is active
        /// </summary>
        public bool IsActive { get; set; }
    }
}