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

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for player achievements and milestones
    /// </summary>
    public class AchievementsResponseDto
    {
        /// <summary>
        /// Player ID for the achievements
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Recently unlocked achievements
        /// </summary>
        public List<Dictionary<string, object>> RecentAchievements { get; set; } = new();

        /// <summary>
        /// All completed achievements
        /// </summary>
        public List<Dictionary<string, object>> CompletedAchievements { get; set; } = new();

        /// <summary>
        /// Achievements currently in progress
        /// </summary>
        public List<Dictionary<string, object>> InProgressAchievements { get; set; } = new();

        /// <summary>
        /// Achievement categories and completion status
        /// </summary>
        public Dictionary<string, object> CategoryProgress { get; set; } = new();

        /// <summary>
        /// Total achievement points earned
        /// </summary>
        public long TotalAchievementPoints { get; set; }

        /// <summary>
        /// Rewards available for collection
        /// </summary>
        public List<Dictionary<string, object>> PendingRewards { get; set; } = new();

        /// <summary>
        /// Achievement-based titles available
        /// </summary>
        public List<Dictionary<string, object>> AvailableTitles { get; set; } = new();

        /// <summary>
        /// Player's current selected title
        /// </summary>
        public Dictionary<string, object>? CurrentTitle { get; set; }

        /// <summary>
        /// Achievement leaderboard position
        /// </summary>
        public int? LeaderboardRank { get; set; }

        /// <summary>
        /// When achievements were last updated
        /// </summary>
        public DateTime LastUpdated { get; set; }

        /// <summary>
        /// Additional achievement system data
        /// </summary>
        public Dictionary<string, object> AchievementSystemData { get; set; } = new();
    }
}