/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceJoinResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for alliance join operations
 * Last Edit Notes: Individual file implementation for alliance join results
 */

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for alliance join operations
    /// </summary>
    public class AllianceJoinResponseDto
    {
        /// <summary>
        /// Player ID who attempted to join
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Alliance ID that was joined or applied to
        /// </summary>
        public int AllianceId { get; set; }

        /// <summary>
        /// Alliance name for reference
        /// </summary>
        public string AllianceName { get; set; } = string.Empty;

        /// <summary>
        /// Whether the join operation was successful
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// Current status of membership (Accepted, Pending, Rejected)
        /// </summary>
        public string MembershipStatus { get; set; } = string.Empty;

        /// <summary>
        /// Role assigned within the alliance
        /// </summary>
        public string? AssignedRole { get; set; }

        /// <summary>
        /// Alliance benefits immediately available to player
        /// </summary>
        public Dictionary<string, object> AllianceBenefits { get; set; } = new();

        /// <summary>
        /// Research bonuses now accessible
        /// </summary>
        public Dictionary<string, decimal> ResearchBonuses { get; set; } = new();

        /// <summary>
        /// Message from alliance leadership if applicable
        /// </summary>
        public string? WelcomeMessage { get; set; }

        /// <summary>
        /// When the join operation was processed
        /// </summary>
        public DateTime JoinTime { get; set; }

        /// <summary>
        /// Additional alliance integration data
        /// </summary>
        public Dictionary<string, object> IntegrationData { get; set; } = new();
    }
}