/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MembershipProcessingResponseDto.cs
 * Created: 2025-10-22
 * Last Modified: 2025-10-22
 * Description: Response DTO for alliance membership processing and application status
 * Last Edit Notes: Initial creation following established Alliance DTO patterns
 */

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for alliance membership processing and application status
    /// </summary>
    public class MembershipProcessingResponseDto
    {
        /// <summary>
        /// Unique identifier for the membership application
        /// </summary>
        public int ApplicationId { get; set; }

        /// <summary>
        /// Alliance being applied to
        /// </summary>
        public int AllianceId { get; set; }

        /// <summary>
        /// Player applying for membership
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Player name
        /// </summary>
        public string PlayerName { get; set; } = string.Empty;

        /// <summary>
        /// Application status (Pending, UnderReview, Approved, Rejected, Withdrawn)
        /// </summary>
        public string ApplicationStatus { get; set; } = string.Empty;

        /// <summary>
        /// Player statistics and qualifications
        /// </summary>
        public Dictionary<string, object> PlayerStats { get; set; } = new();

        /// <summary>
        /// Application message from player
        /// </summary>
        public string ApplicationMessage { get; set; } = string.Empty;

        /// <summary>
        /// Requirements met by the applicant
        /// </summary>
        public Dictionary<string, bool> RequirementsMet { get; set; } = new();

        /// <summary>
        /// Alliance requirements for membership
        /// </summary>
        public Dictionary<string, object> AllianceRequirements { get; set; } = new();

        /// <summary>
        /// Reviews from alliance officers
        /// </summary>
        public List<Dictionary<string, object>> OfficerReviews { get; set; } = new();

        /// <summary>
        /// Processing timeline and history
        /// </summary>
        public List<Dictionary<string, object>> ProcessingHistory { get; set; } = new();

        /// <summary>
        /// Estimated time for decision
        /// </summary>
        public TimeSpan? EstimatedDecisionTime { get; set; }

        /// <summary>
        /// Reason for rejection (if applicable)
        /// </summary>
        public string? RejectionReason { get; set; }

        /// <summary>
        /// When the application was submitted
        /// </summary>
        public DateTime ApplicationSubmitted { get; set; }

        /// <summary>
        /// When this application information was last updated
        /// </summary>
        public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
    }
}