/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\VipProgressionResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for VIP progression management results
 * Last Edit Notes: Individual file implementation for VIP progression results with secret tier tracking and benefit calculations
 */

namespace ShadowedRealms.Shared.DTOs.Purchase
{
    /// <summary>
    /// Response DTO for VIP progression management results
    /// </summary>
    public class VipProgressionResponseDto
    {
        /// <summary>
        /// Player whose VIP progression was managed
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Previous VIP level before progression
        /// </summary>
        public int PreviousVipLevel { get; set; }

        /// <summary>
        /// New VIP level after progression
        /// </summary>
        public int NewVipLevel { get; set; }

        /// <summary>
        /// Previous VIP points/spending amount
        /// </summary>
        public decimal PreviousVipPoints { get; set; }

        /// <summary>
        /// New VIP points/spending amount
        /// </summary>
        public decimal NewVipPoints { get; set; }

        /// <summary>
        /// Points needed for next VIP level
        /// </summary>
        public decimal PointsToNextLevel { get; set; }

        /// <summary>
        /// Whether player has access to secret tiers
        /// </summary>
        public bool HasSecretTierAccess { get; set; }

        /// <summary>
        /// Secret tier level if applicable
        /// </summary>
        public int? SecretTierLevel { get; set; }

        /// <summary>
        /// New benefits unlocked from progression
        /// </summary>
        public List<string> NewBenefitsUnlocked { get; set; } = new();

        /// <summary>
        /// Updated VIP benefit calculations
        /// </summary>
        public Dictionary<string, object> VipBenefits { get; set; } = new();

        /// <summary>
        /// Chargeback protection status
        /// </summary>
        public Dictionary<string, object> ChargebackProtection { get; set; } = new();

        /// <summary>
        /// When the progression was processed
        /// </summary>
        public DateTime ProcessedAt { get; set; }

        /// <summary>
        /// Additional progression details
        /// </summary>
        public Dictionary<string, object>? ProgressionDetails { get; set; }
    }
}