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

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Response DTO for march cancellation operations
    /// </summary>
    public class MarchCancellationResponseDto
    {
        /// <summary>
        /// March ID that was cancelled
        /// </summary>
        public int MarchId { get; set; }

        /// <summary>
        /// Player ID who cancelled the march
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Whether cancellation was successful
        /// </summary>
        public bool CancellationSuccess { get; set; }

        /// <summary>
        /// Reason for cancellation if unsuccessful
        /// </summary>
        public string? CancellationError { get; set; }

        /// <summary>
        /// Troops returned to player after cancellation
        /// </summary>
        public Dictionary<string, long> TroopsReturned { get; set; } = new();

        /// <summary>
        /// Resources refunded from cancellation
        /// </summary>
        public Dictionary<string, long> ResourcesRefunded { get; set; } = new();

        /// <summary>
        /// Resources lost due to cancellation penalties
        /// </summary>
        public Dictionary<string, long> ResourcesLost { get; set; } = new();

        /// <summary>
        /// Dragon status after march cancellation
        /// </summary>
        public Dictionary<string, object>? DragonStatus { get; set; }

        /// <summary>
        /// Percentage of march completed before cancellation
        /// </summary>
        public decimal MarchCompletionPercentage { get; set; }

        /// <summary>
        /// Time remaining until march would have completed
        /// </summary>
        public TimeSpan? TimeRemaining { get; set; }

        /// <summary>
        /// Grace period considerations for cancellation
        /// </summary>
        public Dictionary<string, object> GracePeriodInfo { get; set; } = new();

        /// <summary>
        /// When the march was cancelled
        /// </summary>
        public DateTime CancellationTime { get; set; }

        /// <summary>
        /// Additional cancellation metadata
        /// </summary>
        public Dictionary<string, object> CancellationMetadata { get; set; } = new();
    }
}