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

namespace ShadowedRealms.Shared.DTOs.Alliance
{
    /// <summary>
    /// Response DTO for alliance treasury operations and transactions
    /// </summary>
    public class TreasuryOperationResponseDto
    {
        /// <summary>
        /// Unique identifier for the treasury operation
        /// </summary>
        public int OperationId { get; set; }

        /// <summary>
        /// Alliance treasury involved
        /// </summary>
        public int AllianceId { get; set; }

        /// <summary>
        /// Type of operation (Deposit, Withdraw, Transfer, Allocation, Tax)
        /// </summary>
        public string OperationType { get; set; } = string.Empty;

        /// <summary>
        /// Player who initiated the operation
        /// </summary>
        public int InitiatedBy { get; set; }

        /// <summary>
        /// Name of the player who initiated operation
        /// </summary>
        public string InitiatedByName { get; set; } = string.Empty;

        /// <summary>
        /// Resources involved in the operation
        /// </summary>
        public Dictionary<string, decimal> ResourceAmounts { get; set; } = new();

        /// <summary>
        /// Treasury balances before operation
        /// </summary>
        public Dictionary<string, decimal> BalancesBefore { get; set; } = new();

        /// <summary>
        /// Treasury balances after operation
        /// </summary>
        public Dictionary<string, decimal> BalancesAfter { get; set; } = new();

        /// <summary>
        /// Purpose or reason for the operation
        /// </summary>
        public string OperationPurpose { get; set; } = string.Empty;

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

        /// <summary>
        /// Any errors or issues during operation
        /// </summary>
        public string? OperationErrors { get; set; }

        /// <summary>
        /// Officers who approved the operation
        /// </summary>
        public List<Dictionary<string, object>> ApprovalChain { get; set; } = new();

        /// <summary>
        /// Transaction fees or costs
        /// </summary>
        public Dictionary<string, decimal> TransactionCosts { get; set; } = new();

        /// <summary>
        /// Impact on alliance operations
        /// </summary>
        public Dictionary<string, object> OperationalImpact { get; set; } = new();

        /// <summary>
        /// When the operation was completed
        /// </summary>
        public DateTime OperationCompleted { get; set; } = DateTime.UtcNow;
    }
}