/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\FraudDetectionResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for fraud detection analysis results
 * Last Edit Notes: Individual file implementation for comprehensive fraud detection results with risk scoring and recommendation system
 */

namespace ShadowedRealms.Shared.DTOs.Purchase
{
    /// <summary>
    /// Response DTO for fraud detection analysis results
    /// </summary>
    public class FraudDetectionResponseDto
    {
        /// <summary>
        /// Player being analyzed for fraud
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Transaction analyzed for fraud indicators
        /// </summary>
        public string TransactionId { get; set; } = string.Empty;

        /// <summary>
        /// Overall fraud risk score (0-100)
        /// </summary>
        public int FraudRiskScore { get; set; }

        /// <summary>
        /// Risk classification (Low, Medium, High, Critical)
        /// </summary>
        public string RiskLevel { get; set; } = string.Empty;

        /// <summary>
        /// Whether transaction should be blocked
        /// </summary>
        public bool RecommendBlock { get; set; }

        /// <summary>
        /// Specific fraud indicators detected
        /// </summary>
        public List<string> FraudIndicators { get; set; } = new();

        /// <summary>
        /// Detailed fraud analysis results
        /// </summary>
        public Dictionary<string, object> FraudAnalysis { get; set; } = new();

        /// <summary>
        /// Historical pattern analysis results
        /// </summary>
        public Dictionary<string, object>? HistoricalPatterns { get; set; }

        /// <summary>
        /// Recommended actions based on analysis
        /// </summary>
        public List<string> RecommendedActions { get; set; } = new();

        /// <summary>
        /// Confidence level in the fraud assessment (0-100)
        /// </summary>
        public int ConfidenceLevel { get; set; }

        /// <summary>
        /// When fraud analysis was performed
        /// </summary>
        public DateTime AnalysisTime { get; set; }

        /// <summary>
        /// Additional fraud detection metadata
        /// </summary>
        public Dictionary<string, object>? FraudMetadata { get; set; }
    }
}